A comprehensive timetable scheduling system using advanced optimization algorithms including Genetic Algorithm (GA), NSGA-II, and Constraint Optimization techniques.
- Python 3.8+
- MongoDB
- Virtual Environment
# Clone the repository
git clone <repository-url>
cd Advance-Timetable-Scheduling-Backend
# Create and activate virtual environment
python -m venv venv
source venv/bin/activate # Linux/Mac
# or
venv\Scripts\activate # Windows
# Install dependencies
pip install -r requirements.txt
# Set up environment variables
cp .env.example .env
# Edit .env with your configuration# Start the FastAPI server
uvicorn app.main:app --reload
# The API will be available at:
# - Main API: http://localhost:8000
# - API Documentation: http://localhost:8000/docs
# - Alternative docs: http://localhost:8000/redocAdvance-Timetable-Scheduling-Backend/
βββ app/ # Main application code
β βββ algorithms_2/ # Optimization algorithms
β βββ models/ # Database models
β βββ routers/ # API route handlers
β βββ Services/ # Business logic services
β βββ utils/ # Utility functions
βββ scripts/ # Testing and utility scripts
β βββ testing/ # Organized testing scripts
β β βββ database/ # Database testing
β β βββ api/ # API testing
β β βββ data/ # Test data generation
β βββ utilities/ # System maintenance scripts
βββ docs/ # Comprehensive documentation
βββ logs/ # Application logs
βββ Data/ # Data files
βββ venv/ # Virtual environment
- Multiple Algorithms: Genetic Algorithm, NSGA-II, Constraint Optimization
- Constraint Handling: Hard and soft constraints
- Multi-objective Optimization: Balancing multiple criteria
- Real-time Generation: Dynamic timetable creation
- Availability Tracking: Faculty unavailability management
- Substitute Assignment: Automatic substitute teacher assignment
- Workload Balancing: Optimal distribution of teaching loads
- Request Workflow: Admin approval process for leave requests
- User Management: Role-based access control
- Data Management: CRUD operations for all entities
- Reporting: Comprehensive reports and analytics
- API Documentation: Auto-generated Swagger documentation
- System Architecture - Complete system overview
- API Documentation - Interactive API docs (when running)
- Scripts Guide - Testing and utility scripts
- Documentation Index - All documentation files
docs/DATABASE_AND_SYSTEM_DOCUMENTATION.md- Database structure and algorithmsdocs/FACULTY_AVAILABILITY_IMPLEMENTATION.md- Faculty management systemdocs/UI_UX_FIXES_SUMMARY.md- Recent improvements and fixesdocs/SCRIPT_ORGANIZATION_PLAN.md- Script organization and usage
# Test database connectivity
python scripts/testing/database/check_db.py
# Validate user data
python scripts/testing/database/check_users.py
# Check faculty assignments
python scripts/testing/database/check_teacher_faculty.py# Test all API endpoints
python scripts/testing/api/test_frontend_api.py
# Test faculty availability system
python scripts/testing/api/test_faculty_availability.py
# End-to-end system testing
python scripts/testing/api/test_consolidated_system.py# Generate test data for development
python scripts/testing/data/create_test_data.py- Ensure MongoDB is running
- Configure
.envfile with database connection - Activate virtual environment
- Install dependencies from
requirements.txt
Users- User management (faculty, admin, students)faculty_unavailability- Faculty availability requestssubjects- Course definitionsspaces- Room and facility managementdays- Academic day definitionsperiods- Time period definitions
/api/v1/faculty-availability/- Faculty availability management/api/v1/data/- Data management (CRUD operations)/api/v1/timetable/- Timetable generation and retrieval/api/v1/auth/- Authentication and authorization
- Population-based optimization
- Crossover and mutation operations
- Fitness evaluation based on constraints
- Multi-objective optimization
- Pareto front generation
- Non-dominated sorting
- Hard and soft constraint satisfaction
- Penalty-based scoring
- Backtracking algorithms
- β Fixed faculty assignment data issues
- β Improved UI/UX across all interfaces
- β Enhanced PDF export functionality
- β Consolidated faculty availability management
- β Organized testing and utility scripts
- 22 Faculty members properly assigned
- Multiple optimization algorithms integrated
- Comprehensive API coverage
- Role-based access control implemented
- Run database tests to ensure connectivity
- Run API tests to verify functionality
- Use test data generation for development
- Update documentation for any changes
- Follow existing code structure
- Add appropriate tests in
scripts/testing/ - Update documentation in
docs/ - Ensure API documentation is current
- Run database tests weekly
- Update test data monthly
- Review and update documentation quarterly
- Monitor system performance and logs
scripts/utilities/assign_faculty_departments.py- Faculty assignment utility- Various testing scripts for system validation
- Data generation scripts for development
- Database Connection: Check MongoDB service and connection string
- Import Errors: Ensure virtual environment is activated
- Permission Errors: Check file permissions and database access
- Check
docs/directory for detailed documentation - Review script output for specific error messages
- Consult API documentation at
/docsendpoint - Check logs in
logs/directory
This project is part of the Advanced Timetable Scheduling System research project.
- Frontend: Advance-Timetable-Scheduling-Frontend (React application)
- Algorithms: Specialized optimization algorithm implementations
- Documentation: Comprehensive system documentation in
docs/
For detailed information about any aspect of the system, please refer to the documentation in the docs/ directory or the organized scripts in the scripts/ directory.