# l-xc7788/restful-booker-platform architecture

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

- Interactive diagram: https://gitdiagram.com/l-xc7788/restful-booker-platform
- Repository: https://github.com/l-xc7788/restful-booker-platform

## Overview

Restful Booker Platform is a Bed-and-Breakfast booking system exposed as cooperating services. Users authenticate, search rooms and availability, create or manage bookings, and can view reports; booking creation can also produce a guest message. Authentication gates protected mutations and booking reads. The graph follows the sampled controllers and services; the README describes a site, but its frontend source is not present in this tree. Edges between services are included only where sampled request clients show the call.

Main entry points: [`booking/src/main/java/com/automationintesting/service/BookingService.java`](https://github.com/l-xc7788/restful-booker-platform/blob/trunk/booking/src/main/java/com/automationintesting/service/BookingService.java) (Booking service), [`room/src/main/java/com/automationintesting/service/RoomService.java`](https://github.com/l-xc7788/restful-booker-platform/blob/trunk/room/src/main/java/com/automationintesting/service/RoomService.java) (Room service), [`report/src/main/java/com/automationintesting/service/ReportService.java`](https://github.com/l-xc7788/restful-booker-platform/blob/trunk/report/src/main/java/com/automationintesting/service/ReportService.java) (Report service), [`auth/src/main/java/com/automationintesting/api/AuthController.java`](https://github.com/l-xc7788/restful-booker-platform/blob/trunk/auth/src/main/java/com/automationintesting/api/AuthController.java) (Auth API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_authentication["Authentication"]
  node_auth_api["Auth API"]
  node_auth_logic["Auth service<br/>[AuthService.java]"]
  node_auth_store[("Token store<br/>[AuthDB.java]")]
end

subgraph group_booking["Bookings"]
  node_booking_api["Booking API"]
  node_booking_logic["Booking service"]
  node_booking_store[("Booking store<br/>[BookingDB.java]")]
  node_booking_auth_client["Auth client<br/>[AuthRequests.java]"]
  node_booking_message_client["Message client"]
end

subgraph group_rooms["Rooms"]
  node_room_api["Room API"]
  node_room_logic["Room service<br/>[RoomService.java]"]
  node_room_store[("Room store<br/>[RoomDB.java]")]
  node_room_auth_client["Auth client<br/>[AuthRequests.java]"]
  node_room_booking_client["Booking client"]
end

subgraph group_guest_messages["Guest messages"]
  node_message_api["Message API"]
  node_message_logic["Message service"]
  node_message_store[("Message store<br/>[MessageDB.java]")]
end

subgraph group_reporting["Reporting"]
  node_report_api["Report API"]
  node_report_logic["Report service<br/>[ReportService.java]"]
  node_report_room_client["Room client<br/>[RoomRequests.java]"]
  node_report_booking_client["Booking client"]
end

subgraph group_branding["Branding"]
  node_branding_api["Branding API"]
  node_branding_logic["Branding service"]
  node_branding_store[("Branding store<br/>[BrandingDB.java]")]
end

node_user(("User / client"))
node_auth_service_external["Auth service"]
node_booking_service_external["Booking service"]
node_room_service_external["Room service"]
node_message_service_external["Message service"]

node_user -->|"login / validate"| node_auth_api
node_auth_api -->|"dispatches"| node_auth_logic
node_auth_logic -->|"checks / stores tokens"| node_auth_store
node_user -->|"booking requests"| node_booking_api
node_booking_api -->|"dispatches"| node_booking_logic
node_booking_logic -->|"checks token"| node_booking_auth_client
node_booking_auth_client -->|"validates"| node_auth_service_external
node_booking_logic -->|"reads / writes"| node_booking_store
node_booking_logic -->|"sends guest message"| node_booking_message_client
node_booking_message_client -->|"creates message"| node_message_service_external
node_user -->|"room requests"| node_room_api
node_room_api -->|"dispatches"| node_room_logic
node_room_logic -->|"reads / writes"| node_room_store
node_room_logic -->|"checks token"| node_room_auth_client
node_room_auth_client -->|"validates"| node_auth_service_external
node_room_logic -->|"checks availability"| node_room_booking_client
node_room_booking_client -->|"queries bookings"| node_booking_service_external
node_user -->|"message requests"| node_message_api
node_message_api -->|"dispatches"| node_message_logic
node_message_logic -->|"reads / writes"| node_message_store
node_user -->|"report request"| node_report_api
node_report_api -->|"dispatches"| node_report_logic
node_report_logic -->|"fetches rooms"| node_report_room_client
node_report_room_client -->|"queries rooms"| node_room_service_external
node_report_logic -->|"fetches bookings"| node_report_booking_client
node_report_booking_client -->|"queries bookings"| node_booking_service_external
node_user -->|"branding request"| node_branding_api
node_branding_api -->|"dispatches"| node_branding_logic
node_branding_logic -->|"reads / updates"| node_branding_store

click node_auth_api "https://github.com/l-xc7788/restful-booker-platform/blob/trunk/auth/src/main/java/com/automationintesting/api/AuthController.java"
click node_auth_logic "https://github.com/l-xc7788/restful-booker-platform/blob/trunk/auth/src/main/java/com/automationintesting/service/AuthService.java"
click node_auth_store "https://github.com/l-xc7788/restful-booker-platform/blob/trunk/auth/src/main/java/com/automationintesting/db/AuthDB.java"
click node_booking_api "https://github.com/l-xc7788/restful-booker-platform/blob/trunk/booking/src/main/java/com/automationintesting/api/BookingController.java"
click node_booking_logic "https://github.com/l-xc7788/restful-booker-platform/blob/trunk/booking/src/main/java/com/automationintesting/service/BookingService.java"
click node_booking_store "https://github.com/l-xc7788/restful-booker-platform/blob/trunk/booking/src/main/java/com/automationintesting/db/BookingDB.java"
click node_booking_auth_client "https://github.com/l-xc7788/restful-booker-platform/blob/trunk/booking/src/main/java/com/automationintesting/requests/AuthRequests.java"
click node_booking_message_client "https://github.com/l-xc7788/restful-booker-platform/blob/trunk/booking/src/main/java/com/automationintesting/requests/MessageRequests.java"
click node_room_api "https://github.com/l-xc7788/restful-booker-platform/blob/trunk/room/src/main/java/com/automationintesting/api/RoomController.java"
click node_room_logic "https://github.com/l-xc7788/restful-booker-platform/blob/trunk/room/src/main/java/com/automationintesting/service/RoomService.java"
click node_room_store "https://github.com/l-xc7788/restful-booker-platform/blob/trunk/room/src/main/java/com/automationintesting/db/RoomDB.java"
click node_room_auth_client "https://github.com/l-xc7788/restful-booker-platform/blob/trunk/room/src/main/java/com/automationintesting/requests/AuthRequests.java"
click node_room_booking_client "https://github.com/l-xc7788/restful-booker-platform/blob/trunk/room/src/main/java/com/automationintesting/requests/BookingRequests.java"
click node_message_api "https://github.com/l-xc7788/restful-booker-platform/blob/trunk/message/src/main/java/com/automationintesting/api/MessageController.java"
click node_message_logic "https://github.com/l-xc7788/restful-booker-platform/blob/trunk/message/src/main/java/com/automationintesting/service/MessageService.java"
click node_message_store "https://github.com/l-xc7788/restful-booker-platform/blob/trunk/message/src/main/java/com/automationintesting/db/MessageDB.java"
click node_report_api "https://github.com/l-xc7788/restful-booker-platform/blob/trunk/report/src/main/java/com/automationintesting/api/ReportController.java"
click node_report_logic "https://github.com/l-xc7788/restful-booker-platform/blob/trunk/report/src/main/java/com/automationintesting/service/ReportService.java"
click node_report_room_client "https://github.com/l-xc7788/restful-booker-platform/blob/trunk/report/src/main/java/com/automationintesting/requests/RoomRequests.java"
click node_report_booking_client "https://github.com/l-xc7788/restful-booker-platform/blob/trunk/report/src/main/java/com/automationintesting/requests/BookingRequests.java"
click node_branding_api "https://github.com/l-xc7788/restful-booker-platform/blob/trunk/branding/src/main/java/com/automationintesting/api/BrandingController.java"
click node_branding_logic "https://github.com/l-xc7788/restful-booker-platform/blob/trunk/branding/src/main/java/com/automationintesting/service/BrandingService.java"
click node_branding_store "https://github.com/l-xc7788/restful-booker-platform/blob/trunk/branding/src/main/java/com/automationintesting/db/BrandingDB.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_auth_api,node_auth_logic,node_auth_store,node_user toneBlue
class node_booking_api,node_booking_logic,node_booking_store,node_booking_auth_client,node_booking_message_client toneAmber
class node_room_api,node_room_logic,node_room_store,node_room_auth_client,node_room_booking_client toneMint
class node_message_api,node_message_logic,node_message_store toneRose
class node_report_api,node_report_logic,node_report_room_client,node_report_booking_client,node_auth_service_external,node_booking_service_external,node_room_service_external,node_message_service_external toneIndigo
class node_branding_api,node_branding_logic,node_branding_store toneTeal
```

## Components

### Authentication

- [Auth API](https://github.com/l-xc7788/restful-booker-platform/blob/trunk/auth/src/main/java/com/automationintesting/api/AuthController.java): `auth/src/main/java/com/automationintesting/api/AuthController.java`
- [Auth service](https://github.com/l-xc7788/restful-booker-platform/blob/trunk/auth/src/main/java/com/automationintesting/service/AuthService.java): `auth/src/main/java/com/automationintesting/service/AuthService.java`
- [Token store](https://github.com/l-xc7788/restful-booker-platform/blob/trunk/auth/src/main/java/com/automationintesting/db/AuthDB.java): `auth/src/main/java/com/automationintesting/db/AuthDB.java`

### Bookings

- [Booking API](https://github.com/l-xc7788/restful-booker-platform/blob/trunk/booking/src/main/java/com/automationintesting/api/BookingController.java): `booking/src/main/java/com/automationintesting/api/BookingController.java`
- [Booking service](https://github.com/l-xc7788/restful-booker-platform/blob/trunk/booking/src/main/java/com/automationintesting/service/BookingService.java): `booking/src/main/java/com/automationintesting/service/BookingService.java`
- [Booking store](https://github.com/l-xc7788/restful-booker-platform/blob/trunk/booking/src/main/java/com/automationintesting/db/BookingDB.java): `booking/src/main/java/com/automationintesting/db/BookingDB.java`
- [Auth client](https://github.com/l-xc7788/restful-booker-platform/blob/trunk/booking/src/main/java/com/automationintesting/requests/AuthRequests.java): `booking/src/main/java/com/automationintesting/requests/AuthRequests.java`
- [Message client](https://github.com/l-xc7788/restful-booker-platform/blob/trunk/booking/src/main/java/com/automationintesting/requests/MessageRequests.java): `booking/src/main/java/com/automationintesting/requests/MessageRequests.java`

### Rooms

- [Room API](https://github.com/l-xc7788/restful-booker-platform/blob/trunk/room/src/main/java/com/automationintesting/api/RoomController.java): `room/src/main/java/com/automationintesting/api/RoomController.java`
- [Room service](https://github.com/l-xc7788/restful-booker-platform/blob/trunk/room/src/main/java/com/automationintesting/service/RoomService.java): `room/src/main/java/com/automationintesting/service/RoomService.java`
- [Room store](https://github.com/l-xc7788/restful-booker-platform/blob/trunk/room/src/main/java/com/automationintesting/db/RoomDB.java): `room/src/main/java/com/automationintesting/db/RoomDB.java`
- [Auth client](https://github.com/l-xc7788/restful-booker-platform/blob/trunk/room/src/main/java/com/automationintesting/requests/AuthRequests.java): `room/src/main/java/com/automationintesting/requests/AuthRequests.java`
- [Booking client](https://github.com/l-xc7788/restful-booker-platform/blob/trunk/room/src/main/java/com/automationintesting/requests/BookingRequests.java): `room/src/main/java/com/automationintesting/requests/BookingRequests.java`

### Guest messages

- [Message API](https://github.com/l-xc7788/restful-booker-platform/blob/trunk/message/src/main/java/com/automationintesting/api/MessageController.java): `message/src/main/java/com/automationintesting/api/MessageController.java`
- [Message service](https://github.com/l-xc7788/restful-booker-platform/blob/trunk/message/src/main/java/com/automationintesting/service/MessageService.java): `message/src/main/java/com/automationintesting/service/MessageService.java`
- [Message store](https://github.com/l-xc7788/restful-booker-platform/blob/trunk/message/src/main/java/com/automationintesting/db/MessageDB.java): `message/src/main/java/com/automationintesting/db/MessageDB.java`

### Reporting

- [Report API](https://github.com/l-xc7788/restful-booker-platform/blob/trunk/report/src/main/java/com/automationintesting/api/ReportController.java): `report/src/main/java/com/automationintesting/api/ReportController.java`
- [Report service](https://github.com/l-xc7788/restful-booker-platform/blob/trunk/report/src/main/java/com/automationintesting/service/ReportService.java): `report/src/main/java/com/automationintesting/service/ReportService.java`
- [Room client](https://github.com/l-xc7788/restful-booker-platform/blob/trunk/report/src/main/java/com/automationintesting/requests/RoomRequests.java): `report/src/main/java/com/automationintesting/requests/RoomRequests.java`
- [Booking client](https://github.com/l-xc7788/restful-booker-platform/blob/trunk/report/src/main/java/com/automationintesting/requests/BookingRequests.java): `report/src/main/java/com/automationintesting/requests/BookingRequests.java`

### Branding

- [Branding API](https://github.com/l-xc7788/restful-booker-platform/blob/trunk/branding/src/main/java/com/automationintesting/api/BrandingController.java): `branding/src/main/java/com/automationintesting/api/BrandingController.java`
- [Branding service](https://github.com/l-xc7788/restful-booker-platform/blob/trunk/branding/src/main/java/com/automationintesting/service/BrandingService.java): `branding/src/main/java/com/automationintesting/service/BrandingService.java`
- [Branding store](https://github.com/l-xc7788/restful-booker-platform/blob/trunk/branding/src/main/java/com/automationintesting/db/BrandingDB.java): `branding/src/main/java/com/automationintesting/db/BrandingDB.java`

### Other components

- **User / client**
- **Auth service**
- **Booking service**
- **Room service**
- **Message service**

## Connections

- User / client → Auth API: login / validate
- Auth API → Auth service: dispatches
- Auth service → Token store: checks / stores tokens
- User / client → Booking API: booking requests
- Booking API → Booking service: dispatches
- Booking service → Auth client: checks token
- Auth client → Auth service: validates
- Booking service → Booking store: reads / writes
- Booking service → Message client: sends guest message
- Message client → Message service: creates message
- User / client → Room API: room requests
- Room API → Room service: dispatches
- Room service → Room store: reads / writes
- Room service → Auth client: checks token
- Auth client → Auth service: validates
- Room service → Booking client: checks availability
- Booking client → Booking service: queries bookings
- User / client → Message API: message requests
- Message API → Message service: dispatches
- Message service → Message store: reads / writes
- User / client → Report API: report request
- Report API → Report service: dispatches
- Report service → Room client: fetches rooms
- Room client → Room service: queries rooms
- Report service → Booking client: fetches bookings
- Booking client → Booking service: queries bookings
- User / client → Branding API: branding request
- Branding API → Branding service: dispatches
- Branding service → Branding store: reads / updates
