# albatranomar/hotel-management-system architecture

> Architecture diagram of the GitHub repository albatranomar/hotel-management-system, 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/albatranomar/hotel-management-system
- Repository: https://github.com/albatranomar/hotel-management-system

## Overview

This is a Spring-based hotel-management REST API for guest reservations and hotel staff operations. The principal workflow is to search rooms, create a booking for a customer, manage its room assignments and payment, then check the guest in and out; booking service code explicitly updates booking, payment, and room state. Separate API areas cover accounts and authentication, room inventory and amenities, employees, and housekeeping. The graph uses sampled controller/service behavior for detailed links; unsampled capability areas are included from the repository tree and README, with uncertain wiring omitted.

Main entry points: [`application/src/main/java/com/hotel/management/application/controller/BookingController.java`](https://github.com/albatranomar/hotel-management-system/blob/main/application/src/main/java/com/hotel/management/application/controller/BookingController.java) (Booking API), [`application/src/main/java/com/hotel/management/application/service/impl/auth/AuthenticationServiceImpl.java`](https://github.com/albatranomar/hotel-management-system/blob/main/application/src/main/java/com/hotel/management/application/service/impl/auth/AuthenticationServiceImpl.java) (Authentication Service), [`application/src/main/java/com/hotel/management/application/service/impl/BookingServiceImpl.java`](https://github.com/albatranomar/hotel-management-system/blob/main/application/src/main/java/com/hotel/management/application/service/impl/BookingServiceImpl.java) (Booking Service), [`application/src/main/java/com/hotel/management/application/controller/SearchController.java`](https://github.com/albatranomar/hotel-management-system/blob/main/application/src/main/java/com/hotel/management/application/controller/SearchController.java) (Search API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["REST API"]
  node_booking_api["Booking API"]
  node_search_api["Search API"]
  node_room_api["Room API"]
  node_operations_api["Staff APIs"]
  node_auth_api["Authentication API"]
end

subgraph group_stay["Guest Stays"]
  node_booking_service["Booking Service"]
  node_booking_contract["Booking Operations"]
end

subgraph group_property["Property Operations"]
  node_room_service["Room Service"]
  node_room_contract["Room Operations<br/>[RoomService.java]"]
  node_catalog_services["Amenities Services"]
  node_staff_services["Staff Services"]
end

subgraph group_identity["Identity"]
  node_identity_service["Authentication Service"]
  node_jwt_service["JWT Service"]
end

subgraph group_persistence["Persistence"]
  node_payment_store[("Payment Store")]
  node_booking_store[("Booking Store")]
  node_room_store[("Room Store")]
  node_user_store[("User Store")]
  node_token_store[("Token Store")]
  node_database[("Hotel Database")]
end

node_guest(("Guest / Staff"))

node_guest -->|"searches rooms"| node_search_api
node_guest -->|"manages stays"| node_booking_api
node_guest -->|"browses rooms"| node_room_api
node_guest -->|"staff operations"| node_operations_api
node_guest -->|"authenticates"| node_auth_api
node_booking_api -->|"manages booking"| node_booking_service
node_booking_api -->|"checks rooms"| node_room_service
node_booking_api -->|"identifies user"| node_identity_service
node_booking_api -->|"uses operations"| node_booking_contract
node_booking_service -->|"reads/writes"| node_booking_store
node_booking_service -->|"creates payment"| node_payment_store
node_booking_service -->|"updates room state"| node_room_store
node_room_api -->|"manages inventory"| node_room_service
node_room_api -->|"uses operations"| node_room_contract
node_room_service -->|"reads/writes"| node_room_store
node_search_api -->|"searches bookings"| node_booking_contract
node_search_api -->|"searches rooms"| node_room_contract
node_operations_api -->|"manages amenities"| node_catalog_services
node_operations_api -->|"manages staff"| node_staff_services
node_auth_api -->|"authenticates"| node_identity_service
node_identity_service -->|"reads/writes users"| node_user_store
node_identity_service -->|"revokes/saves tokens"| node_token_store
node_identity_service -->|"issues tokens"| node_jwt_service
node_booking_store -->|"persists"| node_database
node_payment_store -->|"persists"| node_database
node_room_store -->|"persists"| node_database
node_user_store -->|"persists"| node_database
node_token_store -->|"persists"| node_database

click node_booking_api "https://github.com/albatranomar/hotel-management-system/blob/main/application/src/main/java/com/hotel/management/application/controller/BookingController.java"
click node_search_api "https://github.com/albatranomar/hotel-management-system/blob/main/application/src/main/java/com/hotel/management/application/controller/SearchController.java"
click node_room_api "https://github.com/albatranomar/hotel-management-system/blob/main/application/src/main/java/com/hotel/management/application/controller/RoomController.java"
click node_operations_api "https://github.com/albatranomar/hotel-management-system/tree/main/application/src/main/java/com/hotel/management/application/controller"
click node_auth_api "https://github.com/albatranomar/hotel-management-system/blob/main/application/src/main/java/com/hotel/management/application/controller/AuthenticationController.java"
click node_booking_service "https://github.com/albatranomar/hotel-management-system/blob/main/application/src/main/java/com/hotel/management/application/service/impl/BookingServiceImpl.java"
click node_booking_contract "https://github.com/albatranomar/hotel-management-system/blob/main/application/src/main/java/com/hotel/management/application/service/BookingService.java"
click node_payment_store "https://github.com/albatranomar/hotel-management-system/blob/main/application/src/main/java/com/hotel/management/application/repository/PaymentRepository.java"
click node_booking_store "https://github.com/albatranomar/hotel-management-system/blob/main/application/src/main/java/com/hotel/management/application/repository/BookingRepository.java"
click node_room_service "https://github.com/albatranomar/hotel-management-system/blob/main/application/src/main/java/com/hotel/management/application/service/impl/RoomServiceImpl.java"
click node_room_contract "https://github.com/albatranomar/hotel-management-system/blob/main/application/src/main/java/com/hotel/management/application/service/RoomService.java"
click node_room_store "https://github.com/albatranomar/hotel-management-system/blob/main/application/src/main/java/com/hotel/management/application/repository/RoomRepository.java"
click node_catalog_services "https://github.com/albatranomar/hotel-management-system/tree/main/application/src/main/java/com/hotel/management/application/service"
click node_staff_services "https://github.com/albatranomar/hotel-management-system/tree/main/application/src/main/java/com/hotel/management/application/service"
click node_identity_service "https://github.com/albatranomar/hotel-management-system/blob/main/application/src/main/java/com/hotel/management/application/service/impl/auth/AuthenticationServiceImpl.java"
click node_jwt_service "https://github.com/albatranomar/hotel-management-system/blob/main/application/src/main/java/com/hotel/management/application/service/impl/auth/JwtServiceImpl.java"
click node_user_store "https://github.com/albatranomar/hotel-management-system/blob/main/application/src/main/java/com/hotel/management/application/repository/UserRepository.java"
click node_token_store "https://github.com/albatranomar/hotel-management-system/blob/main/application/src/main/java/com/hotel/management/application/repository/TokenRepository.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_booking_api,node_search_api,node_room_api,node_operations_api,node_auth_api toneBlue
class node_booking_service,node_booking_contract toneAmber
class node_room_service,node_room_contract,node_catalog_services,node_staff_services toneMint
class node_identity_service,node_jwt_service toneRose
class node_payment_store,node_booking_store,node_room_store,node_user_store,node_token_store,node_database,node_guest toneIndigo
```

## Components

### REST API

- [Booking API](https://github.com/albatranomar/hotel-management-system/blob/main/application/src/main/java/com/hotel/management/application/controller/BookingController.java): `application/src/main/java/com/hotel/management/application/controller/BookingController.java`
- [Search API](https://github.com/albatranomar/hotel-management-system/blob/main/application/src/main/java/com/hotel/management/application/controller/SearchController.java): `application/src/main/java/com/hotel/management/application/controller/SearchController.java`
- [Room API](https://github.com/albatranomar/hotel-management-system/blob/main/application/src/main/java/com/hotel/management/application/controller/RoomController.java): `application/src/main/java/com/hotel/management/application/controller/RoomController.java`
- [Staff APIs](https://github.com/albatranomar/hotel-management-system/tree/main/application/src/main/java/com/hotel/management/application/controller): `application/src/main/java/com/hotel/management/application/controller`
- [Authentication API](https://github.com/albatranomar/hotel-management-system/blob/main/application/src/main/java/com/hotel/management/application/controller/AuthenticationController.java): `application/src/main/java/com/hotel/management/application/controller/AuthenticationController.java`

### Guest Stays

- [Booking Service](https://github.com/albatranomar/hotel-management-system/blob/main/application/src/main/java/com/hotel/management/application/service/impl/BookingServiceImpl.java): `application/src/main/java/com/hotel/management/application/service/impl/BookingServiceImpl.java`
- [Booking Operations](https://github.com/albatranomar/hotel-management-system/blob/main/application/src/main/java/com/hotel/management/application/service/BookingService.java): `application/src/main/java/com/hotel/management/application/service/BookingService.java`

### Property Operations

- [Room Service](https://github.com/albatranomar/hotel-management-system/blob/main/application/src/main/java/com/hotel/management/application/service/impl/RoomServiceImpl.java): `application/src/main/java/com/hotel/management/application/service/impl/RoomServiceImpl.java`
- [Room Operations](https://github.com/albatranomar/hotel-management-system/blob/main/application/src/main/java/com/hotel/management/application/service/RoomService.java): `application/src/main/java/com/hotel/management/application/service/RoomService.java`
- [Amenities Services](https://github.com/albatranomar/hotel-management-system/tree/main/application/src/main/java/com/hotel/management/application/service): `application/src/main/java/com/hotel/management/application/service`
- [Staff Services](https://github.com/albatranomar/hotel-management-system/tree/main/application/src/main/java/com/hotel/management/application/service): `application/src/main/java/com/hotel/management/application/service`

### Identity

- [Authentication Service](https://github.com/albatranomar/hotel-management-system/blob/main/application/src/main/java/com/hotel/management/application/service/impl/auth/AuthenticationServiceImpl.java): `application/src/main/java/com/hotel/management/application/service/impl/auth/AuthenticationServiceImpl.java`
- [JWT Service](https://github.com/albatranomar/hotel-management-system/blob/main/application/src/main/java/com/hotel/management/application/service/impl/auth/JwtServiceImpl.java): `application/src/main/java/com/hotel/management/application/service/impl/auth/JwtServiceImpl.java`

### Persistence

- [Payment Store](https://github.com/albatranomar/hotel-management-system/blob/main/application/src/main/java/com/hotel/management/application/repository/PaymentRepository.java): `application/src/main/java/com/hotel/management/application/repository/PaymentRepository.java`
- [Booking Store](https://github.com/albatranomar/hotel-management-system/blob/main/application/src/main/java/com/hotel/management/application/repository/BookingRepository.java): `application/src/main/java/com/hotel/management/application/repository/BookingRepository.java`
- [Room Store](https://github.com/albatranomar/hotel-management-system/blob/main/application/src/main/java/com/hotel/management/application/repository/RoomRepository.java): `application/src/main/java/com/hotel/management/application/repository/RoomRepository.java`
- [User Store](https://github.com/albatranomar/hotel-management-system/blob/main/application/src/main/java/com/hotel/management/application/repository/UserRepository.java): `application/src/main/java/com/hotel/management/application/repository/UserRepository.java`
- [Token Store](https://github.com/albatranomar/hotel-management-system/blob/main/application/src/main/java/com/hotel/management/application/repository/TokenRepository.java): `application/src/main/java/com/hotel/management/application/repository/TokenRepository.java`
- **Hotel Database**

### Other components

- **Guest / Staff**

## Connections

- Guest / Staff → Search API: searches rooms
- Guest / Staff → Booking API: manages stays
- Guest / Staff → Room API: browses rooms
- Guest / Staff → Staff APIs: staff operations
- Guest / Staff → Authentication API: authenticates
- Booking API → Booking Service: manages booking
- Booking API → Room Service: checks rooms
- Booking API → Authentication Service: identifies user
- Booking API → Booking Operations: uses operations
- Booking Service → Booking Store: reads/writes
- Booking Service → Payment Store: creates payment
- Booking Service → Room Store: updates room state
- Room API → Room Service: manages inventory
- Room API → Room Operations: uses operations
- Room Service → Room Store: reads/writes
- Search API → Booking Operations: searches bookings
- Search API → Room Operations: searches rooms
- Staff APIs → Amenities Services: manages amenities
- Staff APIs → Staff Services: manages staff
- Authentication API → Authentication Service: authenticates
- Authentication Service → User Store: reads/writes users
- Authentication Service → Token Store: revokes/saves tokens
- Authentication Service → JWT Service: issues tokens
- Booking Store → Hotel Database: persists
- Payment Store → Hotel Database: persists
- Room Store → Hotel Database: persists
- User Store → Hotel Database: persists
- Token Store → Hotel Database: persists
