A comprehensive, full-stack web application for managing school operations, student records, staff management, attendance tracking, grades, and administrative tasks. Built with TypeScript for type safety and reliability.
- Overview
- Features
- Tech Stack
- Project Structure
- Installation & Setup
- Configuration
- Running the Application
- API Documentation
- Database Schema
- Contributing
- License
School Management System is an enterprise-grade solution designed to streamline school operations and administrative processes. It provides a centralized platform for managing student information, staff records, attendance, grades, classes, and various school-related administrative tasks.
- Efficient Administration: Automate school administrative workflows
- Student Management: Maintain comprehensive student records and academic progress
- Attendance Tracking: Digital attendance management system
- Grade Management: Transparent grading and academic performance tracking
- Staff Management: Employee records and staff information management
- Report Generation: Automated reports for parents and administrators
- β Complete student profile management
- β Enrollment and registration system
- β Student academic history tracking
- β Guardian/Parent information management
- β Fee and payment records
- β Daily attendance marking
- β Real-time attendance reports
- β Attendance analytics and trends
- β Absence notifications
- β Bulk attendance operations
- β Grade and marks management
- β Class and section management
- β Subject assignment and management
- β Exam scheduling and result publication
- β Academic performance analytics
- β Report cards generation
- β Employee records and profiles
- β Salary and payroll management
- β Staff allocation and scheduling
- β Staff leave management
- β Performance tracking
- β User authentication and authorization (Role-based Access Control)
- β Dashboard with key metrics and analytics
- β Notification system
- β Multi-user support with different permission levels
- β Data export and reporting capabilities
- β System audit logs
- TypeScript (92.8%) - Primary language for type-safe development
- JavaScript (6.4%) - Complementary scripting
- React - UI library for interactive interfaces
- Redux/Context API - State management
- Axios - HTTP client for API communication
- Tailwind CSS / Material-UI - Styling and UI components
- Node.js - JavaScript runtime
- Express.js - Web application framework
- TypeScript - Type safety and better development experience
- REST API - API architecture pattern
- JWT - Authentication and authorization
- MySQL - Relational database for data persistence
- SQL - Database queries and operations
- npm/yarn - Package management
- ESLint - Code linting
- Prettier - Code formatting
- Git - Version control
School-Management-System/
βββ school_frontend/ # React frontend application
β βββ public/
β βββ src/
β β βββ components/ # Reusable React components
β β βββ pages/ # Page components
β β βββ services/ # API service calls
β β βββ store/ # State management
β β βββ styles/ # Global styles
β β βββ utils/ # Utility functions
β β βββ App.tsx
β β βββ index.tsx
β βββ package.json
β βββ tsconfig.json
β βββ .env.example
β
βββ school_backend/ # Express backend application
β βββ src/
β β βββ controllers/ # Request handlers
β β βββ models/ # Database models
β β βββ routes/ # API routes
β β βββ middleware/ # Custom middleware
β β βββ config/ # Configuration files
β β βββ utils/ # Utility functions
β β βββ validators/ # Input validation
β β βββ types/ # TypeScript type definitions
β β βββ index.ts # Application entry point
β βββ package.json
β βββ tsconfig.json
β βββ .env.example
β βββ .gitignore
β
βββ SQL Command.txt # Database initialization scripts
βββ .anima/ # Design and animation assets
βββ README.md # Project documentation
βββ .gitignore
- Node.js (v14.0.0 or higher)
- npm or yarn package manager
- MySQL (v5.7 or higher)
- Git version control
- Navigate to backend directory:
cd school_backend- Install dependencies:
npm install- Create environment configuration:
cp .env.example .env- Configure environment variables (update .env file):
PORT=5000
NODE_ENV=development
DB_HOST=localhost
DB_PORT=3306
DB_USER=your_mysql_username
DB_PASSWORD=your_mysql_password
DB_NAME=school_management_db
JWT_SECRET=your_jwt_secret_key
JWT_EXPIRE=7d- Initialize the database:
mysql -u [username] -p [database_name] < ../SQL Command.txt- Start the backend server:
npm start
# For development with auto-reload:
npm run devBackend will run on: http://localhost:5000
- Navigate to frontend directory:
cd school_frontend- Install dependencies:
npm install- Create environment configuration:
cp .env.example .env- Configure environment variables (update .env file):
REACT_APP_API_URL=http://localhost:5000/api
REACT_APP_ENV=development- Start the development server:
npm startFrontend will run on: http://localhost:3000
The database initialization script is provided in SQL Command.txt. This includes:
- User and authentication tables
- Student management tables
- Attendance tracking tables
- Grade and academic performance tables
- Staff and payroll tables
- Administrative tables
Update the JWT secret in your backend .env file:
JWT_SECRET=your_secure_secret_key_min_32_characters
JWT_EXPIRE=7d
Update backend CORS settings to allow frontend communication:
const corsOptions = {
origin: process.env.FRONTEND_URL || 'http://localhost:3000',
credentials: true,
};Terminal 1 - Backend:
cd school_backend
npm run devTerminal 2 - Frontend:
cd school_frontend
npm startBuild Frontend:
cd school_frontend
npm run buildRun Backend:
cd school_backend
NODE_ENV=production npm starthttp://localhost:5000/api
POST /auth/login- User loginPOST /auth/register- User registrationPOST /auth/logout- User logoutPOST /auth/refresh- Refresh JWT token
GET /students- Get all studentsGET /students/:id- Get student by IDPOST /students- Create new studentPUT /students/:id- Update studentDELETE /students/:id- Delete student
GET /attendance- Get attendance recordsPOST /attendance- Mark attendanceGET /attendance/:studentId- Get student attendancePUT /attendance/:id- Update attendance record
GET /grades- Get all gradesPOST /grades- Submit gradesGET /grades/:studentId- Get student gradesPUT /grades/:id- Update grade
GET /staff- Get all staff membersPOST /staff- Add new staff memberPUT /staff/:id- Update staff informationDELETE /staff/:id- Remove staff member
GET /classes- Get all classesPOST /classes- Create new classPUT /classes/:id- Update classDELETE /classes/:id- Delete class
Key tables in the database:
- users - User accounts and authentication
- students - Student information and profiles
- staff - Staff/Employee records
- classes - Class/Section information
- attendance - Attendance records
- grades - Student grades and marks
- subjects - Subject information
- fees - Student fee records
- leaves - Leave applications
Refer to SQL Command.txt for complete schema details.
Contributions are welcome! Please follow these guidelines:
- Fork the repository:
git clone https://github.com/Kshitij-Raj-01/School-Management-System.git
cd School-Management-System- Create a feature branch:
git checkout -b feature/your-feature-name- Make your changes:
- Follow the existing code style
- Maintain TypeScript type safety
- Write clear commit messages
- Commit your changes:
git commit -m "feat: Add your feature description"- Push to your fork:
git push origin feature/your-feature-name- Create a Pull Request with a clear description of your changes
- Use TypeScript for all new code
- Follow ESLint and Prettier configurations
- Add comments for complex logic
- Write meaningful commit messages
- Test your changes before submitting PR
This project is open source and available under the MIT License.
Kshitij Raj
- GitHub: @Kshitij-Raj-01
For issues, feature requests, or questions:
- Open an GitHub Issue
- Create a Discussion in the repository
- All passwords are hashed using bcrypt
- JWT tokens for secure authentication
- Input validation on all API endpoints
- SQL injection prevention with parameterized queries
- CORS enabled for secure cross-origin requests
- Regular security updates recommended
- Mobile application (React Native)
- Advanced analytics and reporting
- Integration with payment gateways
- Email notifications system
- SMS alerts for attendance
- Document management system
- Parent portal enhancements
- Multi-language support
Note: This is a comprehensive school management solution. For detailed implementation questions, refer to the code comments and commit history.