# boyax18/ctu-g_workspace architecture

> Architecture diagram of the GitHub repository boyax18/ctu-g_workspace, 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/boyax18/ctu-g_workspace
- Repository: https://github.com/boyax18/ctu-g_workspace

## Overview

CTU-G Workspace presents an integrated school-systems portal. The visible workflow is a visitor opening the public landing page, browsing service information and sections, and using the navigation to reach sign-in or registration entry points. The landing page also advertises finance, clearance, class monitoring, and inventory services for authorized accounts. The tree includes Django accounts, clearance, finance, and notifications apps, but their implementation and wiring are not established by the available excerpts. The graph shows the evidenced frontend composition and keeps backend domains distinct; it does not infer API calls or backend processing.

Main entry points: [`frontend/src/layouts/PublicLayout.tsx`](https://github.com/boyax18/ctu-g_workspace/blob/main/frontend/src/layouts/PublicLayout.tsx) (Public layout), [`frontend/src/components/navigation/Navbar.tsx`](https://github.com/boyax18/ctu-g_workspace/blob/main/frontend/src/components/navigation/Navbar.tsx) (Navigation bar), [`frontend/src/App.tsx`](https://github.com/boyax18/ctu-g_workspace/blob/main/frontend/src/App.tsx) (App composition), [`frontend/src/features/home/pages/HomePage.tsx`](https://github.com/boyax18/ctu-g_workspace/blob/main/frontend/src/features/home/pages/HomePage.tsx) (Home page)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_public["Public portal"]
  node_app["App composition<br/>[App.tsx]"]
  node_home["Home page<br/>[HomePage.tsx]"]
  node_services["Service overview<br/>[ServiceCards.tsx]"]
  node_other_sections["Other home sections"]
end

subgraph group_interaction["Navigation and presentation"]
  node_public_layout["Public layout<br/>[PublicLayout.tsx]"]
  node_navbar["Navigation bar<br/>[Navbar.tsx]"]
  node_footer["Footer<br/>[Footer.tsx]"]
  node_section_paging["Section paging"]
  node_section_scroll["Section scrolling<br/>[scroll.ts]"]
  node_active_section["Active section"]
  node_scroll_header["Scroll header<br/>[useScrollHeader.ts]"]
  node_theme["Theme provider<br/>[ThemeProvider.tsx]"]
  node_reveal["Reveal animation<br/>[Reveal.tsx]"]
  node_in_view["Viewport observer<br/>[useInView.ts]"]
end

subgraph group_identity["Account entry"]
  node_auth_pages["Account pages"]
end

subgraph group_backend["Backend domains"]
  node_accounts["Accounts"]
  node_clearance["Clearance"]
  node_finance["Finance"]
  node_notifications["Notifications"]
  node_django_config["Django configuration<br/>[settings.py]"]
end

node_visitor(("Visitor"))

node_visitor -->|"opens portal"| node_app
node_app -->|"wraps page"| node_public_layout
node_app -->|"renders"| node_home
node_home -->|"renders"| node_services
node_home -->|"renders"| node_other_sections
node_public_layout -->|"renders"| node_navbar
node_public_layout -->|"renders"| node_footer
node_public_layout -->|"enables"| node_section_paging
node_public_layout -->|"wraps content"| node_theme
node_navbar -->|"tracks section"| node_active_section
node_navbar -->|"tracks scrolling"| node_scroll_header
node_navbar -->|"scrolls to section"| node_section_scroll
node_navbar -.->|"links registration"| node_auth_pages
node_section_paging -->|"scrolls to section"| node_section_scroll
node_services -->|"uses reveal"| node_reveal
node_reveal -->|"observes visibility"| node_in_view

click node_app "https://github.com/boyax18/ctu-g_workspace/blob/main/frontend/src/App.tsx"
click node_home "https://github.com/boyax18/ctu-g_workspace/blob/main/frontend/src/features/home/pages/HomePage.tsx"
click node_services "https://github.com/boyax18/ctu-g_workspace/blob/main/frontend/src/features/home/components/ServiceCards.tsx"
click node_other_sections "https://github.com/boyax18/ctu-g_workspace/tree/main/frontend/src/features/home/components"
click node_public_layout "https://github.com/boyax18/ctu-g_workspace/blob/main/frontend/src/layouts/PublicLayout.tsx"
click node_navbar "https://github.com/boyax18/ctu-g_workspace/blob/main/frontend/src/components/navigation/Navbar.tsx"
click node_footer "https://github.com/boyax18/ctu-g_workspace/blob/main/frontend/src/components/navigation/Footer.tsx"
click node_section_paging "https://github.com/boyax18/ctu-g_workspace/blob/main/frontend/src/hooks/useSectionPaging.ts"
click node_section_scroll "https://github.com/boyax18/ctu-g_workspace/blob/main/frontend/src/utils/scroll.ts"
click node_active_section "https://github.com/boyax18/ctu-g_workspace/blob/main/frontend/src/hooks/useActiveSection.ts"
click node_scroll_header "https://github.com/boyax18/ctu-g_workspace/blob/main/frontend/src/hooks/useScrollHeader.ts"
click node_theme "https://github.com/boyax18/ctu-g_workspace/blob/main/frontend/src/contexts/ThemeProvider.tsx"
click node_reveal "https://github.com/boyax18/ctu-g_workspace/blob/main/frontend/src/components/common/Reveal.tsx"
click node_in_view "https://github.com/boyax18/ctu-g_workspace/blob/main/frontend/src/hooks/useInView.ts"
click node_auth_pages "https://github.com/boyax18/ctu-g_workspace/tree/main/frontend/src/features/auth"
click node_accounts "https://github.com/boyax18/ctu-g_workspace/tree/main/backend/accounts"
click node_clearance "https://github.com/boyax18/ctu-g_workspace/tree/main/backend/clearance"
click node_finance "https://github.com/boyax18/ctu-g_workspace/tree/main/backend/finance"
click node_notifications "https://github.com/boyax18/ctu-g_workspace/tree/main/backend/notifications"
click node_django_config "https://github.com/boyax18/ctu-g_workspace/blob/main/backend/config/settings.py"

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_app,node_home,node_services,node_other_sections toneBlue
class node_public_layout,node_navbar,node_footer,node_section_paging,node_section_scroll,node_active_section,node_scroll_header,node_theme,node_reveal,node_in_view toneAmber
class node_auth_pages toneMint
class node_accounts,node_clearance,node_finance,node_notifications,node_django_config toneRose
class node_visitor toneIndigo
```

## Components

### Public portal

- [App composition](https://github.com/boyax18/ctu-g_workspace/blob/main/frontend/src/App.tsx): `frontend/src/App.tsx`
- [Home page](https://github.com/boyax18/ctu-g_workspace/blob/main/frontend/src/features/home/pages/HomePage.tsx): `frontend/src/features/home/pages/HomePage.tsx`
- [Service overview](https://github.com/boyax18/ctu-g_workspace/blob/main/frontend/src/features/home/components/ServiceCards.tsx): `frontend/src/features/home/components/ServiceCards.tsx`
- [Other home sections](https://github.com/boyax18/ctu-g_workspace/tree/main/frontend/src/features/home/components): `frontend/src/features/home/components`

### Navigation and presentation

- [Public layout](https://github.com/boyax18/ctu-g_workspace/blob/main/frontend/src/layouts/PublicLayout.tsx): `frontend/src/layouts/PublicLayout.tsx`
- [Navigation bar](https://github.com/boyax18/ctu-g_workspace/blob/main/frontend/src/components/navigation/Navbar.tsx): `frontend/src/components/navigation/Navbar.tsx`
- [Footer](https://github.com/boyax18/ctu-g_workspace/blob/main/frontend/src/components/navigation/Footer.tsx): `frontend/src/components/navigation/Footer.tsx`
- [Section paging](https://github.com/boyax18/ctu-g_workspace/blob/main/frontend/src/hooks/useSectionPaging.ts): `frontend/src/hooks/useSectionPaging.ts`
- [Section scrolling](https://github.com/boyax18/ctu-g_workspace/blob/main/frontend/src/utils/scroll.ts): `frontend/src/utils/scroll.ts`
- [Active section](https://github.com/boyax18/ctu-g_workspace/blob/main/frontend/src/hooks/useActiveSection.ts): `frontend/src/hooks/useActiveSection.ts`
- [Scroll header](https://github.com/boyax18/ctu-g_workspace/blob/main/frontend/src/hooks/useScrollHeader.ts): `frontend/src/hooks/useScrollHeader.ts`
- [Theme provider](https://github.com/boyax18/ctu-g_workspace/blob/main/frontend/src/contexts/ThemeProvider.tsx): `frontend/src/contexts/ThemeProvider.tsx`
- [Reveal animation](https://github.com/boyax18/ctu-g_workspace/blob/main/frontend/src/components/common/Reveal.tsx): `frontend/src/components/common/Reveal.tsx`
- [Viewport observer](https://github.com/boyax18/ctu-g_workspace/blob/main/frontend/src/hooks/useInView.ts): `frontend/src/hooks/useInView.ts`

### Account entry

- [Account pages](https://github.com/boyax18/ctu-g_workspace/tree/main/frontend/src/features/auth): `frontend/src/features/auth`

### Backend domains

- [Accounts](https://github.com/boyax18/ctu-g_workspace/tree/main/backend/accounts): `backend/accounts`
- [Clearance](https://github.com/boyax18/ctu-g_workspace/tree/main/backend/clearance): `backend/clearance`
- [Finance](https://github.com/boyax18/ctu-g_workspace/tree/main/backend/finance): `backend/finance`
- [Notifications](https://github.com/boyax18/ctu-g_workspace/tree/main/backend/notifications): `backend/notifications`
- [Django configuration](https://github.com/boyax18/ctu-g_workspace/blob/main/backend/config/settings.py): `backend/config/settings.py`

### Other components

- **Visitor**

## Connections

- Visitor → App composition: opens portal
- App composition → Public layout: wraps page (evidence: `frontend/src/App.tsx`)
- App composition → Home page: renders (evidence: `frontend/src/App.tsx`)
- Home page → Service overview: renders (evidence: `frontend/src/features/home/pages/HomePage.tsx`)
- Home page → Other home sections: renders (evidence: `frontend/src/features/home/pages/HomePage.tsx`)
- Public layout → Navigation bar: renders (evidence: `frontend/src/layouts/PublicLayout.tsx`)
- Public layout → Footer: renders (evidence: `frontend/src/layouts/PublicLayout.tsx`)
- Public layout → Section paging: enables (evidence: `frontend/src/layouts/PublicLayout.tsx`)
- Public layout → Theme provider: wraps content (evidence: `frontend/src/layouts/PublicLayout.tsx`)
- Navigation bar → Active section: tracks section (evidence: `frontend/src/components/navigation/Navbar.tsx`)
- Navigation bar → Scroll header: tracks scrolling (evidence: `frontend/src/components/navigation/Navbar.tsx`)
- Navigation bar → Section scrolling: scrolls to section (evidence: `frontend/src/components/navigation/Navbar.tsx`)
- Navigation bar → Account pages: links registration
- Section paging → Section scrolling: scrolls to section (evidence: `frontend/src/hooks/useSectionPaging.ts`)
- Service overview → Reveal animation: uses reveal (evidence: `frontend/src/features/home/components/ServiceCards.tsx`)
- Reveal animation → Viewport observer: observes visibility (evidence: `frontend/src/components/common/Reveal.tsx`)
