# b1tranger/b1t-acad architecture

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

- Interactive diagram: https://gitdiagram.com/b1tranger/b1t-acad
- Repository: https://github.com/b1tranger/b1t-acad

## Overview

1. **Repository type and deployment boundary**
   - This is a **static, client-side university resources portal** built with **vanilla HTML, CSS, and JavaScript**.
   - There is **no application backend** in the repo; all navigation, filtering, search, theming, and content presentation happen in the browser.
   - The site is intended for **Netlify hosting** and includes PWA assets (`manifest.json`, `sw.js`, `js/pwa.js`).

2. **Primary entry points and page structure**
   - The top-level HTML pages define the main information architecture: `index.html`, `Departments.html`, `References.html`, `FAQ/…`, `submission.html`, and multiple pages under `misc/`.
   - These pages act as **feature islands** rather than one monolithic app, with shared scripts and styles reused across them.
   - `md-viewer.html` suggests a lightweight markdown rendering page for documentation or content pages.

3. **Core content domains**
   - The site is organized around a few major student-resource sections:
     - **Course / QBank browser**
     - **Department + semester navigation**
     - **References / curated external resources**
     - **FAQ and notices**
     - **Student contribution/submission workflows**
   - The `misc/` folder contains broader content hubs such as `notice.html`, `student.html`, `tutorial.html`, `campus.html`, and `university_projects.html`.

4. **Resource discovery and search flow**
   - `js/search-courses.js` powers course lookup, likely by title, acronym, or course code as described in the README.
   - `js/qbank-browser.js` appears to be the main browsing layer for question-bank collections.
   - Results are not stored in a database; they likely resolve to **prebuilt links** or **static folder targets** in Google Drive / cloud storage.

5. **Department and semester subsystem**
   - `Departments.html` is supported by `js/departments.js` and `js/departments-data.js`.
   - The architecture here is data-driven: department metadata is kept in a JS data file, then filtered/rendered by client-side logic.
   - Semester selection is a dedicated concern, with `js/academic-calendar.js` and archived notes indicating URL query handling and semester selector behavior.
   - The system’s boundary is important: **department pages are assembled in-browser from static metadata**, not fetched from an API.

6. **Reference and external-link subsystem**
   - `References.html` and several `js/Links/drop-link-*.js` modules suggest a structured, menu-based catalog of outbound resources.
   - This section likely acts as a curated directory rather than hosted content.
   - External targets include drives, books, guides, and resource collections; the repo mostly provides **navigation and classification**, not the assets themselves.

7. **Contribution and submission flow**
   - `submission.html` and related docs under `agentic-note/doc_submission/` indicate a contribution path for notes/questions/resources.
   - `js/anon-share.js` suggests some kind of **anonymous sharing or submission integration**.
   - From an architecture standpoint, this is the main “ingress” boundary where user-generated content enters the ecosystem, likely through forms linked to external services rather than a custom server.

8. **Theming and UI shell**
   - `js/theme.js` plus global styles in `style.css` and section styles in `css/*.css` provide the visual system.
   - The site supports **dark mode by default** and a **gray/light mode**, so theme state is a cross-cutting browser concern.
   - Shared layout pieces like `css/top.navbar.css`, `css/menu.css`, and `css/preloader.css` indicate a reusable chrome across pages.

9. **PWA and offline-ish capabilities**
   - `manifest.json`, `sw.js`, and `js/pwa.js` show that the site is packaged as a **progressive web app**.
   - This means the architecture includes a lightweight offline/cache layer, but still centered on static delivery.
   - There is also an archived older PWA implementation under `archive-old-design-1/OLD FILES/PWA/`, showing the feature evolved over time.

10. **Content assets and media**
   - Static assets live under `images/` and `doc/`, including a PDF academic calendar and course-list imagery.
   - The repo relies on **prebuilt media** for presentation and documentation rather than runtime-generated assets.
   - This keeps the runtime simple: browser loads HTML/CSS/JS plus local images/docs.

11. **Legacy/archived design boundary**
   - `archive-old-design-1/` and `archive-old-design-2/` preserve previous site generations, scripts, and semester/course pages.
   - These folders are not the primary runtime surface; they are historical reference and backup architecture.
   - For a diagram, treat them as a **separate archive zone**, not part of the active request path.

