# gaurikh09/time-table-scheduler architecture

> Architecture diagram of the GitHub repository gaurikh09/time-table-scheduler, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-11). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/gaurikh09/time-table-scheduler
- Repository: https://github.com/gaurikh09/time-table-scheduler

## Overview

University Timetable Scheduler is a Django application for configuring academic resources and generating, preserving, and viewing class schedules. Admins and coordinators set up infrastructure and academic data; class advisors can manage their assigned batch, while students have read-only timetable access. For generation, a coordinator or advisor submits a batch request, and the application uses the OR-Tools solver to produce entries or report constraints-related failures. The README documents combined classes, CSV imports, student management, and saved schedules. Source excerpts are partial, so several documented feature links are shown at the README level.

Main entry points: [`core/views.py`](https://github.com/gaurikh09/time-table-scheduler/blob/main/core/views.py) (Generation Workflow), [`core/forms.py`](https://github.com/gaurikh09/time-table-scheduler/blob/main/core/forms.py) (Management Forms), [`scheduler_project/urls.py`](https://github.com/gaurikh09/time-table-scheduler/blob/main/scheduler_project/urls.py) (Django Authentication), [`core/models.py`](https://github.com/gaurikh09/time-table-scheduler/blob/main/core/models.py) (Academic Records)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_access["Access and Roles"]
  node_django_auth["Django Authentication<br/>[urls.py]"]
  node_role_access["Role Permissions<br/>[views.py]"]
end

subgraph group_setup["Academic Setup"]
  node_infrastructure["Rooms and Shifts<br/>[models.py]"]
  node_academic_data[("Academic Records<br/>[models.py]")]
  node_management_ui["Management Forms<br/>[forms.py]"]
  node_csv_imports["CSV Imports<br/>[views.py]"]
end

subgraph group_schedule["Scheduling"]
  node_combined_classes[("Combined Classes<br/>[models.py]")]
  node_generation["Generation Workflow<br/>[views.py]"]
  node_solver["CP-SAT Solver<br/>[solver.py]"]
  node_diagnostics["Failure Diagnostics<br/>[solver.py]"]
  node_timetable_store[("Timetable Entries<br/>[models.py]")]
  node_snapshots[("Saved Timetables<br/>[models.py]")]
end

subgraph group_delivery["Timetable Access"]
  node_timetable_views["Timetable Views<br/>[views.py]"]
  node_student_portal["Student Portal<br/>[views.py]"]
  node_web_ui["Django Templates"]
end

node_staff(("Admin / Coordinator"))
node_advisor(("Class Advisor"))
node_student_actor(("Student"))

node_staff -->|"signs in"| node_django_auth
node_advisor -->|"signs in"| node_django_auth
node_student_actor -->|"signs in"| node_django_auth
node_django_auth -->|"routes requests"| node_role_access
node_role_access -->|"renders pages"| node_web_ui
node_staff -->|"submits setup"| node_management_ui
node_advisor -->|"manages batch"| node_management_ui
node_management_ui -->|"validates records"| node_academic_data
node_management_ui -->|"validates resources"| node_infrastructure
node_staff -->|"uploads CSVs"| node_csv_imports
node_advisor -->|"uploads CSVs"| node_csv_imports
node_csv_imports -->|"imports records"| node_academic_data
node_staff -->|"configures slots"| node_combined_classes
node_advisor -->|"configures slots"| node_combined_classes
node_staff -->|"requests schedule"| node_generation
node_advisor -->|"requests schedule"| node_generation
node_generation -->|"invokes solver"| node_solver
node_generation -->|"loads inputs"| node_academic_data
node_generation -->|"loads rooms"| node_infrastructure
node_generation -->|"loads fixed slots"| node_combined_classes
node_solver -->|"reports failures"| node_diagnostics
node_generation -->|"writes schedule"| node_timetable_store
node_generation -->|"snapshots prior schedule"| node_snapshots
node_staff -->|"views schedule"| node_timetable_views
node_advisor -->|"views batch schedule"| node_timetable_views
node_timetable_views -->|"reads entries"| node_timetable_store
node_student_actor -->|"opens timetable"| node_student_portal
node_student_portal -->|"reads batch schedule"| node_timetable_store
node_timetable_views -->|"renders timetable"| node_web_ui
node_student_portal -->|"renders timetable"| node_web_ui
node_staff -->|"reviews history"| node_snapshots

click node_django_auth "https://github.com/gaurikh09/time-table-scheduler/blob/main/scheduler_project/urls.py"
click node_role_access "https://github.com/gaurikh09/time-table-scheduler/blob/main/core/views.py"
click node_infrastructure "https://github.com/gaurikh09/time-table-scheduler/blob/main/core/models.py"
click node_academic_data "https://github.com/gaurikh09/time-table-scheduler/blob/main/core/models.py"
click node_management_ui "https://github.com/gaurikh09/time-table-scheduler/blob/main/core/forms.py"
click node_csv_imports "https://github.com/gaurikh09/time-table-scheduler/blob/main/core/views.py"
click node_combined_classes "https://github.com/gaurikh09/time-table-scheduler/blob/main/core/models.py"
click node_generation "https://github.com/gaurikh09/time-table-scheduler/blob/main/core/views.py"
click node_solver "https://github.com/gaurikh09/time-table-scheduler/blob/main/scheduler_engine/solver.py"
click node_diagnostics "https://github.com/gaurikh09/time-table-scheduler/blob/main/scheduler_engine/solver.py"
click node_timetable_store "https://github.com/gaurikh09/time-table-scheduler/blob/main/core/models.py"
click node_snapshots "https://github.com/gaurikh09/time-table-scheduler/blob/main/core/models.py"
click node_timetable_views "https://github.com/gaurikh09/time-table-scheduler/blob/main/core/views.py"
click node_student_portal "https://github.com/gaurikh09/time-table-scheduler/blob/main/core/views.py"
click node_web_ui "https://github.com/gaurikh09/time-table-scheduler/tree/main/templates"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_django_auth,node_role_access toneBlue
class node_infrastructure,node_academic_data,node_management_ui,node_csv_imports toneAmber
class node_combined_classes,node_generation,node_solver,node_diagnostics,node_timetable_store,node_snapshots toneMint
class node_timetable_views,node_student_portal,node_web_ui toneRose
class node_staff,node_advisor,node_student_actor toneIndigo
```

## Components

### Access and Roles

- [Django Authentication](https://github.com/gaurikh09/time-table-scheduler/blob/main/scheduler_project/urls.py): `scheduler_project/urls.py`
- [Role Permissions](https://github.com/gaurikh09/time-table-scheduler/blob/main/core/views.py): `core/views.py`

### Academic Setup

- [Rooms and Shifts](https://github.com/gaurikh09/time-table-scheduler/blob/main/core/models.py): `core/models.py`
- [Academic Records](https://github.com/gaurikh09/time-table-scheduler/blob/main/core/models.py): `core/models.py`
- [Management Forms](https://github.com/gaurikh09/time-table-scheduler/blob/main/core/forms.py): `core/forms.py`
- [CSV Imports](https://github.com/gaurikh09/time-table-scheduler/blob/main/core/views.py): `core/views.py`

### Scheduling

- [Combined Classes](https://github.com/gaurikh09/time-table-scheduler/blob/main/core/models.py): `core/models.py`
- [Generation Workflow](https://github.com/gaurikh09/time-table-scheduler/blob/main/core/views.py): `core/views.py`
- [CP-SAT Solver](https://github.com/gaurikh09/time-table-scheduler/blob/main/scheduler_engine/solver.py): `scheduler_engine/solver.py`
- [Failure Diagnostics](https://github.com/gaurikh09/time-table-scheduler/blob/main/scheduler_engine/solver.py): `scheduler_engine/solver.py`
- [Timetable Entries](https://github.com/gaurikh09/time-table-scheduler/blob/main/core/models.py): `core/models.py`
- [Saved Timetables](https://github.com/gaurikh09/time-table-scheduler/blob/main/core/models.py): `core/models.py`

### Timetable Access

- [Timetable Views](https://github.com/gaurikh09/time-table-scheduler/blob/main/core/views.py): `core/views.py`
- [Student Portal](https://github.com/gaurikh09/time-table-scheduler/blob/main/core/views.py): `core/views.py`
- [Django Templates](https://github.com/gaurikh09/time-table-scheduler/tree/main/templates): `templates`

### Other components

- **Admin / Coordinator**
- **Class Advisor**
- **Student**

## Connections

- Admin / Coordinator → Django Authentication: signs in (evidence: `README.md`)
- Class Advisor → Django Authentication: signs in (evidence: `README.md`)
- Student → Django Authentication: signs in (evidence: `README.md`)
- Django Authentication → Role Permissions: routes requests (evidence: `scheduler_project/urls.py`)
- Role Permissions → Django Templates: renders pages (evidence: `README.md`)
- Admin / Coordinator → Management Forms: submits setup (evidence: `README.md`)
- Class Advisor → Management Forms: manages batch (evidence: `README.md`)
- Management Forms → Academic Records: validates records (evidence: `core/forms.py`)
- Management Forms → Rooms and Shifts: validates resources (evidence: `core/forms.py`)
- Admin / Coordinator → CSV Imports: uploads CSVs (evidence: `README.md`)
- Class Advisor → CSV Imports: uploads CSVs (evidence: `README.md`)
- CSV Imports → Academic Records: imports records (evidence: `README.md`)
- Admin / Coordinator → Combined Classes: configures slots (evidence: `README.md`)
- Class Advisor → Combined Classes: configures slots (evidence: `README.md`)
- Admin / Coordinator → Generation Workflow: requests schedule (evidence: `README.md`)
- Class Advisor → Generation Workflow: requests schedule (evidence: `README.md`)
- Generation Workflow → CP-SAT Solver: invokes solver (evidence: `core/views.py`)
- Generation Workflow → Academic Records: loads inputs (evidence: `core/views.py`)
- Generation Workflow → Rooms and Shifts: loads rooms (evidence: `README.md`)
- Generation Workflow → Combined Classes: loads fixed slots (evidence: `README.md`)
- CP-SAT Solver → Failure Diagnostics: reports failures (evidence: `scheduler_engine/solver.py`)
- Generation Workflow → Timetable Entries: writes schedule (evidence: `core/views.py`)
- Generation Workflow → Saved Timetables: snapshots prior schedule (evidence: `README.md`)
- Admin / Coordinator → Timetable Views: views schedule (evidence: `README.md`)
- Class Advisor → Timetable Views: views batch schedule (evidence: `README.md`)
- Timetable Views → Timetable Entries: reads entries (evidence: `README.md`)
- Student → Student Portal: opens timetable (evidence: `README.md`)
- Student Portal → Timetable Entries: reads batch schedule (evidence: `README.md`)
- Timetable Views → Django Templates: renders timetable (evidence: `README.md`)
- Student Portal → Django Templates: renders timetable (evidence: `README.md`)
- Admin / Coordinator → Saved Timetables: reviews history (evidence: `README.md`)
