# SchedulAi
**SchedulAi** is a hybrid algorithmic and AI-powered web application for academic timetabling and resource allocation. Designed to alleviate the administrative burden on university registries, it automatically generates conflict-free semester schedules that satisfy both hard constraints (e.g., no room or lecturer overlaps) and soft constraints (e.g., preferred teaching times).
## π Features
- AI-powered timetable generation using Greedy and Genetic Algorithms
- Real-time schedule editing with drag-and-drop functionality
- Conflict detection and resolution with suggestions
- Dynamic analytics dashboard (room utilization, lecturer workload, anomaly detection)
- Export to Excel/CSV for integration with platforms like MyCamu
- Multi-role access: Registry, Department Heads, Lecturers
## π Architecture
SchedulAi follows a **microservices architecture**:
- **Frontend**: Flask + Jinja2 + Bootstrap + Chart.js
- **Backend**: Flask + Flask-SocketIO
- **Database**: MySQL
- **Scheduler Engine**: Greedy Heuristic & Genetic Algorithm via PyGAD
- **Deployment**: Dockerized on AWS EC2 (
github.com)
## π¦ Installation
* 1. Clone the repo:
```bash
git clone
github.com
cd schedulai
* 2. Set up virtual environment:
```bash
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
```
* 3. Configure `.env` with DB credentials and Flask settings.
* 4. Initialize MySQL database using provided schema in `/db`.
* 5. Run the app:
```bash
flask run
```
## π Usage
* Access the dashboard at `
http`
* Navigate through data input β scheduling β validation β analytics
* Use the drag-and-drop matrix to manually adjust sessions
* Export the final timetable to CSV
## π§ Algorithms
* **Greedy Heuristic**: Prioritizes high-enrollment sessions and large rooms
* **Genetic Algorithm**: Evolves candidate timetables using crossover/mutation
* **Conflict Checker**: Detects over β¦