12. **Documentation and operational notes**
   - `README.md`, `doc/DOCUMENTATION.md`, and the extensive `agentic-note/` directory provide project history, implementation plans, and change logs.
   - `agentic-note/` is clearly meta-documentation for maintainers, not end-user runtime content.
   - The documentation reinforces that this is a **student-maintained resource archive**, with evolving content organization rather than a service-oriented backend architecture.

Main entry points: [`index.html`](https://github.com/b1tranger/b1t-acad/blob/main/index.html) (Home), [`style.css`](https://github.com/b1tranger/b1t-acad/blob/main/style.css) (Shell), [`Departments.html`](https://github.com/b1tranger/b1t-acad/blob/main/Departments.html) (Departments), [`doc/DOCUMENTATION.md`](https://github.com/b1tranger/b1t-acad/blob/main/doc/DOCUMENTATION.md) (Docs)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_active["Active site"]
  node_index["Home<br/>entry page<br/>[index.html]"]
  node_departments_page["Departments<br/>section page<br/>[Departments.html]"]
  node_references_page["References<br/>section page<br/>[References.html]"]
  node_submission_page["Submission<br/>contribution page<br/>[submission.html]"]
end

subgraph group_systems["Core systems"]
  node_home_shell["Shell<br/>[style.css]"]
  node_theme["Theme<br/>ui state<br/>[theme.js]"]
  node_spa["SPA glue<br/>navigation layer<br/>[spa.js]"]
  node_qbank_browser["QBank browser<br/>browser logic<br/>[qbank-browser.js]"]
  node_search_courses["Course search<br/>search logic<br/>[search-courses.js]"]
  node_departments_js["Dept logic<br/>render logic<br/>[departments.js]"]
  node_departments_data["Dept data<br/>static data"]
  node_academic_calendar["Calendar<br/>semester helper"]
  node_references_links["Link menus<br/>link catalog<br/>[drop-link-01.js]"]
  node_anon_share["Anon share<br/>submission integration<br/>[anon-share.js]"]
  node_pwa["PWA<br/>offline layer<br/>[pwa.js]"]
end

subgraph group_content["Content hubs"]
  node_misc_hubs["Misc hubs<br/>content pages<br/>[notice.html]"]
  node_faq_page["FAQ<br/>help page"]
  node_md_viewer["MD viewer<br/>viewer page<br/>[md-viewer.html]"]
  node_assets[("Assets")]
end

subgraph group_archive["Archives"]
  node_archive1["Legacy v1<br/>archive site<br/>[old.index.html]"]
  node_archive2["Legacy v2<br/>archive site<br/>[S01.html]"]
end

subgraph group_meta["Docs"]
  node_docs["Docs<br/>documentation<br/>[DOCUMENTATION.md]"]
end

node_index -->|"uses"| node_home_shell
node_index -->|"themes"| node_theme
node_index -->|"navigates"| node_spa
node_index -->|"opens"| node_qbank_browser
node_index -->|"searches"| node_search_courses
node_departments_page -->|"renders"| node_departments_js
node_departments_page -->|"reads"| node_departments_data
node_departments_page -->|"filters"| node_academic_calendar
node_references_page -->|"menus"| node_references_links
node_submission_page -->|"submits"| node_anon_share
node_misc_hubs -->|"shares"| node_home_shell
node_faq_page -->|"shares"| node_home_shell
node_md_viewer -->|"shares"| node_home_shell
node_home_shell -->|"styled by"| node_theme
node_home_shell -->|"loads"| node_assets
node_qbank_browser -->|"uses"| node_search_courses
node_qbank_browser -->|"links to"| node_assets
node_departments_js -->|"consumes"| node_departments_data
node_references_links -->|"points to"| node_assets
node_pwa -->|"wraps"| node_index
node_pwa -->|"caches"| node_home_shell
node_archive1 -.->|"precedes"| node_archive2
node_docs -.->|"documents"| node_index
node_docs -.->|"documents"| node_departments_page
node_docs -.->|"documents"| node_submission_page

click node_index "https://github.com/b1tranger/b1t-acad/blob/main/index.html"
click node_departments_page "https://github.com/b1tranger/b1t-acad/blob/main/Departments.html"
click node_references_page "https://github.com/b1tranger/b1t-acad/blob/main/References.html"
click node_submission_page "https://github.com/b1tranger/b1t-acad/blob/main/submission.html"
click node_misc_hubs "https://github.com/b1tranger/b1t-acad/blob/main/misc/notice.html"
click node_faq_page "https://github.com/b1tranger/b1t-acad/blob/main/FAQ/uiuaiproctor_faq.md"
click node_md_viewer "https://github.com/b1tranger/b1t-acad/blob/main/md-viewer.html"
click node_home_shell "https://github.com/b1tranger/b1t-acad/blob/main/style.css"
click node_theme "https://github.com/b1tranger/b1t-acad/blob/main/js/theme.js"
click node_spa "https://github.com/b1tranger/b1t-acad/blob/main/js/spa.js"
click node_qbank_browser "https://github.com/b1tranger/b1t-acad/blob/main/js/qbank-browser.js"
click node_search_courses "https://github.com/b1tranger/b1t-acad/blob/main/js/search-courses.js"
click node_departments_js "https://github.com/b1tranger/b1t-acad/blob/main/js/departments.js"
click node_departments_data "https://github.com/b1tranger/b1t-acad/blob/main/js/departments-data.js"
click node_academic_calendar "https://github.com/b1tranger/b1t-acad/blob/main/js/academic-calendar.js"
click node_references_links "https://github.com/b1tranger/b1t-acad/blob/main/js/Links/drop-link-01.js"
click node_anon_share "https://github.com/b1tranger/b1t-acad/blob/main/js/anon-share.js"
click node_pwa "https://github.com/b1tranger/b1t-acad/blob/main/js/pwa.js"
click node_assets "https://github.com/b1tranger/b1t-acad/tree/main/images"
click node_archive1 "https://github.com/b1tranger/b1t-acad/blob/main/archive-old-design-1/old.index.html"
click node_archive2 "https://github.com/b1tranger/b1t-acad/blob/main/archive-old-design-2/D1/CSE/S01.html"
click node_docs "https://github.com/b1tranger/b1t-acad/blob/main/doc/DOCUMENTATION.md"

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_index,node_departments_page,node_references_page,node_submission_page toneBlue
class node_home_shell,node_theme,node_spa,node_qbank_browser,node_search_courses,node_departments_js,node_departments_data,node_academic_calendar,node_references_links,node_anon_share,node_pwa toneAmber
class node_misc_hubs,node_faq_page,node_md_viewer,node_assets toneMint
class node_archive1,node_archive2 toneRose
class node_docs toneIndigo
```

## Components

### Active site

Primary client-side portal surface and shared runtime

- [Home](https://github.com/b1tranger/b1t-acad/blob/main/index.html): entry page · Main landing page for the portal · `index.html`
- [Departments](https://github.com/b1tranger/b1t-acad/blob/main/Departments.html): section page · Department and semester navigation surface · `Departments.html`
- [References](https://github.com/b1tranger/b1t-acad/blob/main/References.html): section page · Curated outbound resource directory · `References.html`
- [Submission](https://github.com/b1tranger/b1t-acad/blob/main/submission.html): contribution page · User contribution and note submission entry point · `submission.html`

### Core systems

Browser-side behavior that powers browsing, navigation, theming, and PWA support

- [Shell](https://github.com/b1tranger/b1t-acad/blob/main/style.css): ui shell · Shared layout and page chrome across the portal · `style.css`
- [Theme](https://github.com/b1tranger/b1t-acad/blob/main/js/theme.js): ui state · Dark and light mode handling · `js/theme.js`
- [SPA glue](https://github.com/b1tranger/b1t-acad/blob/main/js/spa.js): navigation layer · Client-side page transition and routing support · `js/spa.js`
- [QBank browser](https://github.com/b1tranger/b1t-acad/blob/main/js/qbank-browser.js): browser logic · Main question-bank browsing and discovery layer · `js/qbank-browser.js`
- [Course search](https://github.com/b1tranger/b1t-acad/blob/main/js/search-courses.js): search logic · Course lookup by title, acronym, or code · `js/search-courses.js`
- [Dept logic](https://github.com/b1tranger/b1t-acad/blob/main/js/departments.js): render logic · Department page rendering and filtering · `js/departments.js`
- [Dept data](https://github.com/b1tranger/b1t-acad/blob/main/js/departments-data.js): static data · Department metadata and catalog content · `js/departments-data.js`
- [Calendar](https://github.com/b1tranger/b1t-acad/blob/main/js/academic-calendar.js): semester helper · Semester and academic-calendar handling · `js/academic-calendar.js`
- [Link menus](https://github.com/b1tranger/b1t-acad/blob/main/js/Links/drop-link-01.js): link catalog · Structured outbound resource menus for references · `js/Links/drop-link-01.js`
- [Anon share](https://github.com/b1tranger/b1t-acad/blob/main/js/anon-share.js): submission integration · Anonymous sharing or submission integration · `js/anon-share.js`
- [PWA](https://github.com/b1tranger/b1t-acad/blob/main/js/pwa.js): offline layer · Manifest, service worker, and PWA bootstrapping · `js/pwa.js`

### Content hubs

Static content sections and curated resource pages

- [Misc hubs](https://github.com/b1tranger/b1t-acad/blob/main/misc/notice.html): content pages · Miscellaneous static resource pages such as notices, student info, tutorials, and campus content · `misc/notice.html`
- [FAQ](https://github.com/b1tranger/b1t-acad/blob/main/FAQ/uiuaiproctor_faq.md): help page · FAQ content and support guidance · `FAQ/uiuaiproctor_faq.md`
- [MD viewer](https://github.com/b1tranger/b1t-acad/blob/main/md-viewer.html): viewer page · Lightweight markdown rendering surface · `md-viewer.html`
- [Assets](https://github.com/b1tranger/b1t-acad/tree/main/images): static assets · Images, docs, and downloadable media used by the site · `images`

### Archives

Previous site generations and preserved legacy modules

- [Legacy v1](https://github.com/b1tranger/b1t-acad/blob/main/archive-old-design-1/old.index.html): archive site · Archived earlier site generation and old runtime files · `archive-old-design-1/old.index.html`
- [Legacy v2](https://github.com/b1tranger/b1t-acad/blob/main/archive-old-design-2/D1/CSE/S01.html): archive site · Older semester-based archive and preserved page set · `archive-old-design-2/D1/CSE/S01.html`

### Docs

Documentation and maintainer notes

- [Docs](https://github.com/b1tranger/b1t-acad/blob/main/doc/DOCUMENTATION.md): documentation · Project documentation and maintainer notes · `doc/DOCUMENTATION.md`

## Connections

- Home → Shell: uses · Landing page shares the common UI shell
- Home → Theme: themes · Home page participates in global theme state
- Home → SPA glue: navigates · Client-side navigation behavior is shared across pages
- Home → QBank browser: opens · Home surface routes into QBank browsing
- Home → Course search: searches · Course discovery is driven by client-side search
- Departments → Dept logic: renders · Departments page is assembled by browser logic
- Departments → Dept data: reads · Department metadata is sourced from static data
- Departments → Calendar: filters · Semester selection and calendar behavior are coordinated here
- References → Link menus: menus · Reference page is backed by curated link catalogs
- Submission → Anon share: submits · Submission flow integrates anonymous sharing or external form handling
- Misc hubs → Shell: shares · Miscellaneous content pages reuse the shared shell
- FAQ → Shell: shares · FAQ content uses the shared site chrome
- MD viewer → Shell: shares · Markdown viewer uses the same presentation layer
- Shell → Theme: styled by · Global styles and theme state coordinate the shell
- Shell → Assets: loads · Shell and content pages consume local images and documents
- QBank browser → Course search: uses · Browser layer relies on course search for discovery
- QBank browser → Assets: links to · Browsing resolves to static course lists and media assets
- Dept logic → Dept data: consumes · Rendering logic is driven by static department metadata
- Link menus → Assets: points to · Curated menus resolve to external resources and local media references
- PWA → Home: wraps · PWA layer packages the active site as a browser app
- PWA → Shell: caches · Service worker and manifest support the shared experience
- Legacy v1 → Legacy v2: precedes · Archived generations show the site evolution
- Docs → Home: documents · Documentation explains the active portal structure and workflows
- Docs → Departments: documents · Docs capture department-navigation implementation notes
- Docs → Submission: documents · Docs cover contribution and submission workflows
