# sinnca/bus-reservation-system architecture

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

- Interactive diagram: https://gitdiagram.com/sinnca/bus-reservation-system
- Repository: https://github.com/sinnca/bus-reservation-system

## Overview

This is a Laravel bus-ticketing application. Users search trips, select outbound and optional return seats, create a pending reservation, proceed to payment, and manage bookings; administrators manage buses, trips, reservations, and generated schedules. The internal booking service validates capacity and seat conflicts and updates reservation and seat records transactionally. The tree and excerpts show these responsibilities, but do not establish most route wiring, payment-provider behavior, or all controller-to-view relationships; uncertain connections are omitted or marked unverified.

Main entry points: [`app/Http/Controllers/User/BookingController.php`](https://github.com/sinnca/bus-reservation-system/blob/main/app/Http/Controllers/User/BookingController.php) (Booking and Seats), [`app/Services/BookingService.php`](https://github.com/sinnca/bus-reservation-system/blob/main/app/Services/BookingService.php) (Booking Service), [`app/Models/Trip.php`](https://github.com/sinnca/bus-reservation-system/blob/main/app/Models/Trip.php) (Trips), [`app/Services/ScheduleGeneratorService.php`](https://github.com/sinnca/bus-reservation-system/blob/main/app/Services/ScheduleGeneratorService.php) (Schedule Generation)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_identity["Identity and API"]
  node_auth["Authentication"]
  node_api_auth["API Authentication<br/>[AuthController.php]"]
  node_api_trips["Trip API<br/>[TripController.php]"]
  node_api_reservations["Reservation API"]
  node_app_user[("User<br/>[User.php]")]
end

subgraph group_travel["Trip Operations"]
  node_trip_search["Trip Search<br/>[TripController.php]"]
  node_trip_catalog[("Trips<br/>[Trip.php]")]
  node_bus_fleet[("Buses<br/>[Bus.php]")]
  node_schedule_generation["Schedule Generation"]
end

subgraph group_booking["Reservations and Payment"]
  node_booking_flow["Booking and Seats"]
  node_booking_service["Booking Service<br/>[BookingService.php]"]
  node_reservations[("Reservations<br/>[Reservation.php]")]
  node_reserved_seats[("Reserved Seats<br/>[ReservedSeat.php]")]
  node_payment["Payment"]
  node_user_bookings["Booking Dashboard"]
end

subgraph group_admin["Administration"]
  node_admin_buses["Bus Management<br/>[BusController.php]"]
  node_admin_trips["Trip Management<br/>[TripController.php]"]
  node_admin_reservations["Reservation Management"]
  node_admin_schedule["Schedule Management"]
end

node_traveler(("Traveler"))
node_admin_actor(("Administrator"))

node_traveler -.->|"signs in"| node_auth
node_auth -.->|"authenticates"| node_app_user
node_traveler -.->|"searches trips"| node_trip_search
node_trip_search -->|"queries"| node_trip_catalog
node_traveler -.->|"selects seats"| node_booking_flow
node_booking_flow -->|"creates reservation"| node_booking_service
node_booking_service -->|"locks and updates"| node_trip_catalog
node_booking_service -->|"creates"| node_reservations
node_booking_service -->|"checks and reserves"| node_reserved_seats
node_booking_flow -->|"reads seats"| node_reserved_seats
node_booking_flow -->|"reads and cancels"| node_reservations
node_booking_flow -->|"redirects to"| node_payment
node_traveler -.->|"pays"| node_payment
node_traveler -.->|"views bookings"| node_user_bookings
node_admin_actor -.->|"manages buses"| node_admin_buses
node_admin_buses -->|"manages"| node_bus_fleet
node_admin_actor -.->|"manages trips"| node_admin_trips
node_admin_trips -->|"manages"| node_trip_catalog
node_admin_trips -->|"uses buses"| node_bus_fleet
node_admin_actor -.->|"manages reservations"| node_admin_reservations
node_admin_actor -.->|"generates schedules"| node_admin_schedule
node_admin_schedule -.->|"delegates to"| node_schedule_generation
node_schedule_generation -->|"loads buses"| node_bus_fleet
node_schedule_generation -->|"creates trips"| node_trip_catalog
node_api_trips -->|"queries"| node_trip_catalog
node_api_reservations -->|"delegates to"| node_booking_service

click node_auth "https://github.com/sinnca/bus-reservation-system/blob/main/app/Http/Controllers/Auth/AuthenticatedSessionController.php"
click node_api_auth "https://github.com/sinnca/bus-reservation-system/blob/main/app/Http/Controllers/Api/AuthController.php"
click node_api_trips "https://github.com/sinnca/bus-reservation-system/blob/main/app/Http/Controllers/Api/TripController.php"
click node_api_reservations "https://github.com/sinnca/bus-reservation-system/blob/main/app/Http/Controllers/Api/ReservationController.php"
click node_app_user "https://github.com/sinnca/bus-reservation-system/blob/main/app/Models/User.php"
click node_trip_search "https://github.com/sinnca/bus-reservation-system/blob/main/app/Http/Controllers/User/TripController.php"
click node_trip_catalog "https://github.com/sinnca/bus-reservation-system/blob/main/app/Models/Trip.php"
click node_bus_fleet "https://github.com/sinnca/bus-reservation-system/blob/main/app/Models/Bus.php"
click node_schedule_generation "https://github.com/sinnca/bus-reservation-system/blob/main/app/Services/ScheduleGeneratorService.php"
click node_booking_flow "https://github.com/sinnca/bus-reservation-system/blob/main/app/Http/Controllers/User/BookingController.php"
click node_booking_service "https://github.com/sinnca/bus-reservation-system/blob/main/app/Services/BookingService.php"
click node_reservations "https://github.com/sinnca/bus-reservation-system/blob/main/app/Models/Reservation.php"
click node_reserved_seats "https://github.com/sinnca/bus-reservation-system/blob/main/app/Models/ReservedSeat.php"
click node_payment "https://github.com/sinnca/bus-reservation-system/blob/main/app/Http/Controllers/User/PaymentController.php"
click node_user_bookings "https://github.com/sinnca/bus-reservation-system/blob/main/app/Http/Controllers/User/DashboardController.php"
click node_admin_buses "https://github.com/sinnca/bus-reservation-system/blob/main/app/Http/Controllers/Admin/BusController.php"
click node_admin_trips "https://github.com/sinnca/bus-reservation-system/blob/main/app/Http/Controllers/Admin/TripController.php"
click node_admin_reservations "https://github.com/sinnca/bus-reservation-system/blob/main/app/Http/Controllers/Admin/ReservationController.php"
click node_admin_schedule "https://github.com/sinnca/bus-reservation-system/blob/main/app/Http/Controllers/Admin/ScheduleGeneratorController.php"

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_auth,node_api_auth,node_api_trips,node_api_reservations,node_app_user toneBlue
class node_trip_search,node_trip_catalog,node_bus_fleet,node_schedule_generation toneAmber
class node_booking_flow,node_booking_service,node_reservations,node_reserved_seats,node_payment,node_user_bookings toneMint
class node_admin_buses,node_admin_trips,node_admin_reservations,node_admin_schedule toneRose
class node_traveler,node_admin_actor toneIndigo
```

## Components

### Identity and API

- [Authentication](https://github.com/sinnca/bus-reservation-system/blob/main/app/Http/Controllers/Auth/AuthenticatedSessionController.php): `app/Http/Controllers/Auth/AuthenticatedSessionController.php`
- [API Authentication](https://github.com/sinnca/bus-reservation-system/blob/main/app/Http/Controllers/Api/AuthController.php): `app/Http/Controllers/Api/AuthController.php`
- [Trip API](https://github.com/sinnca/bus-reservation-system/blob/main/app/Http/Controllers/Api/TripController.php): `app/Http/Controllers/Api/TripController.php`
- [Reservation API](https://github.com/sinnca/bus-reservation-system/blob/main/app/Http/Controllers/Api/ReservationController.php): `app/Http/Controllers/Api/ReservationController.php`
- [User](https://github.com/sinnca/bus-reservation-system/blob/main/app/Models/User.php): `app/Models/User.php`

### Trip Operations

- [Trip Search](https://github.com/sinnca/bus-reservation-system/blob/main/app/Http/Controllers/User/TripController.php): `app/Http/Controllers/User/TripController.php`
- [Trips](https://github.com/sinnca/bus-reservation-system/blob/main/app/Models/Trip.php): `app/Models/Trip.php`
- [Buses](https://github.com/sinnca/bus-reservation-system/blob/main/app/Models/Bus.php): `app/Models/Bus.php`
- [Schedule Generation](https://github.com/sinnca/bus-reservation-system/blob/main/app/Services/ScheduleGeneratorService.php): `app/Services/ScheduleGeneratorService.php`

### Reservations and Payment

- [Booking and Seats](https://github.com/sinnca/bus-reservation-system/blob/main/app/Http/Controllers/User/BookingController.php): `app/Http/Controllers/User/BookingController.php`
- [Booking Service](https://github.com/sinnca/bus-reservation-system/blob/main/app/Services/BookingService.php): `app/Services/BookingService.php`
- [Reservations](https://github.com/sinnca/bus-reservation-system/blob/main/app/Models/Reservation.php): `app/Models/Reservation.php`
- [Reserved Seats](https://github.com/sinnca/bus-reservation-system/blob/main/app/Models/ReservedSeat.php): `app/Models/ReservedSeat.php`
- [Payment](https://github.com/sinnca/bus-reservation-system/blob/main/app/Http/Controllers/User/PaymentController.php): `app/Http/Controllers/User/PaymentController.php`
- [Booking Dashboard](https://github.com/sinnca/bus-reservation-system/blob/main/app/Http/Controllers/User/DashboardController.php): `app/Http/Controllers/User/DashboardController.php`

### Administration

- [Bus Management](https://github.com/sinnca/bus-reservation-system/blob/main/app/Http/Controllers/Admin/BusController.php): `app/Http/Controllers/Admin/BusController.php`
- [Trip Management](https://github.com/sinnca/bus-reservation-system/blob/main/app/Http/Controllers/Admin/TripController.php): `app/Http/Controllers/Admin/TripController.php`
- [Reservation Management](https://github.com/sinnca/bus-reservation-system/blob/main/app/Http/Controllers/Admin/ReservationController.php): `app/Http/Controllers/Admin/ReservationController.php`
- [Schedule Management](https://github.com/sinnca/bus-reservation-system/blob/main/app/Http/Controllers/Admin/ScheduleGeneratorController.php): `app/Http/Controllers/Admin/ScheduleGeneratorController.php`

### Other components

- **Traveler**
- **Administrator**

## Connections

- Traveler → Authentication: signs in
- Authentication → User: authenticates
- Traveler → Trip Search: searches trips
- Trip Search → Trips: queries (evidence: `app/Http/Controllers/User/TripController.php`)
- Traveler → Booking and Seats: selects seats
- Booking and Seats → Booking Service: creates reservation (evidence: `app/Http/Controllers/User/BookingController.php`)
- Booking Service → Trips: locks and updates (evidence: `app/Services/BookingService.php`)
- Booking Service → Reservations: creates (evidence: `app/Services/BookingService.php`)
- Booking Service → Reserved Seats: checks and reserves (evidence: `app/Services/BookingService.php`)
- Booking and Seats → Reserved Seats: reads seats (evidence: `app/Http/Controllers/User/BookingController.php`)
- Booking and Seats → Reservations: reads and cancels (evidence: `app/Http/Controllers/User/BookingController.php`)
- Booking and Seats → Payment: redirects to (evidence: `app/Http/Controllers/User/BookingController.php`)
- Traveler → Payment: pays
- Traveler → Booking Dashboard: views bookings
- Administrator → Bus Management: manages buses
- Bus Management → Buses: manages (evidence: `app/Http/Controllers/Admin/BusController.php`)
- Administrator → Trip Management: manages trips
- Trip Management → Trips: manages (evidence: `app/Http/Controllers/Admin/TripController.php`)
- Trip Management → Buses: uses buses (evidence: `app/Http/Controllers/Admin/TripController.php`)
- Administrator → Reservation Management: manages reservations
- Administrator → Schedule Management: generates schedules
- Schedule Management → Schedule Generation: delegates to
- Schedule Generation → Buses: loads buses (evidence: `app/Services/ScheduleGeneratorService.php`)
- Schedule Generation → Trips: creates trips (evidence: `app/Services/ScheduleGeneratorService.php`)
- Trip API → Trips: queries (evidence: `app/Http/Controllers/Api/TripController.php`)
- Reservation API → Booking Service: delegates to (evidence: `app/Http/Controllers/Api/ReservationController.php`)
