# bt2701/bus-ticket-booking-backend architecture

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

- Interactive diagram: https://gitdiagram.com/bt2701/bus-ticket-booking-backend
- Repository: https://github.com/bt2701/bus-ticket-booking-backend

## Overview

This is a Spring Boot REST backend for bus-ticket booking, serving customers, staff, and admins. The principal product workflow is interacting with the booking API; the tree also identifies distinct booking, payment, and notification capabilities, plus authentication and role management. The README documents JWT/Spring Security, social login, VNPay, MySQL, and email. Source excerpts were unavailable, so the graph avoids asserting controller-to-service calls or other internal wiring that the documentation does not establish.

Main entry points: [`src/main/java/com/example/demo/configurations/VNPayService.java`](https://github.com/bt2701/bus-ticket-booking-backend/blob/main/src/main/java/com/example/demo/configurations/VNPayService.java) (VNPay integration), [`src/main/java/com/example/demo/Service/EmailService.java`](https://github.com/bt2701/bus-ticket-booking-backend/blob/main/src/main/java/com/example/demo/Service/EmailService.java) (Email service), [`src/main/java/com/example/demo/Controller`](https://github.com/bt2701/bus-ticket-booking-backend/tree/main/src/main/java/com/example/demo/Controller) (REST controllers), [`src/main/java/com/example/demo/configurations/OAuth2LoginSuccessHandler.java`](https://github.com/bt2701/bus-ticket-booking-backend/blob/main/src/main/java/com/example/demo/configurations/OAuth2LoginSuccessHandler.java) (Social login)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["REST API"]
  node_api["REST controllers"]
end

subgraph group_booking["Booking Operations"]
  node_booking["Bookings<br/>[BookingCTL.java]"]
  node_search["Search trips<br/>[SearchCTL.java]"]
  node_schedules["Schedules and routes<br/>[ScheduleCTL.java]"]
  node_fleet["Bus and driver<br/>[BusCTL.java]"]
end

subgraph group_identity["Identity and Access"]
  node_security["JWT security"]
  node_jwt["JWT filter"]
  node_oauth["Social login"]
  node_roles["Role access<br/>[RoleCTL.java]"]
end

subgraph group_integrations["Payments and Messaging"]
  node_payments["Payments<br/>[PaymentCTL.java]"]
  node_vnpay["VNPay integration<br/>[VNPayService.java]"]
  node_notifications["Customer notifications"]
  node_email["Email service<br/>[EmailService.java]"]
end

subgraph group_persistence["Persistence"]
  node_repositories["Data repositories"]
  node_mysql[("MySQL database<br/>[booking.sql]")]
end

node_clients(("API users"))
node_socialproviders["Google, Facebook, GitHub"]
node_vnpayprovider["VNPay"]
node_mailprovider["Mail service"]

node_clients -->|"send API requests"| node_api
node_socialproviders -.->|"social login"| node_oauth
node_vnpay -.->|"payment integration"| node_vnpayprovider
node_email -.->|"send email"| node_mailprovider

click node_api "https://github.com/bt2701/bus-ticket-booking-backend/tree/main/src/main/java/com/example/demo/Controller"
click node_booking "https://github.com/bt2701/bus-ticket-booking-backend/blob/main/src/main/java/com/example/demo/Controller/BookingCTL.java"
click node_search "https://github.com/bt2701/bus-ticket-booking-backend/blob/main/src/main/java/com/example/demo/Controller/SearchCTL.java"
click node_schedules "https://github.com/bt2701/bus-ticket-booking-backend/blob/main/src/main/java/com/example/demo/Controller/ScheduleCTL.java"
click node_fleet "https://github.com/bt2701/bus-ticket-booking-backend/blob/main/src/main/java/com/example/demo/Controller/BusCTL.java"
click node_payments "https://github.com/bt2701/bus-ticket-booking-backend/blob/main/src/main/java/com/example/demo/Controller/PaymentCTL.java"
click node_vnpay "https://github.com/bt2701/bus-ticket-booking-backend/blob/main/src/main/java/com/example/demo/configurations/VNPayService.java"
click node_notifications "https://github.com/bt2701/bus-ticket-booking-backend/blob/main/src/main/java/com/example/demo/Controller/NotificationCTL.java"
click node_email "https://github.com/bt2701/bus-ticket-booking-backend/blob/main/src/main/java/com/example/demo/Service/EmailService.java"
click node_security "https://github.com/bt2701/bus-ticket-booking-backend/blob/main/src/main/java/com/example/demo/configurations/SecurityConfig.java"
click node_jwt "https://github.com/bt2701/bus-ticket-booking-backend/blob/main/src/main/java/com/example/demo/filter/JwtTokenFilter.java"
click node_oauth "https://github.com/bt2701/bus-ticket-booking-backend/blob/main/src/main/java/com/example/demo/configurations/OAuth2LoginSuccessHandler.java"
click node_roles "https://github.com/bt2701/bus-ticket-booking-backend/blob/main/src/main/java/com/example/demo/Controller/RoleCTL.java"
click node_repositories "https://github.com/bt2701/bus-ticket-booking-backend/tree/main/src/main/java/com/example/demo/Repository"
click node_mysql "https://github.com/bt2701/bus-ticket-booking-backend/blob/main/database/booking.sql"

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_api,node_clients toneBlue
class node_booking,node_search,node_schedules,node_fleet toneAmber
class node_security,node_jwt,node_oauth,node_roles toneMint
class node_payments,node_vnpay,node_notifications,node_email toneRose
class node_repositories,node_mysql,node_socialproviders,node_vnpayprovider,node_mailprovider toneIndigo
```

## Components

### REST API

- [REST controllers](https://github.com/bt2701/bus-ticket-booking-backend/tree/main/src/main/java/com/example/demo/Controller): `src/main/java/com/example/demo/Controller`

### Booking Operations

- [Bookings](https://github.com/bt2701/bus-ticket-booking-backend/blob/main/src/main/java/com/example/demo/Controller/BookingCTL.java): `src/main/java/com/example/demo/Controller/BookingCTL.java`
- [Search trips](https://github.com/bt2701/bus-ticket-booking-backend/blob/main/src/main/java/com/example/demo/Controller/SearchCTL.java): `src/main/java/com/example/demo/Controller/SearchCTL.java`
- [Schedules and routes](https://github.com/bt2701/bus-ticket-booking-backend/blob/main/src/main/java/com/example/demo/Controller/ScheduleCTL.java): `src/main/java/com/example/demo/Controller/ScheduleCTL.java`
- [Bus and driver](https://github.com/bt2701/bus-ticket-booking-backend/blob/main/src/main/java/com/example/demo/Controller/BusCTL.java): `src/main/java/com/example/demo/Controller/BusCTL.java`

### Identity and Access

- [JWT security](https://github.com/bt2701/bus-ticket-booking-backend/blob/main/src/main/java/com/example/demo/configurations/SecurityConfig.java): `src/main/java/com/example/demo/configurations/SecurityConfig.java`
- [JWT filter](https://github.com/bt2701/bus-ticket-booking-backend/blob/main/src/main/java/com/example/demo/filter/JwtTokenFilter.java): `src/main/java/com/example/demo/filter/JwtTokenFilter.java`
- [Social login](https://github.com/bt2701/bus-ticket-booking-backend/blob/main/src/main/java/com/example/demo/configurations/OAuth2LoginSuccessHandler.java): `src/main/java/com/example/demo/configurations/OAuth2LoginSuccessHandler.java`
- [Role access](https://github.com/bt2701/bus-ticket-booking-backend/blob/main/src/main/java/com/example/demo/Controller/RoleCTL.java): `src/main/java/com/example/demo/Controller/RoleCTL.java`

### Payments and Messaging

- [Payments](https://github.com/bt2701/bus-ticket-booking-backend/blob/main/src/main/java/com/example/demo/Controller/PaymentCTL.java): `src/main/java/com/example/demo/Controller/PaymentCTL.java`
- [VNPay integration](https://github.com/bt2701/bus-ticket-booking-backend/blob/main/src/main/java/com/example/demo/configurations/VNPayService.java): `src/main/java/com/example/demo/configurations/VNPayService.java`
- [Customer notifications](https://github.com/bt2701/bus-ticket-booking-backend/blob/main/src/main/java/com/example/demo/Controller/NotificationCTL.java): `src/main/java/com/example/demo/Controller/NotificationCTL.java`
- [Email service](https://github.com/bt2701/bus-ticket-booking-backend/blob/main/src/main/java/com/example/demo/Service/EmailService.java): `src/main/java/com/example/demo/Service/EmailService.java`

### Persistence

- [Data repositories](https://github.com/bt2701/bus-ticket-booking-backend/tree/main/src/main/java/com/example/demo/Repository): `src/main/java/com/example/demo/Repository`
- [MySQL database](https://github.com/bt2701/bus-ticket-booking-backend/blob/main/database/booking.sql): `database/booking.sql`

### Other components

- **API users**
- **Google, Facebook, GitHub**
- **VNPay**
- **Mail service**

## Connections

- API users → REST controllers: send API requests
- Google, Facebook, GitHub → Social login: social login
- VNPay integration → VNPay: payment integration
- Email service → Mail service: send email
