# udaramalinda/hotel-management-system-backend architecture

> Architecture diagram of the GitHub repository udaramalinda/hotel-management-system-backend, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-12). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/udaramalinda/hotel-management-system-backend
- Repository: https://github.com/udaramalinda/hotel-management-system-backend

## Overview

This Spring Boot backend manages hotel inventory and date-bounded room contracts, exposes agent authentication and administrative endpoints, and searches contract inventory for budget/group-size options. The shown search flow computes priced recommendations; the tree has no distinct customer booking or reservation-history component, so those README capabilities cannot be mapped to an implementation here. Source evidence is partial: controller/service calls and major search/contract repository access are supported by excerpts or the source index; unsampled security wiring is shown only as documented/uncertain.

Main entry points: [`src/main/java/com/suntravels/backend/SunTravelsBackend/service/ContractService.java`](https://github.com/udaramalinda/hotel-management-system-backend/blob/main/src/main/java/com/suntravels/backend/SunTravelsBackend/service/ContractService.java) (Contract management), [`src/main/java/com/suntravels/backend/SunTravelsBackend/service/SearchService.java`](https://github.com/udaramalinda/hotel-management-system-backend/blob/main/src/main/java/com/suntravels/backend/SunTravelsBackend/service/SearchService.java) (Availability and pricing), [`src/main/java/com/suntravels/backend/SunTravelsBackend/service/AgentService.java`](https://github.com/udaramalinda/hotel-management-system-backend/blob/main/src/main/java/com/suntravels/backend/SunTravelsBackend/service/AgentService.java) (Agent accounts and login), [`src/main/java/com/suntravels/backend/SunTravelsBackend/controller/AgentController.java`](https://github.com/udaramalinda/hotel-management-system-backend/blob/main/src/main/java/com/suntravels/backend/SunTravelsBackend/controller/AgentController.java) (Agent API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_access["API and security"]
  node_agent_api["Agent API"]
  node_hotel_api["Hotel API"]
  node_room_api["Room type API"]
  node_contract_api["Contract API"]
  node_search_api["Search API"]
  node_markup_api["Markup API"]
  node_jwt_filter["JWT filter"]
end

subgraph group_inventory["Hotel inventory"]
  node_hotel_service["Hotel registration<br/>[HotelService.java]"]
  node_room_service["Room type management"]
  node_markup_service["Markup management<br/>[MarkupService.java]"]
  node_hotel_store[("Hotel records")]
  node_room_store[("Room type records")]
  node_markup_store[("Markup records")]
end

subgraph group_contracts["Contracts and search"]
  node_contract_service["Contract management"]
  node_search_service["Availability and pricing<br/>[SearchService.java]"]
  node_contract_store[("Contract records")]
  node_contract_room_store[("Contract room records")]
  node_contract_models["Contract inventory model<br/>[ContractRoom.java]"]
  node_search_dtos["Search request and results<br/>[SearchRespond.java]"]
end

subgraph group_identity["Agent identity"]
  node_agent_service["Agent accounts and login<br/>[AgentService.java]"]
  node_jwt_service["JWT issuance and validation<br/>[JwtService.java]"]
  node_agent_store[("Agent records")]
  node_agent_dtos["Agent and login DTOs<br/>[AgentDTO.java]"]
end

node_clients(("API clients"))

node_clients -->|"calls"| node_agent_api
node_clients -->|"calls"| node_hotel_api
node_clients -->|"calls"| node_room_api
node_clients -->|"calls"| node_contract_api
node_clients -->|"calls"| node_search_api
node_clients -->|"calls"| node_markup_api
node_agent_api -->|"delegates to"| node_agent_service
node_hotel_api -->|"delegates to"| node_hotel_service
node_room_api -->|"delegates to"| node_room_service
node_contract_api -->|"delegates to"| node_contract_service
node_search_api -->|"delegates to"| node_search_service
node_markup_api -->|"delegates to"| node_markup_service
node_hotel_service -->|"reads and writes"| node_hotel_store
node_room_service -->|"reads and writes"| node_room_store
node_markup_service -->|"reads and writes"| node_markup_store
node_contract_service -->|"loads hotel"| node_hotel_store
node_contract_service -->|"reads and writes"| node_contract_store
node_contract_service -->|"reads and writes"| node_contract_room_store
node_contract_service -->|"loads room type"| node_room_store
node_search_service -->|"queries dates"| node_contract_store
node_search_service -->|"checks inventory"| node_contract_room_store
node_search_service -->|"loads markup"| node_markup_store
node_search_service -->|"builds results"| node_search_dtos
node_contract_service -->|"creates room entries"| node_contract_models
node_search_service -->|"prices room entries"| node_contract_models
node_agent_service -->|"reads and writes"| node_agent_store
node_agent_service -->|"issues token"| node_jwt_service
node_agent_service -->|"accepts account data"| node_agent_dtos
node_jwt_filter -->|"validates token"| node_jwt_service
node_clients -.->|"presents bearer token"| node_jwt_filter

click node_agent_api "https://github.com/udaramalinda/hotel-management-system-backend/blob/main/src/main/java/com/suntravels/backend/SunTravelsBackend/controller/AgentController.java"
click node_hotel_api "https://github.com/udaramalinda/hotel-management-system-backend/blob/main/src/main/java/com/suntravels/backend/SunTravelsBackend/controller/HotelController.java"
click node_room_api "https://github.com/udaramalinda/hotel-management-system-backend/blob/main/src/main/java/com/suntravels/backend/SunTravelsBackend/controller/RoomTypeController.java"
click node_contract_api "https://github.com/udaramalinda/hotel-management-system-backend/blob/main/src/main/java/com/suntravels/backend/SunTravelsBackend/controller/ContractController.java"
click node_search_api "https://github.com/udaramalinda/hotel-management-system-backend/blob/main/src/main/java/com/suntravels/backend/SunTravelsBackend/controller/SearchController.java"
click node_markup_api "https://github.com/udaramalinda/hotel-management-system-backend/blob/main/src/main/java/com/suntravels/backend/SunTravelsBackend/controller/MarkupController.java"
click node_jwt_filter "https://github.com/udaramalinda/hotel-management-system-backend/blob/main/src/main/java/com/suntravels/backend/SunTravelsBackend/config/JwtAuthenticationFilter.java"
click node_hotel_service "https://github.com/udaramalinda/hotel-management-system-backend/blob/main/src/main/java/com/suntravels/backend/SunTravelsBackend/service/HotelService.java"
click node_room_service "https://github.com/udaramalinda/hotel-management-system-backend/blob/main/src/main/java/com/suntravels/backend/SunTravelsBackend/service/RoomTypeService.java"
click node_markup_service "https://github.com/udaramalinda/hotel-management-system-backend/blob/main/src/main/java/com/suntravels/backend/SunTravelsBackend/service/MarkupService.java"
click node_hotel_store "https://github.com/udaramalinda/hotel-management-system-backend/blob/main/src/main/java/com/suntravels/backend/SunTravelsBackend/repository/HotelRepository.java"
click node_room_store "https://github.com/udaramalinda/hotel-management-system-backend/blob/main/src/main/java/com/suntravels/backend/SunTravelsBackend/repository/RoomTypeRepository.java"
click node_markup_store "https://github.com/udaramalinda/hotel-management-system-backend/blob/main/src/main/java/com/suntravels/backend/SunTravelsBackend/repository/MarkupRepository.java"
click node_contract_service "https://github.com/udaramalinda/hotel-management-system-backend/blob/main/src/main/java/com/suntravels/backend/SunTravelsBackend/service/ContractService.java"
click node_search_service "https://github.com/udaramalinda/hotel-management-system-backend/blob/main/src/main/java/com/suntravels/backend/SunTravelsBackend/service/SearchService.java"
click node_contract_store "https://github.com/udaramalinda/hotel-management-system-backend/blob/main/src/main/java/com/suntravels/backend/SunTravelsBackend/repository/ContractRepository.java"
click node_contract_room_store "https://github.com/udaramalinda/hotel-management-system-backend/blob/main/src/main/java/com/suntravels/backend/SunTravelsBackend/repository/ContractRoomRepository.java"
click node_contract_models "https://github.com/udaramalinda/hotel-management-system-backend/blob/main/src/main/java/com/suntravels/backend/SunTravelsBackend/model/ContractRoom.java"
click node_search_dtos "https://github.com/udaramalinda/hotel-management-system-backend/blob/main/src/main/java/com/suntravels/backend/SunTravelsBackend/DTO/SearchRespond.java"
click node_agent_service "https://github.com/udaramalinda/hotel-management-system-backend/blob/main/src/main/java/com/suntravels/backend/SunTravelsBackend/service/AgentService.java"
click node_jwt_service "https://github.com/udaramalinda/hotel-management-system-backend/blob/main/src/main/java/com/suntravels/backend/SunTravelsBackend/config/JwtService.java"
click node_agent_store "https://github.com/udaramalinda/hotel-management-system-backend/blob/main/src/main/java/com/suntravels/backend/SunTravelsBackend/repository/AgentRepository.java"
click node_agent_dtos "https://github.com/udaramalinda/hotel-management-system-backend/blob/main/src/main/java/com/suntravels/backend/SunTravelsBackend/DTO/AgentDTO.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_agent_api,node_hotel_api,node_room_api,node_contract_api,node_search_api,node_markup_api,node_jwt_filter,node_clients toneBlue
class node_hotel_service,node_room_service,node_markup_service,node_hotel_store,node_room_store,node_markup_store toneAmber
class node_contract_service,node_search_service,node_contract_store,node_contract_room_store,node_contract_models,node_search_dtos toneMint
class node_agent_service,node_jwt_service,node_agent_store,node_agent_dtos toneRose
```

## Components

### API and security

- [Agent API](https://github.com/udaramalinda/hotel-management-system-backend/blob/main/src/main/java/com/suntravels/backend/SunTravelsBackend/controller/AgentController.java): `src/main/java/com/suntravels/backend/SunTravelsBackend/controller/AgentController.java`
- [Hotel API](https://github.com/udaramalinda/hotel-management-system-backend/blob/main/src/main/java/com/suntravels/backend/SunTravelsBackend/controller/HotelController.java): `src/main/java/com/suntravels/backend/SunTravelsBackend/controller/HotelController.java`
- [Room type API](https://github.com/udaramalinda/hotel-management-system-backend/blob/main/src/main/java/com/suntravels/backend/SunTravelsBackend/controller/RoomTypeController.java): `src/main/java/com/suntravels/backend/SunTravelsBackend/controller/RoomTypeController.java`
- [Contract API](https://github.com/udaramalinda/hotel-management-system-backend/blob/main/src/main/java/com/suntravels/backend/SunTravelsBackend/controller/ContractController.java): `src/main/java/com/suntravels/backend/SunTravelsBackend/controller/ContractController.java`
- [Search API](https://github.com/udaramalinda/hotel-management-system-backend/blob/main/src/main/java/com/suntravels/backend/SunTravelsBackend/controller/SearchController.java): `src/main/java/com/suntravels/backend/SunTravelsBackend/controller/SearchController.java`
- [Markup API](https://github.com/udaramalinda/hotel-management-system-backend/blob/main/src/main/java/com/suntravels/backend/SunTravelsBackend/controller/MarkupController.java): `src/main/java/com/suntravels/backend/SunTravelsBackend/controller/MarkupController.java`
- [JWT filter](https://github.com/udaramalinda/hotel-management-system-backend/blob/main/src/main/java/com/suntravels/backend/SunTravelsBackend/config/JwtAuthenticationFilter.java): `src/main/java/com/suntravels/backend/SunTravelsBackend/config/JwtAuthenticationFilter.java`

### Hotel inventory

- [Hotel registration](https://github.com/udaramalinda/hotel-management-system-backend/blob/main/src/main/java/com/suntravels/backend/SunTravelsBackend/service/HotelService.java): `src/main/java/com/suntravels/backend/SunTravelsBackend/service/HotelService.java`
- [Room type management](https://github.com/udaramalinda/hotel-management-system-backend/blob/main/src/main/java/com/suntravels/backend/SunTravelsBackend/service/RoomTypeService.java): `src/main/java/com/suntravels/backend/SunTravelsBackend/service/RoomTypeService.java`
- [Markup management](https://github.com/udaramalinda/hotel-management-system-backend/blob/main/src/main/java/com/suntravels/backend/SunTravelsBackend/service/MarkupService.java): `src/main/java/com/suntravels/backend/SunTravelsBackend/service/MarkupService.java`
- [Hotel records](https://github.com/udaramalinda/hotel-management-system-backend/blob/main/src/main/java/com/suntravels/backend/SunTravelsBackend/repository/HotelRepository.java): `src/main/java/com/suntravels/backend/SunTravelsBackend/repository/HotelRepository.java`
- [Room type records](https://github.com/udaramalinda/hotel-management-system-backend/blob/main/src/main/java/com/suntravels/backend/SunTravelsBackend/repository/RoomTypeRepository.java): `src/main/java/com/suntravels/backend/SunTravelsBackend/repository/RoomTypeRepository.java`
- [Markup records](https://github.com/udaramalinda/hotel-management-system-backend/blob/main/src/main/java/com/suntravels/backend/SunTravelsBackend/repository/MarkupRepository.java): `src/main/java/com/suntravels/backend/SunTravelsBackend/repository/MarkupRepository.java`

### Contracts and search

- [Contract management](https://github.com/udaramalinda/hotel-management-system-backend/blob/main/src/main/java/com/suntravels/backend/SunTravelsBackend/service/ContractService.java): `src/main/java/com/suntravels/backend/SunTravelsBackend/service/ContractService.java`
- [Availability and pricing](https://github.com/udaramalinda/hotel-management-system-backend/blob/main/src/main/java/com/suntravels/backend/SunTravelsBackend/service/SearchService.java): `src/main/java/com/suntravels/backend/SunTravelsBackend/service/SearchService.java`
- [Contract records](https://github.com/udaramalinda/hotel-management-system-backend/blob/main/src/main/java/com/suntravels/backend/SunTravelsBackend/repository/ContractRepository.java): `src/main/java/com/suntravels/backend/SunTravelsBackend/repository/ContractRepository.java`
- [Contract room records](https://github.com/udaramalinda/hotel-management-system-backend/blob/main/src/main/java/com/suntravels/backend/SunTravelsBackend/repository/ContractRoomRepository.java): `src/main/java/com/suntravels/backend/SunTravelsBackend/repository/ContractRoomRepository.java`
- [Contract inventory model](https://github.com/udaramalinda/hotel-management-system-backend/blob/main/src/main/java/com/suntravels/backend/SunTravelsBackend/model/ContractRoom.java): `src/main/java/com/suntravels/backend/SunTravelsBackend/model/ContractRoom.java`
- [Search request and results](https://github.com/udaramalinda/hotel-management-system-backend/blob/main/src/main/java/com/suntravels/backend/SunTravelsBackend/DTO/SearchRespond.java): `src/main/java/com/suntravels/backend/SunTravelsBackend/DTO/SearchRespond.java`

### Agent identity

- [Agent accounts and login](https://github.com/udaramalinda/hotel-management-system-backend/blob/main/src/main/java/com/suntravels/backend/SunTravelsBackend/service/AgentService.java): `src/main/java/com/suntravels/backend/SunTravelsBackend/service/AgentService.java`
- [JWT issuance and validation](https://github.com/udaramalinda/hotel-management-system-backend/blob/main/src/main/java/com/suntravels/backend/SunTravelsBackend/config/JwtService.java): `src/main/java/com/suntravels/backend/SunTravelsBackend/config/JwtService.java`
- [Agent records](https://github.com/udaramalinda/hotel-management-system-backend/blob/main/src/main/java/com/suntravels/backend/SunTravelsBackend/repository/AgentRepository.java): `src/main/java/com/suntravels/backend/SunTravelsBackend/repository/AgentRepository.java`
- [Agent and login DTOs](https://github.com/udaramalinda/hotel-management-system-backend/blob/main/src/main/java/com/suntravels/backend/SunTravelsBackend/DTO/AgentDTO.java): `src/main/java/com/suntravels/backend/SunTravelsBackend/DTO/AgentDTO.java`

### Other components

- **API clients**

## Connections

- API clients → Agent API: calls (evidence: `src/main/java/com/suntravels/backend/SunTravelsBackend/controller/AgentController.java`)
- API clients → Hotel API: calls (evidence: `src/main/java/com/suntravels/backend/SunTravelsBackend/controller/HotelController.java`)
- API clients → Room type API: calls (evidence: `src/main/java/com/suntravels/backend/SunTravelsBackend/controller/RoomTypeController.java`)
- API clients → Contract API: calls (evidence: `src/main/java/com/suntravels/backend/SunTravelsBackend/controller/ContractController.java`)
- API clients → Search API: calls (evidence: `src/main/java/com/suntravels/backend/SunTravelsBackend/controller/SearchController.java`)
- API clients → Markup API: calls (evidence: `src/main/java/com/suntravels/backend/SunTravelsBackend/controller/MarkupController.java`)
- Agent API → Agent accounts and login: delegates to (evidence: `src/main/java/com/suntravels/backend/SunTravelsBackend/controller/AgentController.java`)
- Hotel API → Hotel registration: delegates to (evidence: `src/main/java/com/suntravels/backend/SunTravelsBackend/controller/HotelController.java`)
- Room type API → Room type management: delegates to (evidence: `src/main/java/com/suntravels/backend/SunTravelsBackend/controller/RoomTypeController.java`)
- Contract API → Contract management: delegates to (evidence: `src/main/java/com/suntravels/backend/SunTravelsBackend/controller/ContractController.java`)
- Search API → Availability and pricing: delegates to (evidence: `src/main/java/com/suntravels/backend/SunTravelsBackend/controller/SearchController.java`)
- Markup API → Markup management: delegates to (evidence: `src/main/java/com/suntravels/backend/SunTravelsBackend/controller/MarkupController.java`)
- Hotel registration → Hotel records: reads and writes (evidence: `src/main/java/com/suntravels/backend/SunTravelsBackend/service/HotelService.java`)
- Room type management → Room type records: reads and writes (evidence: `src/main/java/com/suntravels/backend/SunTravelsBackend/service/RoomTypeService.java`)
- Markup management → Markup records: reads and writes (evidence: `src/main/java/com/suntravels/backend/SunTravelsBackend/service/MarkupService.java`)
- Contract management → Hotel records: loads hotel (evidence: `src/main/java/com/suntravels/backend/SunTravelsBackend/service/ContractService.java`)
- Contract management → Contract records: reads and writes (evidence: `src/main/java/com/suntravels/backend/SunTravelsBackend/service/ContractService.java`)
- Contract management → Contract room records: reads and writes (evidence: `src/main/java/com/suntravels/backend/SunTravelsBackend/service/ContractService.java`)
- Contract management → Room type records: loads room type (evidence: `src/main/java/com/suntravels/backend/SunTravelsBackend/service/ContractService.java`)
- Availability and pricing → Contract records: queries dates (evidence: `src/main/java/com/suntravels/backend/SunTravelsBackend/service/SearchService.java`)
- Availability and pricing → Contract room records: checks inventory (evidence: `src/main/java/com/suntravels/backend/SunTravelsBackend/service/SearchService.java`)
- Availability and pricing → Markup records: loads markup (evidence: `src/main/java/com/suntravels/backend/SunTravelsBackend/service/SearchService.java`)
- Availability and pricing → Search request and results: builds results (evidence: `src/main/java/com/suntravels/backend/SunTravelsBackend/service/SearchService.java`)
- Contract management → Contract inventory model: creates room entries (evidence: `src/main/java/com/suntravels/backend/SunTravelsBackend/service/ContractService.java`)
- Availability and pricing → Contract inventory model: prices room entries (evidence: `src/main/java/com/suntravels/backend/SunTravelsBackend/service/SearchService.java`)
- Agent accounts and login → Agent records: reads and writes (evidence: `src/main/java/com/suntravels/backend/SunTravelsBackend/service/AgentService.java`)
- Agent accounts and login → JWT issuance and validation: issues token (evidence: `src/main/java/com/suntravels/backend/SunTravelsBackend/service/AgentService.java`)
- Agent accounts and login → Agent and login DTOs: accepts account data (evidence: `src/main/java/com/suntravels/backend/SunTravelsBackend/service/AgentService.java`)
- JWT filter → JWT issuance and validation: validates token (evidence: `src/main/java/com/suntravels/backend/SunTravelsBackend/config/JwtAuthenticationFilter.java`)
- API clients → JWT filter: presents bearer token (evidence: `README.md`)
