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.