# bosdrew24/aicsched architecture

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

- Interactive diagram: https://gitdiagram.com/bosdrew24/aicsched
- Repository: https://github.com/bosdrew24/aicsched

## Overview

AICS Schedule is a mobile-oriented class scheduling app. Users view schedules, while administrators manage sections and rooms, check scheduling conflicts, publish announcements, and export schedules. The sampled script shows these responsibilities concentrated in one browser-side module, which reads and writes Supabase data; the service worker displays received push notifications. The README is empty, and source excerpts are partial, so links for unsampled features and integrations are limited to what the tree and excerpts support.

Main entry points: [`script.js`](https://github.com/bosdrew24/aicsched/blob/main/script.js) (App logic), [`index.html`](https://github.com/bosdrew24/aicsched/blob/main/index.html) (App interface), [`sw.js`](https://github.com/bosdrew24/aicsched/blob/main/sw.js) (Push handler)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_schedule["Schedules"]
  node_schedule_views["Schedule views<br/>[script.js]"]
  node_schedule_data["Schedule records<br/>[script.js]"]
  node_conflict_check["Conflict checks<br/>[script.js]"]
end

subgraph group_admin["Administration"]
  node_room_admin["Room management<br/>[script.js]"]
  node_room_picker["Room picker<br/>[script.js]"]
  node_section_editor["Section editor<br/>[script.js]"]
  node_schedule_export["Schedule export<br/>[script.js]"]
end

subgraph group_communications["Communications"]
  node_announcement_views["Announcements<br/>[script.js]"]
  node_notification_views["Notifications<br/>[script.js]"]
end

subgraph group_platform["App platform"]
  node_app_shell["App interface<br/>[index.html]"]
  node_app_logic["App logic<br/>[script.js]"]
  node_service_worker["Push handler<br/>[sw.js]"]
end

node_user(("Student / teacher"))
node_admin_user(("Administrator"))
node_supabase[("Supabase")]
node_browser_notifications["Browser notifications"]

node_user -->|"uses"| node_app_shell
node_admin_user -->|"uses"| node_app_shell
node_app_shell -->|"interacts with"| node_app_logic
node_app_logic -->|"dispatches"| node_schedule_views
node_app_logic -->|"dispatches"| node_section_editor
node_app_logic -->|"dispatches"| node_room_admin
node_app_logic -->|"dispatches"| node_announcement_views
node_app_logic -->|"dispatches"| node_notification_views
node_app_logic -->|"dispatches"| node_schedule_export
node_schedule_views -->|"reads schedules"| node_supabase
node_section_editor -->|"writes schedules"| node_supabase
node_section_editor -->|"checks conflicts"| node_conflict_check
node_section_editor -->|"uses picker"| node_room_picker
node_room_admin -->|"reads / writes rooms"| node_supabase
node_announcement_views -->|"reads / writes announcements"| node_supabase
node_notification_views -->|"reads / writes notifications"| node_supabase
node_service_worker -->|"shows notification"| node_browser_notifications

click node_app_shell "https://github.com/bosdrew24/aicsched/blob/main/index.html"
click node_app_logic "https://github.com/bosdrew24/aicsched/blob/main/script.js"
click node_schedule_views "https://github.com/bosdrew24/aicsched/blob/main/script.js"
click node_schedule_data "https://github.com/bosdrew24/aicsched/blob/main/script.js"
click node_conflict_check "https://github.com/bosdrew24/aicsched/blob/main/script.js"
click node_room_admin "https://github.com/bosdrew24/aicsched/blob/main/script.js"
click node_room_picker "https://github.com/bosdrew24/aicsched/blob/main/script.js"
click node_section_editor "https://github.com/bosdrew24/aicsched/blob/main/script.js"
click node_schedule_export "https://github.com/bosdrew24/aicsched/blob/main/script.js"
click node_announcement_views "https://github.com/bosdrew24/aicsched/blob/main/script.js"
click node_notification_views "https://github.com/bosdrew24/aicsched/blob/main/script.js"
click node_service_worker "https://github.com/bosdrew24/aicsched/blob/main/sw.js"

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_schedule_views,node_schedule_data,node_conflict_check,node_browser_notifications toneBlue
class node_room_admin,node_room_picker,node_section_editor,node_schedule_export,node_supabase toneAmber
class node_announcement_views,node_notification_views toneMint
class node_app_shell,node_app_logic,node_service_worker toneRose
class node_user,node_admin_user toneIndigo
```

## Components

### Schedules

- [Schedule views](https://github.com/bosdrew24/aicsched/blob/main/script.js): `script.js`
- [Schedule records](https://github.com/bosdrew24/aicsched/blob/main/script.js): `script.js`
- [Conflict checks](https://github.com/bosdrew24/aicsched/blob/main/script.js): `script.js`

### Administration

- [Room management](https://github.com/bosdrew24/aicsched/blob/main/script.js): `script.js`
- [Room picker](https://github.com/bosdrew24/aicsched/blob/main/script.js): `script.js`
- [Section editor](https://github.com/bosdrew24/aicsched/blob/main/script.js): `script.js`
- [Schedule export](https://github.com/bosdrew24/aicsched/blob/main/script.js): `script.js`

### Communications

- [Announcements](https://github.com/bosdrew24/aicsched/blob/main/script.js): `script.js`
- [Notifications](https://github.com/bosdrew24/aicsched/blob/main/script.js): `script.js`

### App platform

- [App interface](https://github.com/bosdrew24/aicsched/blob/main/index.html): `index.html`
- [App logic](https://github.com/bosdrew24/aicsched/blob/main/script.js): `script.js`
- [Push handler](https://github.com/bosdrew24/aicsched/blob/main/sw.js): `sw.js`

### Other components

- **Student / teacher**
- **Administrator**
- **Supabase**
- **Browser notifications**

## Connections

- Student / teacher → App interface: uses
- Administrator → App interface: uses
- App interface → App logic: interacts with
- App logic → Schedule views: dispatches
- App logic → Section editor: dispatches
- App logic → Room management: dispatches
- App logic → Announcements: dispatches
- App logic → Notifications: dispatches
- App logic → Schedule export: dispatches
- Schedule views → Supabase: reads schedules
- Section editor → Supabase: writes schedules
- Section editor → Conflict checks: checks conflicts
- Section editor → Room picker: uses picker
- Room management → Supabase: reads / writes rooms
- Announcements → Supabase: reads / writes announcements
- Notifications → Supabase: reads / writes notifications
- Push handler → Browser notifications: shows notification
