# dangtoan06/badminton-booking architecture

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

- Interactive diagram: https://gitdiagram.com/dangtoan06/badminton-booking
- Repository: https://github.com/dangtoan06/badminton-booking

## Overview

This repository is a Spring-based badminton court booking backend. Its tree exposes customer booking, manager court/file management, user administration, and authentication/password functionality, backed by service, repository, and entity layers. The README is empty and no application source was sampled, so internal calls and external-service wiring cannot be verified; the graph shows the HTTP entry points and the visible architectural components without inventing those links.

Main entry points: [`src/main/java/com/example/badmintonbooking/controller/customer/CustomerBookingController.java`](https://github.com/dangtoan06/badminton-booking/blob/main/src/main/java/com/example/badmintonbooking/controller/customer/CustomerBookingController.java) (Customer Booking API), [`src/main/java/com/example/badmintonbooking/controller/manager/ManagerBookingController.java`](https://github.com/dangtoan06/badminton-booking/blob/main/src/main/java/com/example/badmintonbooking/controller/manager/ManagerBookingController.java) (Manager Booking API), [`src/main/java/com/example/badmintonbooking/controller/manager/ManagerFileController.java`](https://github.com/dangtoan06/badminton-booking/blob/main/src/main/java/com/example/badmintonbooking/controller/manager/ManagerFileController.java) (Manager File API), [`src/main/java/com/example/badmintonbooking/controller/admin/AdminUserController.java`](https://github.com/dangtoan06/badminton-booking/blob/main/src/main/java/com/example/badmintonbooking/controller/admin/AdminUserController.java) (Admin User API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["HTTP API"]
  node_customer_booking_api["Customer Booking API"]
  node_manager_booking_api["Manager Booking API"]
  node_manager_file_api["Manager File API"]
  node_admin_user_api["Admin User API"]
  node_application["Application"]
end

subgraph group_identity["Identity"]
  node_auth_api["Auth API"]
  node_password_api["Password API"]
  node_auth_service["Authentication Service"]
  node_password_service["Password Service"]
  node_user_service["User Service"]
  node_jwt["JWT Security<br/>[JwtService.java]"]
end

subgraph group_booking["Court Booking"]
  node_booking_service["Booking Service"]
  node_file_service["File Storage Service"]
end

subgraph group_core["Persistence"]
  node_booking_repo["Booking Repository"]
  node_court_repo["Court Repository"]
  node_user_repo["User Repository"]
  node_booking_entity["Booking Data<br/>[Booking.java]"]
  node_court_entity["Court Data<br/>[Court.java]"]
  node_user_entity["User Data<br/>[User.java]"]
end

node_customer(("Customer"))
node_manager(("Manager"))
node_admin(("Administrator"))

node_customer -->|"booking requests"| node_customer_booking_api
node_manager -->|"booking management"| node_manager_booking_api
node_manager -->|"file management"| node_manager_file_api
node_admin -->|"user management"| node_admin_user_api
node_customer -->|"authentication"| node_auth_api

click node_auth_api "https://github.com/dangtoan06/badminton-booking/blob/main/src/main/java/com/example/badmintonbooking/controller/AuthController.java"
click node_password_api "https://github.com/dangtoan06/badminton-booking/blob/main/src/main/java/com/example/badmintonbooking/controller/PasswordController.java"
click node_customer_booking_api "https://github.com/dangtoan06/badminton-booking/blob/main/src/main/java/com/example/badmintonbooking/controller/customer/CustomerBookingController.java"
click node_manager_booking_api "https://github.com/dangtoan06/badminton-booking/blob/main/src/main/java/com/example/badmintonbooking/controller/manager/ManagerBookingController.java"
click node_manager_file_api "https://github.com/dangtoan06/badminton-booking/blob/main/src/main/java/com/example/badmintonbooking/controller/manager/ManagerFileController.java"
click node_admin_user_api "https://github.com/dangtoan06/badminton-booking/blob/main/src/main/java/com/example/badmintonbooking/controller/admin/AdminUserController.java"
click node_auth_service "https://github.com/dangtoan06/badminton-booking/blob/main/src/main/java/com/example/badmintonbooking/service/impl/AuthServiceImpl.java"
click node_password_service "https://github.com/dangtoan06/badminton-booking/blob/main/src/main/java/com/example/badmintonbooking/service/impl/PasswordServiceImpl.java"
click node_user_service "https://github.com/dangtoan06/badminton-booking/blob/main/src/main/java/com/example/badmintonbooking/service/impl/UserServiceImpl.java"
click node_jwt "https://github.com/dangtoan06/badminton-booking/blob/main/src/main/java/com/example/badmintonbooking/security/jwt/JwtService.java"
click node_booking_service "https://github.com/dangtoan06/badminton-booking/blob/main/src/main/java/com/example/badmintonbooking/service/impl/BookingServiceImpl.java"
click node_file_service "https://github.com/dangtoan06/badminton-booking/blob/main/src/main/java/com/example/badmintonbooking/service/impl/FileStorageServiceImpl.java"
click node_booking_repo "https://github.com/dangtoan06/badminton-booking/blob/main/src/main/java/com/example/badmintonbooking/repository/BookingRepository.java"
click node_court_repo "https://github.com/dangtoan06/badminton-booking/blob/main/src/main/java/com/example/badmintonbooking/repository/CourtRepository.java"
click node_user_repo "https://github.com/dangtoan06/badminton-booking/blob/main/src/main/java/com/example/badmintonbooking/repository/UserRepository.java"
click node_booking_entity "https://github.com/dangtoan06/badminton-booking/blob/main/src/main/java/com/example/badmintonbooking/entity/Booking.java"
click node_court_entity "https://github.com/dangtoan06/badminton-booking/blob/main/src/main/java/com/example/badmintonbooking/entity/Court.java"
click node_user_entity "https://github.com/dangtoan06/badminton-booking/blob/main/src/main/java/com/example/badmintonbooking/entity/User.java"
click node_application "https://github.com/dangtoan06/badminton-booking/blob/main/src/main/java/com/example/badmintonbooking/BadmintonBookingApplication.java"

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_customer_booking_api,node_manager_booking_api,node_manager_file_api,node_admin_user_api,node_application toneBlue
class node_auth_api,node_password_api,node_auth_service,node_password_service,node_user_service,node_jwt toneAmber
class node_booking_service,node_file_service toneMint
class node_booking_repo,node_court_repo,node_user_repo,node_booking_entity,node_court_entity,node_user_entity toneRose
class node_customer,node_manager,node_admin toneIndigo
```

## Components

### HTTP API

- [Customer Booking API](https://github.com/dangtoan06/badminton-booking/blob/main/src/main/java/com/example/badmintonbooking/controller/customer/CustomerBookingController.java): `src/main/java/com/example/badmintonbooking/controller/customer/CustomerBookingController.java`
- [Manager Booking API](https://github.com/dangtoan06/badminton-booking/blob/main/src/main/java/com/example/badmintonbooking/controller/manager/ManagerBookingController.java): `src/main/java/com/example/badmintonbooking/controller/manager/ManagerBookingController.java`
- [Manager File API](https://github.com/dangtoan06/badminton-booking/blob/main/src/main/java/com/example/badmintonbooking/controller/manager/ManagerFileController.java): `src/main/java/com/example/badmintonbooking/controller/manager/ManagerFileController.java`
- [Admin User API](https://github.com/dangtoan06/badminton-booking/blob/main/src/main/java/com/example/badmintonbooking/controller/admin/AdminUserController.java): `src/main/java/com/example/badmintonbooking/controller/admin/AdminUserController.java`
- [Application](https://github.com/dangtoan06/badminton-booking/blob/main/src/main/java/com/example/badmintonbooking/BadmintonBookingApplication.java): `src/main/java/com/example/badmintonbooking/BadmintonBookingApplication.java`

### Identity

- [Auth API](https://github.com/dangtoan06/badminton-booking/blob/main/src/main/java/com/example/badmintonbooking/controller/AuthController.java): `src/main/java/com/example/badmintonbooking/controller/AuthController.java`
- [Password API](https://github.com/dangtoan06/badminton-booking/blob/main/src/main/java/com/example/badmintonbooking/controller/PasswordController.java): `src/main/java/com/example/badmintonbooking/controller/PasswordController.java`
- [Authentication Service](https://github.com/dangtoan06/badminton-booking/blob/main/src/main/java/com/example/badmintonbooking/service/impl/AuthServiceImpl.java): `src/main/java/com/example/badmintonbooking/service/impl/AuthServiceImpl.java`
- [Password Service](https://github.com/dangtoan06/badminton-booking/blob/main/src/main/java/com/example/badmintonbooking/service/impl/PasswordServiceImpl.java): `src/main/java/com/example/badmintonbooking/service/impl/PasswordServiceImpl.java`
- [User Service](https://github.com/dangtoan06/badminton-booking/blob/main/src/main/java/com/example/badmintonbooking/service/impl/UserServiceImpl.java): `src/main/java/com/example/badmintonbooking/service/impl/UserServiceImpl.java`
- [JWT Security](https://github.com/dangtoan06/badminton-booking/blob/main/src/main/java/com/example/badmintonbooking/security/jwt/JwtService.java): `src/main/java/com/example/badmintonbooking/security/jwt/JwtService.java`

### Court Booking

- [Booking Service](https://github.com/dangtoan06/badminton-booking/blob/main/src/main/java/com/example/badmintonbooking/service/impl/BookingServiceImpl.java): `src/main/java/com/example/badmintonbooking/service/impl/BookingServiceImpl.java`
- [File Storage Service](https://github.com/dangtoan06/badminton-booking/blob/main/src/main/java/com/example/badmintonbooking/service/impl/FileStorageServiceImpl.java): `src/main/java/com/example/badmintonbooking/service/impl/FileStorageServiceImpl.java`

### Persistence

- [Booking Repository](https://github.com/dangtoan06/badminton-booking/blob/main/src/main/java/com/example/badmintonbooking/repository/BookingRepository.java): `src/main/java/com/example/badmintonbooking/repository/BookingRepository.java`
- [Court Repository](https://github.com/dangtoan06/badminton-booking/blob/main/src/main/java/com/example/badmintonbooking/repository/CourtRepository.java): `src/main/java/com/example/badmintonbooking/repository/CourtRepository.java`
- [User Repository](https://github.com/dangtoan06/badminton-booking/blob/main/src/main/java/com/example/badmintonbooking/repository/UserRepository.java): `src/main/java/com/example/badmintonbooking/repository/UserRepository.java`
- [Booking Data](https://github.com/dangtoan06/badminton-booking/blob/main/src/main/java/com/example/badmintonbooking/entity/Booking.java): `src/main/java/com/example/badmintonbooking/entity/Booking.java`
- [Court Data](https://github.com/dangtoan06/badminton-booking/blob/main/src/main/java/com/example/badmintonbooking/entity/Court.java): `src/main/java/com/example/badmintonbooking/entity/Court.java`
- [User Data](https://github.com/dangtoan06/badminton-booking/blob/main/src/main/java/com/example/badmintonbooking/entity/User.java): `src/main/java/com/example/badmintonbooking/entity/User.java`

### Other components

- **Customer**
- **Manager**
- **Administrator**

## Connections

- Customer → Customer Booking API: booking requests
- Manager → Manager Booking API: booking management
- Manager → Manager File API: file management
- Administrator → Admin User API: user management
- Customer → Auth API: authentication
