# mohammedsamisagheer-code/schedules architecture

> Architecture diagram of the GitHub repository mohammedsamisagheer-code/schedules, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-25). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/mohammedsamisagheer-code/schedules
- Repository: https://github.com/mohammedsamisagheer-code/schedules

## Overview

Class Schedule Portal supports public weekly and exam timetable viewing, plus authenticated administration and teacher access. The main workflow is administrators maintaining academic data, generating or editing weekly schedules under scheduling constraints, and publishing those schedules for students and teachers; exam scheduling is a separate domain stage. Role and permission checks govern restricted administration, while teachers can view their own timetable. Relationships reflect the README and sampled PHP pages; several admin modules and authentication details are represented at directory-level paths because their implementation was not sampled.

Main entry points: [`includes/class_schedule_20260614_1644.sql`](https://github.com/mohammedsamisagheer-code/schedules/blob/main/includes/class_schedule_20260614_1644.sql) (Schedule database), [`includes/auth_check.php`](https://github.com/mohammedsamisagheer-code/schedules/blob/main/includes/auth_check.php) (Session and roles), [`Admin/dashboard.php`](https://github.com/mohammedsamisagheer-code/schedules/blob/main/Admin/dashboard.php) (Admin dashboard), [`schedule.php`](https://github.com/mohammedsamisagheer-code/schedules/blob/main/schedule.php) (Weekly timetable)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_public["Public schedules"]
  node_landing["Landing page<br/>[index.php]"]
  node_weekly_view["Weekly timetable<br/>[schedule.php]"]
  node_exam_view["Exam timetable<br/>[exams.php]"]
  node_public_header["Public navigation<br/>[public_header.php]"]
end

subgraph group_identity["Identity and access"]
  node_login["User login<br/>[login.php]"]
  node_teacher_login["Teacher login<br/>[teacher_login.php]"]
  node_auth["Session and roles<br/>[auth_check.php]"]
  node_permissions["User permissions<br/>[config.php]"]
end

subgraph group_admin["Administration"]
  node_admin_dashboard["Admin dashboard<br/>[dashboard.php]"]
  node_account_admin["Account management<br/>[account.php]"]
  node_academic_data["Academic data CRUD"]
  node_access_admin["Permissions and settings"]
end

subgraph group_scheduling["Schedule operations"]
  node_weekly_admin["Weekly schedule<br/>[view_schedule.php]"]
  node_teacher_schedule["Personal timetable<br/>[my_schedule.php]"]
  node_exam_admin["Exam scheduling<br/>[exam_schedule.php]"]
  node_config["Database configuration<br/>[config.php]"]
end

node_students(("Students"))
node_teachers(("Teachers"))
node_administrators(("Administrators"))
node_schedule_store[("Schedule database")]

node_students -->|"open portal"| node_landing
node_landing -->|"open timetable"| node_weekly_view
node_weekly_view -->|"renders navigation"| node_public_header
node_exam_view -->|"renders navigation"| node_public_header
node_weekly_view -->|"reads schedules"| node_schedule_store
node_exam_view -->|"reads exams"| node_schedule_store
node_teachers -->|"sign in"| node_teacher_login
node_administrators -->|"sign in"| node_login
node_login -->|"establishes session"| node_auth
node_teacher_login -->|"establishes session"| node_auth
node_auth -->|"routes by role"| node_admin_dashboard
node_auth -->|"checks access"| node_teacher_schedule
node_auth -->|"checks grants"| node_permissions
node_admin_dashboard -->|"manages records"| node_academic_data
node_admin_dashboard -->|"manages access"| node_access_admin
node_admin_dashboard -->|"opens schedules"| node_weekly_admin
node_admin_dashboard -->|"opens exams"| node_exam_admin
node_academic_data -->|"reads and writes"| node_schedule_store
node_access_admin -->|"updates settings"| node_schedule_store
node_weekly_admin -->|"uses settings"| node_config
node_weekly_admin -->|"generates and edits"| node_schedule_store
node_teacher_schedule -->|"reads personal schedule"| node_schedule_store
node_exam_admin -->|"generates and edits exams"| node_schedule_store
node_account_admin -->|"checks account access"| node_auth
node_account_admin -->|"updates account"| node_schedule_store

click node_landing "https://github.com/mohammedsamisagheer-code/schedules/blob/main/index.php"
click node_weekly_view "https://github.com/mohammedsamisagheer-code/schedules/blob/main/schedule.php"
click node_exam_view "https://github.com/mohammedsamisagheer-code/schedules/blob/main/exams.php"
click node_public_header "https://github.com/mohammedsamisagheer-code/schedules/blob/main/includes/public_header.php"
click node_login "https://github.com/mohammedsamisagheer-code/schedules/blob/main/login.php"
click node_teacher_login "https://github.com/mohammedsamisagheer-code/schedules/blob/main/teacher_login.php"
click node_auth "https://github.com/mohammedsamisagheer-code/schedules/blob/main/includes/auth_check.php"
click node_permissions "https://github.com/mohammedsamisagheer-code/schedules/blob/main/includes/config.php"
click node_admin_dashboard "https://github.com/mohammedsamisagheer-code/schedules/blob/main/Admin/dashboard.php"
click node_account_admin "https://github.com/mohammedsamisagheer-code/schedules/blob/main/Admin/account.php"
click node_academic_data "https://github.com/mohammedsamisagheer-code/schedules/tree/main/Admin"
click node_access_admin "https://github.com/mohammedsamisagheer-code/schedules/tree/main/Admin"
click node_weekly_admin "https://github.com/mohammedsamisagheer-code/schedules/blob/main/Admin/view_schedule.php"
click node_teacher_schedule "https://github.com/mohammedsamisagheer-code/schedules/blob/main/Admin/my_schedule.php"
click node_exam_admin "https://github.com/mohammedsamisagheer-code/schedules/blob/main/Admin/exam_schedule.php"
click node_config "https://github.com/mohammedsamisagheer-code/schedules/blob/main/includes/config.php"
click node_schedule_store "https://github.com/mohammedsamisagheer-code/schedules/blob/main/includes/class_schedule_20260614_1644.sql"

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_landing,node_weekly_view,node_exam_view,node_public_header toneBlue
class node_login,node_teacher_login,node_auth,node_permissions,node_schedule_store toneAmber
class node_admin_dashboard,node_account_admin,node_academic_data,node_access_admin toneMint
class node_weekly_admin,node_teacher_schedule,node_exam_admin,node_config toneRose
class node_students,node_teachers,node_administrators toneIndigo
```

## Components

### Public schedules

- [Landing page](https://github.com/mohammedsamisagheer-code/schedules/blob/main/index.php): `index.php`
- [Weekly timetable](https://github.com/mohammedsamisagheer-code/schedules/blob/main/schedule.php): `schedule.php`
- [Exam timetable](https://github.com/mohammedsamisagheer-code/schedules/blob/main/exams.php): `exams.php`
- [Public navigation](https://github.com/mohammedsamisagheer-code/schedules/blob/main/includes/public_header.php): `includes/public_header.php`

### Identity and access

- [User login](https://github.com/mohammedsamisagheer-code/schedules/blob/main/login.php): `login.php`
- [Teacher login](https://github.com/mohammedsamisagheer-code/schedules/blob/main/teacher_login.php): `teacher_login.php`
- [Session and roles](https://github.com/mohammedsamisagheer-code/schedules/blob/main/includes/auth_check.php): `includes/auth_check.php`
- [User permissions](https://github.com/mohammedsamisagheer-code/schedules/blob/main/includes/config.php): `includes/config.php`

### Administration

- [Admin dashboard](https://github.com/mohammedsamisagheer-code/schedules/blob/main/Admin/dashboard.php): `Admin/dashboard.php`
- [Account management](https://github.com/mohammedsamisagheer-code/schedules/blob/main/Admin/account.php): `Admin/account.php`
- [Academic data CRUD](https://github.com/mohammedsamisagheer-code/schedules/tree/main/Admin): `Admin`
- [Permissions and settings](https://github.com/mohammedsamisagheer-code/schedules/tree/main/Admin): `Admin`

### Schedule operations

- [Weekly schedule](https://github.com/mohammedsamisagheer-code/schedules/blob/main/Admin/view_schedule.php): `Admin/view_schedule.php`
- [Personal timetable](https://github.com/mohammedsamisagheer-code/schedules/blob/main/Admin/my_schedule.php): `Admin/my_schedule.php`
- [Exam scheduling](https://github.com/mohammedsamisagheer-code/schedules/blob/main/Admin/exam_schedule.php): `Admin/exam_schedule.php`
- [Database configuration](https://github.com/mohammedsamisagheer-code/schedules/blob/main/includes/config.php): `includes/config.php`

### Other components

- **Students**
- **Teachers**
- **Administrators**
- [Schedule database](https://github.com/mohammedsamisagheer-code/schedules/blob/main/includes/class_schedule_20260614_1644.sql): `includes/class_schedule_20260614_1644.sql`

## Connections

- Students → Landing page: open portal
- Landing page → Weekly timetable: open timetable
- Weekly timetable → Public navigation: renders navigation
- Exam timetable → Public navigation: renders navigation
- Weekly timetable → Schedule database: reads schedules
- Exam timetable → Schedule database: reads exams
- Teachers → Teacher login: sign in
- Administrators → User login: sign in
- User login → Session and roles: establishes session
- Teacher login → Session and roles: establishes session
- Session and roles → Admin dashboard: routes by role
- Session and roles → Personal timetable: checks access
- Session and roles → User permissions: checks grants
- Admin dashboard → Academic data CRUD: manages records
- Admin dashboard → Permissions and settings: manages access
- Admin dashboard → Weekly schedule: opens schedules
- Admin dashboard → Exam scheduling: opens exams
- Academic data CRUD → Schedule database: reads and writes
- Permissions and settings → Schedule database: updates settings
- Weekly schedule → Database configuration: uses settings
- Weekly schedule → Schedule database: generates and edits
- Personal timetable → Schedule database: reads personal schedule
- Exam scheduling → Schedule database: generates and edits exams
- Account management → Session and roles: checks account access
- Account management → Schedule database: updates account
