Skip to content

Apishaliny/University_Timetable_System

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

41 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

University_Timetable_System

AIML Project – University Timetable Management System

📁 Project Structure

University_Timetable_System/
├── backend/
│   ├── flask_api/          # Flask REST API
│   │   ├── api.py
│   │   ├── api_stable.py
│   │   ├── start_api.bat
│   │   ├── config.py
│   │   ├── timetable_optimizer.py
│   │   └── timetable_db_mysql.py
│   ├── django_app/         # Django Web Application
│   │   └── timetable_project/
│   ├── streamlit_app/      # Streamlit UI
│   │   ├── timetable_app.py
│   │   ├── app.py
│   │   ├── config.py
│   │   ├── timetable_optimizer.py
│   │   └── timetable_db_mysql.py
│   ├── database/           # Database modules
│   │   ├── timetable_db_mysql.py
│   │   ├── timetable_db.py
│   │   ├── database.py
│   │   └── timetable.db
│   ├── utils/              # Utility modules
│   │   ├── timetable_optimizer.py
│   │   └── optimizer.py
│   └── config.py           # Main configuration
├── frontend/               # React Frontend
│   ├── public/
│   ├── src/
│   │   ├── components/
│   │   ├── App.js
│   │   └── index.js
│   └── package.json
├── scripts/                # Setup & utility scripts
│   ├── test_api.py
│   ├── test_api_start.py
│   ├── test_db_connection.py
│   ├── check_users.py
│   ├── setup_mysql.py
│   ├── fix_database.py
│   ├── update_db_schema.py
│   ├── update_teachers_table.py
│   └── create_tables.sql
├── docs/                   # Documentation
│   └── SECURITY_FIXES.md
├── .env.example
├── .gitignore
├── requirements.txt
├── package.json
├── main.py
└── README.md

🚀 Quick Start

Backend Setup

  1. Install Python dependencies:

    pip install -r requirements.txt
  2. Configure environment variables:

    copy .env.example .env
    # Edit .env with your database credentials
  3. Run Flask API:

    cd backend/flask_api
    python api.py
  4. Run Streamlit App:

    cd backend/streamlit_app
    streamlit run timetable_app.py
  5. Run Django App:

    cd backend/django_app/timetable_project
    python manage.py runserver

Frontend Setup

  1. Install Node dependencies:

    cd frontend
    npm install
  2. Start React app:

    npm start

🔧 Database Setup

cd scripts
python setup_mysql.py
python test_db_connection.py

📚 Features

  • Multi-framework Backend: Flask API, Django Web App, Streamlit UI
  • React Frontend: Modern, responsive UI with admin/student/lecturer dashboards
  • AI-Powered Optimization: Google OR-Tools for constraint-based timetable generation
  • Strict Capacity Validation: Ensures rooms are only assigned when capacity >= student count
  • Role-Based Teaching Assignments: Automatic assignment based on faculty roles
    • Lecturers/Assistant Lecturers/Senior Lecturers/Visiting Lecturers → Lectures & Tutorials
    • Instructors → Lab/Practical sessions only
  • Multi-Session Support: Courses can have lecture + tutorial + lab sessions per week
  • Database Support: MySQL (primary) and SQLite (fallback)
  • User Authentication: Role-based access control
  • RESTful API: Complete CRUD operations for courses, teachers, rooms, and schedules

🔐 Security

See docs/SECURITY_FIXES.md for security improvements and best practices.

🎯 Role-Based Teaching Assignments

The system automatically enforces teaching responsibilities based on faculty roles:

  • Academic Staff (Lecturer, Assistant Lecturer, Senior Lecturer, Visiting Lecturer)

    • Authorized for: Lectures and Tutorials
    • Not allowed: Lab/Practical sessions
  • Technical Staff (Instructor)

    • Authorized for: Lab/Practical sessions only
    • Not allowed: Lectures and Tutorials

For detailed information, see:

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors