# syedsuhaibhasan/class-scheduler architecture

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

- Interactive diagram: https://gitdiagram.com/syedsuhaibhasan/class-scheduler
- Repository: https://github.com/syedsuhaibhasan/class-scheduler

## Overview

Class Scheduler is a Swing desktop application for administrators, faculty, and students to manage academic schedules and communication. The documented user flow is role-based sign-in into a role-specific dashboard, then registration, timetable access/management, or notifications and polls. The tree and README establish these product areas, while sampled code confirms login dispatch, direct registration database access, timetable display, and notification persistence. Several feature modules were not sampled, so their internal wiring is shown only where supported; documented-but-unsampled capabilities remain represented without speculative call edges.

Main entry points: [`forms/Login.java`](https://github.com/syedsuhaibhasan/class-scheduler/blob/main/forms/Login.java) (Role login), [`dao/connectionprovider.java`](https://github.com/syedsuhaibhasan/class-scheduler/blob/main/dao/connectionprovider.java) (Connection provider), [`forms/AdminWindow.java`](https://github.com/syedsuhaibhasan/class-scheduler/blob/main/forms/AdminWindow.java) (Admin dashboard), [`forms/StudentDashboard.java`](https://github.com/syedsuhaibhasan/class-scheduler/blob/main/forms/StudentDashboard.java) (Student dashboard)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_access["Access and Accounts"]
  node_login["Role login<br/>[Login.java]"]
  node_admin["Admin dashboard<br/>[AdminWindow.java]"]
  node_faculty["Faculty dashboard"]
  node_student["Student dashboard"]
  node_facultyreg["Faculty registration"]
  node_studentreg["Student registration"]
  node_utility["UI utilities<br/>[BDutility.java]"]
end

subgraph group_scheduling["Schedule Management"]
  node_timetable["Timetable view<br/>[Timetable.java]"]
  node_timetableedit["Timetable editing"]
  node_timetabledialog["Timetable dialog"]
end

subgraph group_communication["Communication"]
  node_poll["Polls and feedback<br/>[PollDialog.java]"]
  node_notifsend["Notification sending"]
  node_notifview["Notification viewing"]
end

subgraph group_persistence["Persistence"]
  node_conn["Connection provider"]
  node_mysql[("MySQL database")]
end

node_user(("Institution user"))

node_user -->|"signs in"| node_login
node_login -->|"queries credentials"| node_conn
node_login -->|"opens admin"| node_admin
node_login -->|"opens faculty"| node_faculty
node_login -->|"opens student"| node_student
node_login -->|"opens forms"| node_utility
node_facultyreg -->|"checks and saves"| node_conn
node_studentreg -->|"checks and saves"| node_conn
node_student -->|"selects section"| node_timetable
node_admin -->|"manages schedules"| node_timetableedit
node_admin -->|"manages schedules"| node_timetabledialog
node_admin -->|"sends notification"| node_notifsend
node_notifview -->|"reads notifications"| node_conn
node_notifsend -->|"writes notification"| node_conn
node_faculty -.->|"participates"| node_poll
node_student -.->|"gives feedback"| node_poll
node_conn -->|"connects and queries"| node_mysql

click node_login "https://github.com/syedsuhaibhasan/class-scheduler/blob/main/forms/Login.java"
click node_admin "https://github.com/syedsuhaibhasan/class-scheduler/blob/main/forms/AdminWindow.java"
click node_faculty "https://github.com/syedsuhaibhasan/class-scheduler/blob/main/forms/FacultyDashboard.java"
click node_student "https://github.com/syedsuhaibhasan/class-scheduler/blob/main/forms/StudentDashboard.java"
click node_facultyreg "https://github.com/syedsuhaibhasan/class-scheduler/blob/main/forms/FacultyRegistration.java"
click node_studentreg "https://github.com/syedsuhaibhasan/class-scheduler/blob/main/forms/StudentRegistration.java"
click node_timetable "https://github.com/syedsuhaibhasan/class-scheduler/blob/main/forms/Timetable.java"
click node_timetableedit "https://github.com/syedsuhaibhasan/class-scheduler/blob/main/forms/TimetableFrameEdit.java"
click node_timetabledialog "https://github.com/syedsuhaibhasan/class-scheduler/blob/main/forms/TimetableDialog.java"
click node_poll "https://github.com/syedsuhaibhasan/class-scheduler/blob/main/forms/PollDialog.java"
click node_notifsend "https://github.com/syedsuhaibhasan/class-scheduler/blob/main/dao/NotificationSender.java"
click node_notifview "https://github.com/syedsuhaibhasan/class-scheduler/blob/main/dao/NotificationViewer.java"
click node_conn "https://github.com/syedsuhaibhasan/class-scheduler/blob/main/dao/connectionprovider.java"
click node_utility "https://github.com/syedsuhaibhasan/class-scheduler/blob/main/utility/BDutility.java"

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_login,node_admin,node_faculty,node_student,node_facultyreg,node_studentreg,node_utility,node_user toneBlue
class node_timetable,node_timetableedit,node_timetabledialog toneAmber
class node_poll,node_notifsend,node_notifview toneMint
class node_conn,node_mysql toneRose
```

## Components

### Access and Accounts

- [Role login](https://github.com/syedsuhaibhasan/class-scheduler/blob/main/forms/Login.java): `forms/Login.java`
- [Admin dashboard](https://github.com/syedsuhaibhasan/class-scheduler/blob/main/forms/AdminWindow.java): `forms/AdminWindow.java`
- [Faculty dashboard](https://github.com/syedsuhaibhasan/class-scheduler/blob/main/forms/FacultyDashboard.java): `forms/FacultyDashboard.java`
- [Student dashboard](https://github.com/syedsuhaibhasan/class-scheduler/blob/main/forms/StudentDashboard.java): `forms/StudentDashboard.java`
- [Faculty registration](https://github.com/syedsuhaibhasan/class-scheduler/blob/main/forms/FacultyRegistration.java): `forms/FacultyRegistration.java`
- [Student registration](https://github.com/syedsuhaibhasan/class-scheduler/blob/main/forms/StudentRegistration.java): `forms/StudentRegistration.java`
- [UI utilities](https://github.com/syedsuhaibhasan/class-scheduler/blob/main/utility/BDutility.java): `utility/BDutility.java`

### Schedule Management

- [Timetable view](https://github.com/syedsuhaibhasan/class-scheduler/blob/main/forms/Timetable.java): `forms/Timetable.java`
- [Timetable editing](https://github.com/syedsuhaibhasan/class-scheduler/blob/main/forms/TimetableFrameEdit.java): `forms/TimetableFrameEdit.java`
- [Timetable dialog](https://github.com/syedsuhaibhasan/class-scheduler/blob/main/forms/TimetableDialog.java): `forms/TimetableDialog.java`

### Communication

- [Polls and feedback](https://github.com/syedsuhaibhasan/class-scheduler/blob/main/forms/PollDialog.java): `forms/PollDialog.java`
- [Notification sending](https://github.com/syedsuhaibhasan/class-scheduler/blob/main/dao/NotificationSender.java): `dao/NotificationSender.java`
- [Notification viewing](https://github.com/syedsuhaibhasan/class-scheduler/blob/main/dao/NotificationViewer.java): `dao/NotificationViewer.java`

### Persistence

- [Connection provider](https://github.com/syedsuhaibhasan/class-scheduler/blob/main/dao/connectionprovider.java): `dao/connectionprovider.java`
- **MySQL database**

### Other components

- **Institution user**

## Connections

- Institution user → Role login: signs in
- Role login → Connection provider: queries credentials
- Role login → Admin dashboard: opens admin
- Role login → Faculty dashboard: opens faculty
- Role login → Student dashboard: opens student
- Role login → UI utilities: opens forms
- Faculty registration → Connection provider: checks and saves
- Student registration → Connection provider: checks and saves
- Student dashboard → Timetable view: selects section
- Admin dashboard → Timetable editing: manages schedules
- Admin dashboard → Timetable dialog: manages schedules
- Admin dashboard → Notification sending: sends notification
- Notification viewing → Connection provider: reads notifications
- Notification sending → Connection provider: writes notification
- Faculty dashboard → Polls and feedback: participates
- Student dashboard → Polls and feedback: gives feedback
- Connection provider → MySQL database: connects and queries
