# smdanial/hackathon architecture

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

- Interactive diagram: https://gitdiagram.com/smdanial/hackathon
- Repository: https://github.com/smdanial/hackathon

## Overview

CampusEase is a student-life toolkit with a Next.js interface and Django REST API. Students use it to sign in and explore rooms, library seats, bus tracking, lost-and-found listings, notices, and lab reports; account/profile functions support those experiences. The graph shows the documented frontend/backend boundary and the app-specific API, serialization, and persistence layers. Source excerpts were limited, so internal call wiring and integrations not established by the README or sampled code are omitted.

Main entry points: [`Frontend/app`](https://github.com/smdanial/hackathon/tree/main/Frontend/app) (Next.js pages), [`Backend/campusease/urls.py`](https://github.com/smdanial/hackathon/blob/main/Backend/campusease/urls.py) (API routing), [`Frontend/lib/api.ts`](https://github.com/smdanial/hackathon/blob/main/Frontend/lib/api.ts) (API client), [`Frontend/app/login/page.tsx`](https://github.com/smdanial/hackathon/blob/main/Frontend/app/login/page.tsx) (Auth screens)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Student interface"]
  node_web["Next.js pages"]
  node_auth_ui["Auth screens<br/>[page.tsx]"]
  node_service_ui["Service screens<br/>[page.tsx]"]
  node_library_ui["Library screens<br/>[page.tsx]"]
  node_bus_ui["Bus screens<br/>[page.tsx]"]
  node_lost_ui["Lost &amp; found UI<br/>[page.tsx]"]
  node_notices_ui["Notices UI<br/>[page.tsx]"]
  node_lab_ui["Lab report UI<br/>[page.tsx]"]
  node_api_client["API client<br/>[api.ts]"]
end

subgraph group_identity["Accounts"]
  node_accounts_ui["Auth and session<br/>[auth.ts]"]
  node_accounts_api["Account endpoints<br/>[views.py]"]
  node_accounts_data[("Account data<br/>[models.py]")]
end

subgraph group_campus["Campus services"]
  node_rooms_api["Room endpoints<br/>[views.py]"]
  node_rooms_data[("Room data<br/>[models.py]")]
  node_library_api["Library endpoints<br/>[views.py]"]
  node_library_data[("Library data<br/>[models.py]")]
  node_bus_api["Bus endpoints<br/>[views.py]"]
  node_bus_data[("Bus data<br/>[models.py]")]
  node_lost_api["Lost-and-found endpoints<br/>[views.py]"]
  node_lost_data[("Lost-and-found data<br/>[models.py]")]
  node_notices_api["Notice endpoints<br/>[views.py]"]
  node_notices_data[("Notice data<br/>[models.py]")]
  node_lab_api["Lab report endpoints<br/>[views.py]"]
  node_lab_data[("Lab report data<br/>[models.py]")]
end

subgraph group_api["REST API"]
  node_django_routes["API routing<br/>[urls.py]"]
  node_room_routes["Room routing<br/>[urls.py]"]
  node_library_routes["Library routing<br/>[urls.py]"]
  node_bus_routes["Bus routing<br/>[urls.py]"]
  node_lost_routes["Lost-and-found routing<br/>[urls.py]"]
  node_notice_routes["Notice routing<br/>[urls.py]"]
  node_lab_routes["Lab report routing<br/>[urls.py]"]
end

node_student(("Student"))

node_student -->|"uses"| node_web
node_web -->|"opens"| node_auth_ui
node_web -->|"opens"| node_service_ui
node_web -->|"opens"| node_library_ui
node_web -->|"opens"| node_bus_ui
node_web -->|"opens"| node_lost_ui
node_web -->|"opens"| node_notices_ui
node_web -->|"opens"| node_lab_ui
node_auth_ui -->|"uses"| node_accounts_ui
node_auth_ui -->|"requests"| node_api_client
node_accounts_ui -->|"requests"| node_api_client
node_service_ui -->|"requests"| node_api_client
node_library_ui -->|"requests"| node_api_client
node_bus_ui -->|"requests"| node_api_client
node_lost_ui -->|"requests"| node_api_client
node_notices_ui -->|"requests"| node_api_client
node_lab_ui -->|"requests"| node_api_client
node_api_client -->|"calls"| node_django_routes
node_django_routes -->|"dispatches"| node_accounts_api
node_django_routes -->|"dispatches"| node_room_routes
node_django_routes -->|"dispatches"| node_library_routes
node_django_routes -->|"dispatches"| node_bus_routes
node_django_routes -->|"dispatches"| node_lost_routes
node_django_routes -->|"dispatches"| node_notice_routes
node_django_routes -->|"dispatches"| node_lab_routes
node_room_routes -->|"dispatches"| node_rooms_api
node_library_routes -->|"dispatches"| node_library_api
node_bus_routes -->|"dispatches"| node_bus_api
node_lost_routes -->|"dispatches"| node_lost_api
node_notice_routes -->|"dispatches"| node_notices_api
node_lab_routes -->|"dispatches"| node_lab_api
node_accounts_api -->|"accesses"| node_accounts_data
node_rooms_api -->|"accesses"| node_rooms_data
node_library_api -->|"accesses"| node_library_data
node_bus_api -->|"accesses"| node_bus_data
node_lost_api -->|"accesses"| node_lost_data
node_notices_api -->|"accesses"| node_notices_data
node_lab_api -->|"accesses"| node_lab_data

click node_web "https://github.com/smdanial/hackathon/tree/main/Frontend/app"
click node_auth_ui "https://github.com/smdanial/hackathon/blob/main/Frontend/app/login/page.tsx"
click node_service_ui "https://github.com/smdanial/hackathon/blob/main/Frontend/app/rooms/page.tsx"
click node_library_ui "https://github.com/smdanial/hackathon/blob/main/Frontend/app/library/page.tsx"
click node_bus_ui "https://github.com/smdanial/hackathon/blob/main/Frontend/app/bus/page.tsx"
click node_lost_ui "https://github.com/smdanial/hackathon/blob/main/Frontend/app/lost-found/page.tsx"
click node_notices_ui "https://github.com/smdanial/hackathon/blob/main/Frontend/app/notices/page.tsx"
click node_lab_ui "https://github.com/smdanial/hackathon/blob/main/Frontend/app/lab-report/page.tsx"
click node_api_client "https://github.com/smdanial/hackathon/blob/main/Frontend/lib/api.ts"
click node_accounts_ui "https://github.com/smdanial/hackathon/blob/main/Frontend/lib/auth.ts"
click node_accounts_api "https://github.com/smdanial/hackathon/blob/main/Backend/accounts/views.py"
click node_accounts_data "https://github.com/smdanial/hackathon/blob/main/Backend/accounts/models.py"
click node_rooms_api "https://github.com/smdanial/hackathon/blob/main/Backend/rooms/views.py"
click node_rooms_data "https://github.com/smdanial/hackathon/blob/main/Backend/rooms/models.py"
click node_library_api "https://github.com/smdanial/hackathon/blob/main/Backend/library/views.py"
click node_library_data "https://github.com/smdanial/hackathon/blob/main/Backend/library/models.py"
click node_bus_api "https://github.com/smdanial/hackathon/blob/main/Backend/bus_tracking/views.py"
click node_bus_data "https://github.com/smdanial/hackathon/blob/main/Backend/bus_tracking/models.py"
click node_lost_api "https://github.com/smdanial/hackathon/blob/main/Backend/lostfound/views.py"
click node_lost_data "https://github.com/smdanial/hackathon/blob/main/Backend/lostfound/models.py"
click node_notices_api "https://github.com/smdanial/hackathon/blob/main/Backend/notices/views.py"
click node_notices_data "https://github.com/smdanial/hackathon/blob/main/Backend/notices/models.py"
click node_lab_api "https://github.com/smdanial/hackathon/blob/main/Backend/labreports/views.py"
click node_lab_data "https://github.com/smdanial/hackathon/blob/main/Backend/labreports/models.py"
click node_django_routes "https://github.com/smdanial/hackathon/blob/main/Backend/campusease/urls.py"
click node_room_routes "https://github.com/smdanial/hackathon/blob/main/Backend/rooms/urls.py"
click node_library_routes "https://github.com/smdanial/hackathon/blob/main/Backend/library/urls.py"
click node_bus_routes "https://github.com/smdanial/hackathon/blob/main/Backend/bus_tracking/urls.py"
click node_lost_routes "https://github.com/smdanial/hackathon/blob/main/Backend/lostfound/urls.py"
click node_notice_routes "https://github.com/smdanial/hackathon/blob/main/Backend/notices/urls.py"
click node_lab_routes "https://github.com/smdanial/hackathon/blob/main/Backend/labreports/urls.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_web,node_auth_ui,node_service_ui,node_library_ui,node_bus_ui,node_lost_ui,node_notices_ui,node_lab_ui,node_api_client toneBlue
class node_accounts_ui,node_accounts_api,node_accounts_data toneAmber
class node_rooms_api,node_rooms_data,node_library_api,node_library_data,node_bus_api,node_bus_data,node_lost_api,node_lost_data,node_notices_api,node_notices_data,node_lab_api,node_lab_data toneMint
class node_django_routes,node_room_routes,node_library_routes,node_bus_routes,node_lost_routes,node_notice_routes,node_lab_routes toneRose
class node_student toneIndigo
```

## Components

### Student interface

- [Next.js pages](https://github.com/smdanial/hackathon/tree/main/Frontend/app): `Frontend/app`
- [Auth screens](https://github.com/smdanial/hackathon/blob/main/Frontend/app/login/page.tsx): `Frontend/app/login/page.tsx`
- [Service screens](https://github.com/smdanial/hackathon/blob/main/Frontend/app/rooms/page.tsx): `Frontend/app/rooms/page.tsx`
- [Library screens](https://github.com/smdanial/hackathon/blob/main/Frontend/app/library/page.tsx): `Frontend/app/library/page.tsx`
- [Bus screens](https://github.com/smdanial/hackathon/blob/main/Frontend/app/bus/page.tsx): `Frontend/app/bus/page.tsx`
- [Lost & found UI](https://github.com/smdanial/hackathon/blob/main/Frontend/app/lost-found/page.tsx): `Frontend/app/lost-found/page.tsx`
- [Notices UI](https://github.com/smdanial/hackathon/blob/main/Frontend/app/notices/page.tsx): `Frontend/app/notices/page.tsx`
- [Lab report UI](https://github.com/smdanial/hackathon/blob/main/Frontend/app/lab-report/page.tsx): `Frontend/app/lab-report/page.tsx`
- [API client](https://github.com/smdanial/hackathon/blob/main/Frontend/lib/api.ts): `Frontend/lib/api.ts`

### Accounts

- [Auth and session](https://github.com/smdanial/hackathon/blob/main/Frontend/lib/auth.ts): `Frontend/lib/auth.ts`
- [Account endpoints](https://github.com/smdanial/hackathon/blob/main/Backend/accounts/views.py): `Backend/accounts/views.py`
- [Account data](https://github.com/smdanial/hackathon/blob/main/Backend/accounts/models.py): `Backend/accounts/models.py`

### Campus services

- [Room endpoints](https://github.com/smdanial/hackathon/blob/main/Backend/rooms/views.py): `Backend/rooms/views.py`
- [Room data](https://github.com/smdanial/hackathon/blob/main/Backend/rooms/models.py): `Backend/rooms/models.py`
- [Library endpoints](https://github.com/smdanial/hackathon/blob/main/Backend/library/views.py): `Backend/library/views.py`
- [Library data](https://github.com/smdanial/hackathon/blob/main/Backend/library/models.py): `Backend/library/models.py`
- [Bus endpoints](https://github.com/smdanial/hackathon/blob/main/Backend/bus_tracking/views.py): `Backend/bus_tracking/views.py`
- [Bus data](https://github.com/smdanial/hackathon/blob/main/Backend/bus_tracking/models.py): `Backend/bus_tracking/models.py`
- [Lost-and-found endpoints](https://github.com/smdanial/hackathon/blob/main/Backend/lostfound/views.py): `Backend/lostfound/views.py`
- [Lost-and-found data](https://github.com/smdanial/hackathon/blob/main/Backend/lostfound/models.py): `Backend/lostfound/models.py`
- [Notice endpoints](https://github.com/smdanial/hackathon/blob/main/Backend/notices/views.py): `Backend/notices/views.py`
- [Notice data](https://github.com/smdanial/hackathon/blob/main/Backend/notices/models.py): `Backend/notices/models.py`
- [Lab report endpoints](https://github.com/smdanial/hackathon/blob/main/Backend/labreports/views.py): `Backend/labreports/views.py`
- [Lab report data](https://github.com/smdanial/hackathon/blob/main/Backend/labreports/models.py): `Backend/labreports/models.py`

### REST API

- [API routing](https://github.com/smdanial/hackathon/blob/main/Backend/campusease/urls.py): `Backend/campusease/urls.py`
- [Room routing](https://github.com/smdanial/hackathon/blob/main/Backend/rooms/urls.py): `Backend/rooms/urls.py`
- [Library routing](https://github.com/smdanial/hackathon/blob/main/Backend/library/urls.py): `Backend/library/urls.py`
- [Bus routing](https://github.com/smdanial/hackathon/blob/main/Backend/bus_tracking/urls.py): `Backend/bus_tracking/urls.py`
- [Lost-and-found routing](https://github.com/smdanial/hackathon/blob/main/Backend/lostfound/urls.py): `Backend/lostfound/urls.py`
- [Notice routing](https://github.com/smdanial/hackathon/blob/main/Backend/notices/urls.py): `Backend/notices/urls.py`
- [Lab report routing](https://github.com/smdanial/hackathon/blob/main/Backend/labreports/urls.py): `Backend/labreports/urls.py`

### Other components

- **Student**

## Connections

- Student → Next.js pages: uses
- Next.js pages → Auth screens: opens
- Next.js pages → Service screens: opens
- Next.js pages → Library screens: opens
- Next.js pages → Bus screens: opens
- Next.js pages → Lost & found UI: opens
- Next.js pages → Notices UI: opens
- Next.js pages → Lab report UI: opens
- Auth screens → Auth and session: uses
- Auth screens → API client: requests
- Auth and session → API client: requests
- Service screens → API client: requests
- Library screens → API client: requests
- Bus screens → API client: requests
- Lost & found UI → API client: requests
- Notices UI → API client: requests
- Lab report UI → API client: requests
- API client → API routing: calls
- API routing → Account endpoints: dispatches
- API routing → Room routing: dispatches
- API routing → Library routing: dispatches
- API routing → Bus routing: dispatches
- API routing → Lost-and-found routing: dispatches
- API routing → Notice routing: dispatches
- API routing → Lab report routing: dispatches
- Room routing → Room endpoints: dispatches
- Library routing → Library endpoints: dispatches
- Bus routing → Bus endpoints: dispatches
- Lost-and-found routing → Lost-and-found endpoints: dispatches
- Notice routing → Notice endpoints: dispatches
- Lab report routing → Lab report endpoints: dispatches
- Account endpoints → Account data: accesses
- Room endpoints → Room data: accesses
- Library endpoints → Library data: accesses
- Bus endpoints → Bus data: accesses
- Lost-and-found endpoints → Lost-and-found data: accesses
- Notice endpoints → Notice data: accesses
- Lab report endpoints → Lab report data: accesses
