A comprehensive timetable management system designed specifically for All Saints Convent School, featuring automated timetable generation with constraint satisfaction algorithms.
- Automated Timetable Generation: Intelligent scheduling with constraint satisfaction
- School-Specific Configuration: Tailored for All Saints Convent School's 6-day, 9-period structure
- Complete CRUD Operations: Manage teachers, subjects, classes, and resources
- Constraint Management: Teacher workload limits, resource conflicts, and scheduling rules
- Real-time Validation: Instant feedback on scheduling conflicts and violations
- Responsive Design: Works seamlessly on desktop, tablet, and mobile devices
- Node.js (v16.0.0 or higher)
- npm (v8.0.0 or higher)
- MongoDB (local installation or MongoDB Atlas)
-
Clone the repository
git clone https://github.com/your-username/school-timetable-app.git cd school-timetable-app -
Install all dependencies
npm run install:all
-
Set up environment variables
Backend (.env):
cd backend cp .env.example .env # Edit .env with your MongoDB connection string
-
Start the application
# Start both frontend and backend npm run dev # Or start individually npm run dev:frontend # Frontend only (http://localhost:3000) npm run dev:backend # Backend only (http://localhost:5000)
npm run dev- Start both frontend and backend in development modenpm run dev:frontend- Start only the frontend development servernpm run dev:backend- Start only the backend development server
npm run build- Build both frontend and backend for productionnpm run start- Start the production applicationnpm run start:frontend- Start only the frontend production servernpm run start:backend- Start only the backend production server
npm run install:all- Install dependencies for all packagesnpm run clean- Remove all build files and node_modulesnpm run test- Run tests for both frontend and backendnpm run lint- Run linting for both frontend and backend
school-timetable-app/
├── frontend/ # React frontend application
│ ├── src/
│ │ ├── components/ # React components
│ │ ├── config/ # School configuration
│ │ ├── hooks/ # Custom React hooks
│ │ ├── services/ # API and business logic
│ │ ├── styles/ # CSS and styling
│ │ └── utils/ # Utility functions
│ └── package.json
├── backend/ # Node.js backend API
│ ├── src/
│ │ ├── controllers/ # API controllers
│ │ ├── models/ # Database models
│ │ ├── routes/ # API routes
│ │ └── services/ # Business logic
│ └── package.json
├── scripts/ # Utility scripts
└── package.json # Root package configuration
The system is pre-configured for All Saints Convent School with:
- 6 working days (Monday to Saturday)
- 9 periods per day with Period 5 as recess
- Teacher constraints: Max 6 periods/day, 3 consecutive periods
- 35 teachers with complete subject assignments
- 24 classes (I-A through XII-B)
- 47 subjects categorized by school level
- Special resources: Biology Lab, Chemistry Lab, Physics Lab, Computer Labs
- Install MongoDB locally
- Start MongoDB service
- Update backend/.env with:
MONGODB_URI=mongodb://localhost:27017/school-timetable
- Create a MongoDB Atlas account
- Create a new cluster
- Get connection string
- Update backend/.env with your Atlas connection string
- Access the application at
http://localhost:3000 - Import school data using the provided school-metadata.json
- Configure settings in the School Configuration panel
- Manage data through the Teachers, Subjects, Classes, and Resources pages
- Generate timetables with the automated scheduling system
- Constraint satisfaction algorithm
- Automatic conflict resolution
- Teacher workload balancing
- Resource allocation optimization
- Complete CRUD operations for all entities
- Real-time validation and error handling
- Bulk import from JSON metadata
- Export capabilities for generated timetables
- 6-day working week support
- Period 5 recess configuration
- Lab resource scheduling
- Teacher consecutive period limits
-
Port already in use
# Kill processes on ports 3000 and 5000 npx kill-port 3000 5000 -
MongoDB connection issues
- Ensure MongoDB is running locally or Atlas connection string is correct
- Check firewall settings for MongoDB Atlas
-
Build failures
# Clean and reinstall npm run clean npm run install:all
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
For support and questions:
- Create an issue on GitHub
- Contact the development team
- Check the documentation in the
/docsfolder
- All Saints Convent School for providing the requirements and testing
- React and Node.js communities for excellent documentation
- Contributors who helped improve the system