# iftear-ahmed/cuet-bus architecture

> Architecture diagram of the GitHub repository iftear-ahmed/cuet-bus, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-15). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/iftear-ahmed/cuet-bus
- Repository: https://github.com/iftear-ahmed/cuet-bus

## Overview

CUET Bus Ticket is a role-based bus reservation and management application. Students authenticate, browse routes and shifts, select seats, and manage bookings; supervisors review passengers and mark attendance; admins manage buses, users, and system statistics. The React client routes users to role-specific pages and uses a shared API client, while Express mounts API route modules backed by MongoDB models. The README documents Firebase Google sign-in and daily point allocation. Some page-to-endpoint mappings are not visible in the supplied excerpts, so those links are omitted.

Main entry points: [`client/src/App.jsx`](https://github.com/iftear-ahmed/cuet-bus/blob/main/client/src/App.jsx) (Role Routing), [`client/src/utils/api.js`](https://github.com/iftear-ahmed/cuet-bus/blob/main/client/src/utils/api.js) (HTTP Client), [`server/server.js`](https://github.com/iftear-ahmed/cuet-bus/blob/main/server/server.js) (Express API), [`server/routes/bookings.js`](https://github.com/iftear-ahmed/cuet-bus/blob/main/server/routes/bookings.js) (Booking API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Web Client"]
  node_app["Role Routing<br/>[App.jsx]"]
  node_student_booking["Seat Booking<br/>[SeatBooking.jsx]"]
  node_student_views["Student Views"]
  node_route_view["Route Browser<br/>[RoutePage.jsx]"]
  node_profile["Profile History<br/>[ProfilePage.jsx]"]
  node_supervisor_views["Supervisor Dashboard"]
  node_attendance["Attendance<br/>[AttendancePage.jsx]"]
  node_admin_views["Admin Dashboard<br/>[AdminDashboard.jsx]"]
  node_bus_admin["Bus Management"]
  node_api_client["HTTP Client<br/>[api.js]"]
end

subgraph group_identity["Identity"]
  node_auth_ui["Login and Registration<br/>[StudentLogin.jsx]"]
  node_auth_state["Session State<br/>[AuthContext.jsx]"]
  node_firebase["Firebase Auth<br/>[firebase.js]"]
  node_auth_routes["Authentication API<br/>[auth.js]"]
  node_auth_middleware["JWT Authentication<br/>[auth.js]"]
  node_role_middleware["Role Authorization<br/>[roleCheck.js]"]
end

subgraph group_operations["Bus Operations"]
  node_api_server["Express API<br/>[server.js]"]
  node_bus_routes["Bus and Shift API<br/>[buses.js]"]
  node_booking_routes["Booking API<br/>[bookings.js]"]
  node_supervisor_routes["Supervisor API<br/>[supervisor.js]"]
  node_admin_routes["Admin API<br/>[admin.js]"]
  node_shift_rules["Shift Rules<br/>[shifts.js]"]
end

subgraph group_storage["Persistence"]
  node_users[("User Records<br/>[User.js]")]
  node_buses[("Bus Records<br/>[Bus.js]")]
  node_bookings[("Booking Records<br/>[Booking.js]")]
  node_mongo[("MongoDB<br/>[db.js]")]
end

node_student(("Student"))
node_supervisor(("Supervisor"))
node_admin(("Administrator"))

node_student -->|"uses"| node_app
node_supervisor -->|"uses"| node_app
node_admin -->|"uses"| node_app
node_app -->|"routes to"| node_student_booking
node_app -->|"routes to"| node_student_views
node_app -->|"routes to"| node_route_view
node_app -->|"routes to"| node_profile
node_app -->|"routes to"| node_supervisor_views
node_app -->|"routes to"| node_attendance
node_app -->|"routes to"| node_admin_views
node_app -->|"routes to"| node_bus_admin
node_app -->|"provides"| node_auth_state
node_auth_ui -->|"authenticates through"| node_auth_state
node_auth_ui -->|"uses"| node_firebase
node_auth_state -->|"calls"| node_api_client
node_student_booking -->|"requests data"| node_api_client
node_student_views -->|"requests data"| node_api_client
node_route_view -->|"requests data"| node_api_client
node_profile -->|"requests data"| node_api_client
node_supervisor_views -->|"requests data"| node_api_client
node_attendance -->|"requests data"| node_api_client
node_admin_views -->|"requests data"| node_api_client
node_bus_admin -->|"requests data"| node_api_client
node_api_server -->|"connects"| node_mongo
node_api_server -->|"mounts"| node_auth_routes
node_api_server -->|"mounts"| node_bus_routes
node_api_server -->|"mounts"| node_booking_routes
node_api_server -->|"mounts"| node_supervisor_routes
node_api_server -->|"mounts"| node_admin_routes
node_auth_routes -->|"reads and writes"| node_users
node_auth_middleware -->|"loads user"| node_users
node_auth_routes -->|"protects profile routes"| node_auth_middleware
node_bus_routes -->|"reads and writes"| node_buses
node_bus_routes -->|"checks bookings"| node_bookings
node_booking_routes -->|"reads and writes"| node_bookings
node_booking_routes -->|"loads bus data"| node_buses
node_booking_routes -->|"loads user data"| node_users
node_booking_routes -->|"uses"| node_shift_rules
node_bus_routes -->|"uses"| node_shift_rules
node_supervisor_routes -->|"manages attendance"| node_bookings
node_supervisor_routes -->|"loads bus data"| node_buses
node_supervisor_routes -->|"loads user data"| node_users
node_admin_routes -->|"manages users"| node_users
node_admin_routes -->|"manages buses"| node_buses
node_admin_routes -->|"reads bookings"| node_bookings

click node_app "https://github.com/iftear-ahmed/cuet-bus/blob/main/client/src/App.jsx"
click node_student_booking "https://github.com/iftear-ahmed/cuet-bus/blob/main/client/src/pages/SeatBooking.jsx"
click node_student_views "https://github.com/iftear-ahmed/cuet-bus/blob/main/client/src/pages/StudentDashboard.jsx"
click node_route_view "https://github.com/iftear-ahmed/cuet-bus/blob/main/client/src/pages/RoutePage.jsx"
click node_profile "https://github.com/iftear-ahmed/cuet-bus/blob/main/client/src/pages/ProfilePage.jsx"
click node_supervisor_views "https://github.com/iftear-ahmed/cuet-bus/blob/main/client/src/pages/SupervisorDashboard.jsx"
click node_attendance "https://github.com/iftear-ahmed/cuet-bus/blob/main/client/src/pages/AttendancePage.jsx"
click node_admin_views "https://github.com/iftear-ahmed/cuet-bus/blob/main/client/src/pages/AdminDashboard.jsx"
click node_bus_admin "https://github.com/iftear-ahmed/cuet-bus/blob/main/client/src/pages/AdminBusManagement.jsx"
click node_api_client "https://github.com/iftear-ahmed/cuet-bus/blob/main/client/src/utils/api.js"
click node_auth_ui "https://github.com/iftear-ahmed/cuet-bus/blob/main/client/src/pages/StudentLogin.jsx"
click node_auth_state "https://github.com/iftear-ahmed/cuet-bus/blob/main/client/src/context/AuthContext.jsx"
click node_firebase "https://github.com/iftear-ahmed/cuet-bus/blob/main/client/src/firebase.js"
click node_api_server "https://github.com/iftear-ahmed/cuet-bus/blob/main/server/server.js"
click node_auth_routes "https://github.com/iftear-ahmed/cuet-bus/blob/main/server/routes/auth.js"
click node_bus_routes "https://github.com/iftear-ahmed/cuet-bus/blob/main/server/routes/buses.js"
click node_booking_routes "https://github.com/iftear-ahmed/cuet-bus/blob/main/server/routes/bookings.js"
click node_supervisor_routes "https://github.com/iftear-ahmed/cuet-bus/blob/main/server/routes/supervisor.js"
click node_admin_routes "https://github.com/iftear-ahmed/cuet-bus/blob/main/server/routes/admin.js"
click node_shift_rules "https://github.com/iftear-ahmed/cuet-bus/blob/main/server/utils/shifts.js"
click node_auth_middleware "https://github.com/iftear-ahmed/cuet-bus/blob/main/server/middleware/auth.js"
click node_role_middleware "https://github.com/iftear-ahmed/cuet-bus/blob/main/server/middleware/roleCheck.js"
click node_users "https://github.com/iftear-ahmed/cuet-bus/blob/main/server/models/User.js"
click node_buses "https://github.com/iftear-ahmed/cuet-bus/blob/main/server/models/Bus.js"
click node_bookings "https://github.com/iftear-ahmed/cuet-bus/blob/main/server/models/Booking.js"
click node_mongo "https://github.com/iftear-ahmed/cuet-bus/blob/main/server/config/db.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_app,node_student_booking,node_student_views,node_route_view,node_profile,node_supervisor_views,node_attendance,node_admin_views,node_bus_admin,node_api_client toneBlue
class node_auth_ui,node_auth_state,node_firebase,node_auth_routes,node_auth_middleware,node_role_middleware toneAmber
class node_api_server,node_bus_routes,node_booking_routes,node_supervisor_routes,node_admin_routes,node_shift_rules toneMint
class node_users,node_buses,node_bookings,node_mongo toneRose
class node_student,node_supervisor,node_admin toneIndigo
```

## Components

### Web Client

- [Role Routing](https://github.com/iftear-ahmed/cuet-bus/blob/main/client/src/App.jsx): `client/src/App.jsx`
- [Seat Booking](https://github.com/iftear-ahmed/cuet-bus/blob/main/client/src/pages/SeatBooking.jsx): `client/src/pages/SeatBooking.jsx`
- [Student Views](https://github.com/iftear-ahmed/cuet-bus/blob/main/client/src/pages/StudentDashboard.jsx): `client/src/pages/StudentDashboard.jsx`
- [Route Browser](https://github.com/iftear-ahmed/cuet-bus/blob/main/client/src/pages/RoutePage.jsx): `client/src/pages/RoutePage.jsx`
- [Profile History](https://github.com/iftear-ahmed/cuet-bus/blob/main/client/src/pages/ProfilePage.jsx): `client/src/pages/ProfilePage.jsx`
- [Supervisor Dashboard](https://github.com/iftear-ahmed/cuet-bus/blob/main/client/src/pages/SupervisorDashboard.jsx): `client/src/pages/SupervisorDashboard.jsx`
- [Attendance](https://github.com/iftear-ahmed/cuet-bus/blob/main/client/src/pages/AttendancePage.jsx): `client/src/pages/AttendancePage.jsx`
- [Admin Dashboard](https://github.com/iftear-ahmed/cuet-bus/blob/main/client/src/pages/AdminDashboard.jsx): `client/src/pages/AdminDashboard.jsx`
- [Bus Management](https://github.com/iftear-ahmed/cuet-bus/blob/main/client/src/pages/AdminBusManagement.jsx): `client/src/pages/AdminBusManagement.jsx`
- [HTTP Client](https://github.com/iftear-ahmed/cuet-bus/blob/main/client/src/utils/api.js): `client/src/utils/api.js`

### Identity

- [Login and Registration](https://github.com/iftear-ahmed/cuet-bus/blob/main/client/src/pages/StudentLogin.jsx): `client/src/pages/StudentLogin.jsx`
- [Session State](https://github.com/iftear-ahmed/cuet-bus/blob/main/client/src/context/AuthContext.jsx): `client/src/context/AuthContext.jsx`
- [Firebase Auth](https://github.com/iftear-ahmed/cuet-bus/blob/main/client/src/firebase.js): `client/src/firebase.js`
- [Authentication API](https://github.com/iftear-ahmed/cuet-bus/blob/main/server/routes/auth.js): `server/routes/auth.js`
- [JWT Authentication](https://github.com/iftear-ahmed/cuet-bus/blob/main/server/middleware/auth.js): `server/middleware/auth.js`
- [Role Authorization](https://github.com/iftear-ahmed/cuet-bus/blob/main/server/middleware/roleCheck.js): `server/middleware/roleCheck.js`

### Bus Operations

- [Express API](https://github.com/iftear-ahmed/cuet-bus/blob/main/server/server.js): `server/server.js`
- [Bus and Shift API](https://github.com/iftear-ahmed/cuet-bus/blob/main/server/routes/buses.js): `server/routes/buses.js`
- [Booking API](https://github.com/iftear-ahmed/cuet-bus/blob/main/server/routes/bookings.js): `server/routes/bookings.js`
- [Supervisor API](https://github.com/iftear-ahmed/cuet-bus/blob/main/server/routes/supervisor.js): `server/routes/supervisor.js`
- [Admin API](https://github.com/iftear-ahmed/cuet-bus/blob/main/server/routes/admin.js): `server/routes/admin.js`
- [Shift Rules](https://github.com/iftear-ahmed/cuet-bus/blob/main/server/utils/shifts.js): `server/utils/shifts.js`

### Persistence

- [User Records](https://github.com/iftear-ahmed/cuet-bus/blob/main/server/models/User.js): `server/models/User.js`
- [Bus Records](https://github.com/iftear-ahmed/cuet-bus/blob/main/server/models/Bus.js): `server/models/Bus.js`
- [Booking Records](https://github.com/iftear-ahmed/cuet-bus/blob/main/server/models/Booking.js): `server/models/Booking.js`
- [MongoDB](https://github.com/iftear-ahmed/cuet-bus/blob/main/server/config/db.js): `server/config/db.js`

### Other components

- **Student**
- **Supervisor**
- **Administrator**

## Connections

- Student → Role Routing: uses (evidence: `client/src/App.jsx`)
- Supervisor → Role Routing: uses (evidence: `client/src/App.jsx`)
- Administrator → Role Routing: uses (evidence: `client/src/App.jsx`)
- Role Routing → Seat Booking: routes to (evidence: `client/src/App.jsx`)
- Role Routing → Student Views: routes to (evidence: `client/src/App.jsx`)
- Role Routing → Route Browser: routes to (evidence: `client/src/App.jsx`)
- Role Routing → Profile History: routes to (evidence: `client/src/App.jsx`)
- Role Routing → Supervisor Dashboard: routes to (evidence: `client/src/App.jsx`)
- Role Routing → Attendance: routes to (evidence: `client/src/App.jsx`)
- Role Routing → Admin Dashboard: routes to (evidence: `client/src/App.jsx`)
- Role Routing → Bus Management: routes to (evidence: `client/src/App.jsx`)
- Role Routing → Session State: provides (evidence: `client/src/App.jsx`)
- Login and Registration → Session State: authenticates through (evidence: `client/src/pages/StudentLogin.jsx`)
- Login and Registration → Firebase Auth: uses (evidence: `client/src/pages/StudentLogin.jsx`)
- Session State → HTTP Client: calls (evidence: `client/src/context/AuthContext.jsx`)
- Seat Booking → HTTP Client: requests data (evidence: `client/src/pages/SeatBooking.jsx`)
- Student Views → HTTP Client: requests data (evidence: `client/src/pages/StudentDashboard.jsx`)
- Route Browser → HTTP Client: requests data (evidence: `client/src/pages/RoutePage.jsx`)
- Profile History → HTTP Client: requests data (evidence: `client/src/pages/ProfilePage.jsx`)
- Supervisor Dashboard → HTTP Client: requests data (evidence: `client/src/pages/SupervisorDashboard.jsx`)
- Attendance → HTTP Client: requests data (evidence: `client/src/pages/AttendancePage.jsx`)
- Admin Dashboard → HTTP Client: requests data (evidence: `client/src/pages/AdminDashboard.jsx`)
- Bus Management → HTTP Client: requests data (evidence: `client/src/pages/AdminBusManagement.jsx`)
- Express API → MongoDB: connects (evidence: `server/server.js`)
- Express API → Authentication API: mounts (evidence: `server/server.js`)
- Express API → Bus and Shift API: mounts (evidence: `server/server.js`)
- Express API → Booking API: mounts (evidence: `server/server.js`)
- Express API → Supervisor API: mounts (evidence: `server/server.js`)
- Express API → Admin API: mounts (evidence: `server/server.js`)
- Authentication API → User Records: reads and writes (evidence: `server/routes/auth.js`)
- JWT Authentication → User Records: loads user (evidence: `server/middleware/auth.js`)
- Authentication API → JWT Authentication: protects profile routes (evidence: `server/routes/auth.js`)
- Bus and Shift API → Bus Records: reads and writes (evidence: `server/routes/buses.js`)
- Bus and Shift API → Booking Records: checks bookings (evidence: `server/routes/buses.js`)
- Booking API → Booking Records: reads and writes (evidence: `server/routes/bookings.js`)
- Booking API → Bus Records: loads bus data (evidence: `server/routes/bookings.js`)
- Booking API → User Records: loads user data (evidence: `server/routes/bookings.js`)
- Booking API → Shift Rules: uses (evidence: `server/routes/bookings.js`)
- Bus and Shift API → Shift Rules: uses (evidence: `server/routes/buses.js`)
- Supervisor API → Booking Records: manages attendance (evidence: `server/routes/supervisor.js`)
- Supervisor API → Bus Records: loads bus data (evidence: `server/routes/supervisor.js`)
- Supervisor API → User Records: loads user data (evidence: `server/routes/supervisor.js`)
- Admin API → User Records: manages users (evidence: `server/routes/admin.js`)
- Admin API → Bus Records: manages buses (evidence: `server/routes/admin.js`)
- Admin API → Booking Records: reads bookings (evidence: `server/routes/admin.js`)
