# shreyas-sv1/digital_bus_ticket architecture

> Architecture diagram of the GitHub repository shreyas-sv1/digital_bus_ticket, 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/shreyas-sv1/digital_bus_ticket
- Repository: https://github.com/shreyas-sv1/digital_bus_ticket

## Overview

BMTC SmartTicket is a multi-role digital bus-ticketing system: travelers find routes and fares, create a time-limited QR travel session, and obtain a cash or online ticket; conductors issue tickets, supervisors verify them, and administrators manage transit operations and monitor fraud. The graph includes the documented frontend/backend boundary, core ticketing stages, authentication, and persistence. Several frontend pages and backend subsystems are represented by their exact tree paths; their internal wiring is not inferred where source excerpts were unavailable.

Main entry points: [`backend/src/prisma/prisma.service.ts`](https://github.com/shreyas-sv1/digital_bus_ticket/blob/main/backend/src/prisma/prisma.service.ts) (Prisma service), [`frontend/lib/api.ts`](https://github.com/shreyas-sv1/digital_bus_ticket/blob/main/frontend/lib/api.ts) (API client), [`frontend/app/traveler`](https://github.com/shreyas-sv1/digital_bus_ticket/tree/main/frontend/app/traveler) (Traveler pages), [`backend/src/sessions/sessions.service.ts`](https://github.com/shreyas-sv1/digital_bus_ticket/blob/main/backend/src/sessions/sessions.service.ts) (Travel sessions)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Role-based frontend"]
  node_traveler_ui["Traveler pages"]
  node_conductor_ui["Conductor pages"]
  node_supervisor_ui["Supervisor pages"]
  node_admin_ui["Admin pages"]
  node_api_client["API client<br/>[api.ts]"]
  node_socket_client["Realtime client<br/>[socket.ts]"]
end

subgraph group_identity["Identity and access"]
  node_auth_controller["Auth endpoints<br/>[auth.controller.ts]"]
  node_auth_service["Auth service<br/>[auth.service.ts]"]
end

subgraph group_travel["Travel and ticketing"]
  node_sessions_controller["Session endpoints"]
  node_sessions_service["Travel sessions"]
  node_tickets_controller["Ticket endpoints"]
  node_tickets_service["Ticket issuance<br/>[tickets.service.ts]"]
  node_verification_controller["Verification endpoints"]
  node_verification_service["Ticket verification"]
end

subgraph group_operations["Transit operations"]
  node_routes_controller["Route endpoints"]
  node_routes_service["Routes and fares<br/>[routes.service.ts]"]
  node_buses_controller["Bus endpoints"]
  node_buses_service["Bus service<br/>[buses.service.ts]"]
  node_admin_service["Admin service<br/>[admin.service.ts]"]
end

subgraph group_platform["Persistence and integrations"]
  node_prisma["Prisma service<br/>[prisma.service.ts]"]
  node_database[("PostgreSQL")]
  node_razorpay["Razorpay"]
  node_socket_gateway["Socket gateway<br/>[socket.gateway.ts]"]
end

node_traveler(("Traveler"))
node_conductor(("Conductor"))
node_supervisor(("Supervisor"))
node_admin(("Administrator"))

node_traveler -->|"uses"| node_traveler_ui
node_conductor -->|"uses"| node_conductor_ui
node_supervisor -->|"uses"| node_supervisor_ui
node_admin -->|"uses"| node_admin_ui
node_traveler_ui -->|"requests"| node_api_client
node_conductor_ui -->|"requests"| node_api_client
node_supervisor_ui -->|"requests"| node_api_client
node_admin_ui -->|"requests"| node_api_client
node_auth_controller -->|"calls"| node_auth_service
node_routes_controller -->|"calls"| node_routes_service
node_buses_controller -->|"calls"| node_buses_service
node_sessions_controller -->|"calls"| node_sessions_service
node_tickets_controller -->|"calls"| node_tickets_service
node_verification_controller -->|"calls"| node_verification_service
node_sessions_service -->|"calculates fare"| node_routes_service
node_auth_service -->|"reads and writes"| node_prisma
node_routes_service -->|"reads and writes"| node_prisma
node_buses_service -->|"reads and writes"| node_prisma
node_admin_service -->|"uses"| node_prisma
node_sessions_service -->|"reads and writes"| node_prisma
node_tickets_service -->|"reads and writes"| node_prisma
node_verification_service -->|"reads and writes"| node_prisma
node_prisma -->|"persists data"| node_database
node_tickets_service -.->|"creates and verifies payments"| node_razorpay
node_traveler_ui -.->|"receives updates"| node_socket_client
node_socket_client -.->|"connects"| node_socket_gateway

click node_traveler_ui "https://github.com/shreyas-sv1/digital_bus_ticket/tree/main/frontend/app/traveler"
click node_conductor_ui "https://github.com/shreyas-sv1/digital_bus_ticket/tree/main/frontend/app/conductor"
click node_supervisor_ui "https://github.com/shreyas-sv1/digital_bus_ticket/tree/main/frontend/app/supervisor"
click node_admin_ui "https://github.com/shreyas-sv1/digital_bus_ticket/tree/main/frontend/app/admin"
click node_api_client "https://github.com/shreyas-sv1/digital_bus_ticket/blob/main/frontend/lib/api.ts"
click node_socket_client "https://github.com/shreyas-sv1/digital_bus_ticket/blob/main/frontend/lib/socket.ts"
click node_auth_controller "https://github.com/shreyas-sv1/digital_bus_ticket/blob/main/backend/src/auth/auth.controller.ts"
click node_auth_service "https://github.com/shreyas-sv1/digital_bus_ticket/blob/main/backend/src/auth/auth.service.ts"
click node_routes_controller "https://github.com/shreyas-sv1/digital_bus_ticket/blob/main/backend/src/routes/routes.controller.ts"
click node_routes_service "https://github.com/shreyas-sv1/digital_bus_ticket/blob/main/backend/src/routes/routes.service.ts"
click node_buses_controller "https://github.com/shreyas-sv1/digital_bus_ticket/blob/main/backend/src/buses/buses.controller.ts"
click node_buses_service "https://github.com/shreyas-sv1/digital_bus_ticket/blob/main/backend/src/buses/buses.service.ts"
click node_admin_service "https://github.com/shreyas-sv1/digital_bus_ticket/blob/main/backend/src/admin.service.ts"
click node_sessions_controller "https://github.com/shreyas-sv1/digital_bus_ticket/blob/main/backend/src/sessions/sessions.controller.ts"
click node_sessions_service "https://github.com/shreyas-sv1/digital_bus_ticket/blob/main/backend/src/sessions/sessions.service.ts"
click node_tickets_controller "https://github.com/shreyas-sv1/digital_bus_ticket/blob/main/backend/src/tickets/tickets.controller.ts"
click node_tickets_service "https://github.com/shreyas-sv1/digital_bus_ticket/blob/main/backend/src/tickets/tickets.service.ts"
click node_verification_controller "https://github.com/shreyas-sv1/digital_bus_ticket/blob/main/backend/src/verification/verification.controller.ts"
click node_verification_service "https://github.com/shreyas-sv1/digital_bus_ticket/blob/main/backend/src/verification/verification.service.ts"
click node_prisma "https://github.com/shreyas-sv1/digital_bus_ticket/blob/main/backend/src/prisma/prisma.service.ts"
click node_socket_gateway "https://github.com/shreyas-sv1/digital_bus_ticket/blob/main/backend/src/socket/socket.gateway.ts"

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_traveler_ui,node_conductor_ui,node_supervisor_ui,node_admin_ui,node_api_client,node_socket_client toneBlue
class node_auth_controller,node_auth_service toneAmber
class node_sessions_controller,node_sessions_service,node_tickets_controller,node_tickets_service,node_verification_controller,node_verification_service toneMint
class node_routes_controller,node_routes_service,node_buses_controller,node_buses_service,node_admin_service toneRose
class node_prisma,node_database,node_razorpay,node_socket_gateway,node_traveler,node_conductor,node_supervisor,node_admin toneIndigo
```

## Components

### Role-based frontend

- [Traveler pages](https://github.com/shreyas-sv1/digital_bus_ticket/tree/main/frontend/app/traveler): `frontend/app/traveler`
- [Conductor pages](https://github.com/shreyas-sv1/digital_bus_ticket/tree/main/frontend/app/conductor): `frontend/app/conductor`
- [Supervisor pages](https://github.com/shreyas-sv1/digital_bus_ticket/tree/main/frontend/app/supervisor): `frontend/app/supervisor`
- [Admin pages](https://github.com/shreyas-sv1/digital_bus_ticket/tree/main/frontend/app/admin): `frontend/app/admin`
- [API client](https://github.com/shreyas-sv1/digital_bus_ticket/blob/main/frontend/lib/api.ts): `frontend/lib/api.ts`
- [Realtime client](https://github.com/shreyas-sv1/digital_bus_ticket/blob/main/frontend/lib/socket.ts): `frontend/lib/socket.ts`

### Identity and access

- [Auth endpoints](https://github.com/shreyas-sv1/digital_bus_ticket/blob/main/backend/src/auth/auth.controller.ts): `backend/src/auth/auth.controller.ts`
- [Auth service](https://github.com/shreyas-sv1/digital_bus_ticket/blob/main/backend/src/auth/auth.service.ts): `backend/src/auth/auth.service.ts`

### Travel and ticketing

- [Session endpoints](https://github.com/shreyas-sv1/digital_bus_ticket/blob/main/backend/src/sessions/sessions.controller.ts): `backend/src/sessions/sessions.controller.ts`
- [Travel sessions](https://github.com/shreyas-sv1/digital_bus_ticket/blob/main/backend/src/sessions/sessions.service.ts): `backend/src/sessions/sessions.service.ts`
- [Ticket endpoints](https://github.com/shreyas-sv1/digital_bus_ticket/blob/main/backend/src/tickets/tickets.controller.ts): `backend/src/tickets/tickets.controller.ts`
- [Ticket issuance](https://github.com/shreyas-sv1/digital_bus_ticket/blob/main/backend/src/tickets/tickets.service.ts): `backend/src/tickets/tickets.service.ts`
- [Verification endpoints](https://github.com/shreyas-sv1/digital_bus_ticket/blob/main/backend/src/verification/verification.controller.ts): `backend/src/verification/verification.controller.ts`
- [Ticket verification](https://github.com/shreyas-sv1/digital_bus_ticket/blob/main/backend/src/verification/verification.service.ts): `backend/src/verification/verification.service.ts`

### Transit operations

- [Route endpoints](https://github.com/shreyas-sv1/digital_bus_ticket/blob/main/backend/src/routes/routes.controller.ts): `backend/src/routes/routes.controller.ts`
- [Routes and fares](https://github.com/shreyas-sv1/digital_bus_ticket/blob/main/backend/src/routes/routes.service.ts): `backend/src/routes/routes.service.ts`
- [Bus endpoints](https://github.com/shreyas-sv1/digital_bus_ticket/blob/main/backend/src/buses/buses.controller.ts): `backend/src/buses/buses.controller.ts`
- [Bus service](https://github.com/shreyas-sv1/digital_bus_ticket/blob/main/backend/src/buses/buses.service.ts): `backend/src/buses/buses.service.ts`
- [Admin service](https://github.com/shreyas-sv1/digital_bus_ticket/blob/main/backend/src/admin.service.ts): `backend/src/admin.service.ts`

### Persistence and integrations

- [Prisma service](https://github.com/shreyas-sv1/digital_bus_ticket/blob/main/backend/src/prisma/prisma.service.ts): `backend/src/prisma/prisma.service.ts`
- **PostgreSQL**
- **Razorpay**
- [Socket gateway](https://github.com/shreyas-sv1/digital_bus_ticket/blob/main/backend/src/socket/socket.gateway.ts): `backend/src/socket/socket.gateway.ts`

### Other components

- **Traveler**
- **Conductor**
- **Supervisor**
- **Administrator**

## Connections

- Traveler → Traveler pages: uses
- Conductor → Conductor pages: uses
- Supervisor → Supervisor pages: uses
- Administrator → Admin pages: uses
- Traveler pages → API client: requests
- Conductor pages → API client: requests
- Supervisor pages → API client: requests
- Admin pages → API client: requests
- Auth endpoints → Auth service: calls
- Route endpoints → Routes and fares: calls
- Bus endpoints → Bus service: calls
- Session endpoints → Travel sessions: calls
- Ticket endpoints → Ticket issuance: calls
- Verification endpoints → Ticket verification: calls
- Travel sessions → Routes and fares: calculates fare
- Auth service → Prisma service: reads and writes
- Routes and fares → Prisma service: reads and writes
- Bus service → Prisma service: reads and writes
- Admin service → Prisma service: uses
- Travel sessions → Prisma service: reads and writes
- Ticket issuance → Prisma service: reads and writes
- Ticket verification → Prisma service: reads and writes
- Prisma service → PostgreSQL: persists data
- Ticket issuance → Razorpay: creates and verifies payments
- Traveler pages → Realtime client: receives updates
- Realtime client → Socket gateway: connects
