# hotel-de-l-avenue/hda-backend architecture

> Architecture diagram of the GitHub repository hotel-de-l-avenue/hda-backend, 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/hotel-de-l-avenue/hda-backend
- Repository: https://github.com/hotel-de-l-avenue/hda-backend

## Overview

HDA is an Express API for hotel operations and connected restaurant, bar, stock, finance, casino, client, and staff workflows. A caller sends a request through the mounted API routes; route middleware and domain controllers handle it, models or controller SQL access MySQL, and the API returns a formatted response. The documented domain stages include accommodation reservations through check-in/out, restaurant orders and bar transactions, casino cashier sessions and chip operations, and client accounts/KYC. The README notes that signature routes are not mounted; unsampled wiring is shown only where documented or evident from the repository structure.

Main entry points: [`routes/index.js`](https://github.com/hotel-de-l-avenue/hda-backend/blob/main/routes/index.js) (API router), [`controllers/hebergementController.js`](https://github.com/hotel-de-l-avenue/hda-backend/blob/main/controllers/hebergementController.js) (Hotel handlers), [`controllers/restaurantController.js`](https://github.com/hotel-de-l-avenue/hda-backend/blob/main/controllers/restaurantController.js) (Restaurant handlers), [`config/db.js`](https://github.com/hotel-de-l-avenue/hda-backend/blob/main/config/db.js) (MySQL pool)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["API entry"]
  node_server["Express server<br/>[server.js]"]
  node_api_routes["API router<br/>[index.js]"]
  node_auth["JWT auth<br/>[auth.js]"]
end

subgraph group_hotel["Accommodation"]
  node_hotel_routes["Hotel routes"]
  node_hotel_ctrl["Hotel handlers"]
  node_hotel_model["Hotel data"]
end

subgraph group_commerce["Food and stock"]
  node_restaurant_routes["Restaurant routes"]
  node_restaurant_ctrl["Restaurant handlers"]
  node_restaurant_model["Restaurant data<br/>[restaurantModel.js]"]
  node_bar_routes["Bar routes<br/>[barRoutes.js]"]
  node_bar_ctrl["Bar handlers<br/>[barController.js]"]
  node_stock_model["Stock operations<br/>[stockModel.js]"]
end

subgraph group_casino["Casino operations"]
  node_casino_routes["Casino routes<br/>[casinoRoutes.js]"]
  node_casino_ctrl["Casino handlers"]
end

subgraph group_shared["Shared services"]
  node_db[("MySQL pool<br/>[db.js]")]
  node_clients_routes["Client routes<br/>[clientRoutes.js]"]
  node_clients_ctrl["Client handlers"]
  node_clients_model["Client accounts KYC<br/>[clientModel.js]"]
  node_signature_routes["Signature routes<br/>[signatureRoutes.js]"]
  node_signature_model["Signature data<br/>[signatureModel.js]"]
  node_finance_ctrl["Finance handlers"]
  node_rh_ctrl["Staff operations<br/>[rhController.js]"]
  node_response["Response formatting<br/>[apiResponse.js]"]
end

node_caller(("API client"))

node_caller -->|"sends request"| node_server
node_server -->|"mounts API"| node_api_routes
node_api_routes -->|"dispatches"| node_hotel_routes
node_api_routes -->|"dispatches"| node_restaurant_routes
node_api_routes -->|"dispatches"| node_bar_routes
node_api_routes -->|"dispatches"| node_casino_routes
node_api_routes -->|"dispatches"| node_clients_routes
node_hotel_routes -->|"requires auth"| node_auth
node_hotel_routes -->|"dispatches"| node_hotel_ctrl
node_hotel_ctrl -->|"calls"| node_hotel_model
node_hotel_ctrl -->|"uses stock"| node_stock_model
node_restaurant_routes -->|"dispatches"| node_restaurant_ctrl
node_restaurant_ctrl -->|"calls"| node_restaurant_model
node_restaurant_ctrl -->|"uses stock"| node_stock_model
node_bar_routes -->|"requires auth"| node_auth
node_bar_routes -->|"dispatches"| node_bar_ctrl
node_casino_routes -->|"requires auth"| node_auth
node_casino_routes -->|"dispatches"| node_casino_ctrl
node_casino_ctrl -->|"queries SQL"| node_db
node_clients_routes -->|"dispatches"| node_clients_ctrl
node_clients_ctrl -->|"calls"| node_clients_model
node_clients_model -->|"queries SQL"| node_db
node_signature_routes -.->|"uses model"| node_signature_model
node_hotel_ctrl -->|"formats response"| node_response
node_restaurant_ctrl -->|"formats response"| node_response
node_clients_ctrl -->|"formats response"| node_response
node_finance_ctrl -->|"accesses data"| node_db
node_rh_ctrl -->|"accesses data"| node_db

click node_server "https://github.com/hotel-de-l-avenue/hda-backend/blob/main/server.js"
click node_api_routes "https://github.com/hotel-de-l-avenue/hda-backend/blob/main/routes/index.js"
click node_auth "https://github.com/hotel-de-l-avenue/hda-backend/blob/main/middlewares/auth.js"
click node_db "https://github.com/hotel-de-l-avenue/hda-backend/blob/main/config/db.js"
click node_hotel_routes "https://github.com/hotel-de-l-avenue/hda-backend/blob/main/routes/hebergementRoutes.js"
click node_hotel_ctrl "https://github.com/hotel-de-l-avenue/hda-backend/blob/main/controllers/hebergementController.js"
click node_hotel_model "https://github.com/hotel-de-l-avenue/hda-backend/blob/main/models/hebergementModel.js"
click node_restaurant_routes "https://github.com/hotel-de-l-avenue/hda-backend/blob/main/routes/restaurantRoutes.js"
click node_restaurant_ctrl "https://github.com/hotel-de-l-avenue/hda-backend/blob/main/controllers/restaurantController.js"
click node_restaurant_model "https://github.com/hotel-de-l-avenue/hda-backend/blob/main/models/restaurantModel.js"
click node_bar_routes "https://github.com/hotel-de-l-avenue/hda-backend/blob/main/routes/barRoutes.js"
click node_bar_ctrl "https://github.com/hotel-de-l-avenue/hda-backend/blob/main/controllers/barController.js"
click node_stock_model "https://github.com/hotel-de-l-avenue/hda-backend/blob/main/models/stockModel.js"
click node_casino_routes "https://github.com/hotel-de-l-avenue/hda-backend/blob/main/routes/casinoRoutes.js"
click node_casino_ctrl "https://github.com/hotel-de-l-avenue/hda-backend/blob/main/controllers/casinoController.js"
click node_clients_routes "https://github.com/hotel-de-l-avenue/hda-backend/blob/main/routes/clientRoutes.js"
click node_clients_ctrl "https://github.com/hotel-de-l-avenue/hda-backend/blob/main/controllers/clientController.js"
click node_clients_model "https://github.com/hotel-de-l-avenue/hda-backend/blob/main/models/clientModel.js"
click node_signature_routes "https://github.com/hotel-de-l-avenue/hda-backend/blob/main/routes/signatureRoutes.js"
click node_signature_model "https://github.com/hotel-de-l-avenue/hda-backend/blob/main/models/signatureModel.js"
click node_finance_ctrl "https://github.com/hotel-de-l-avenue/hda-backend/blob/main/controllers/financeController.js"
click node_rh_ctrl "https://github.com/hotel-de-l-avenue/hda-backend/blob/main/controllers/rhController.js"
click node_response "https://github.com/hotel-de-l-avenue/hda-backend/blob/main/utils/apiResponse.js"

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_server,node_api_routes,node_auth,node_caller toneBlue
class node_hotel_routes,node_hotel_ctrl,node_hotel_model toneAmber
class node_restaurant_routes,node_restaurant_ctrl,node_restaurant_model,node_bar_routes,node_bar_ctrl,node_stock_model toneMint
class node_casino_routes,node_casino_ctrl toneRose
class node_db,node_clients_routes,node_clients_ctrl,node_clients_model,node_signature_routes,node_signature_model,node_finance_ctrl,node_rh_ctrl,node_response toneIndigo
```

## Components

### API entry

- [Express server](https://github.com/hotel-de-l-avenue/hda-backend/blob/main/server.js): `server.js`
- [API router](https://github.com/hotel-de-l-avenue/hda-backend/blob/main/routes/index.js): `routes/index.js`
- [JWT auth](https://github.com/hotel-de-l-avenue/hda-backend/blob/main/middlewares/auth.js): `middlewares/auth.js`

### Accommodation

- [Hotel routes](https://github.com/hotel-de-l-avenue/hda-backend/blob/main/routes/hebergementRoutes.js): `routes/hebergementRoutes.js`
- [Hotel handlers](https://github.com/hotel-de-l-avenue/hda-backend/blob/main/controllers/hebergementController.js): `controllers/hebergementController.js`
- [Hotel data](https://github.com/hotel-de-l-avenue/hda-backend/blob/main/models/hebergementModel.js): `models/hebergementModel.js`

### Food and stock

- [Restaurant routes](https://github.com/hotel-de-l-avenue/hda-backend/blob/main/routes/restaurantRoutes.js): `routes/restaurantRoutes.js`
- [Restaurant handlers](https://github.com/hotel-de-l-avenue/hda-backend/blob/main/controllers/restaurantController.js): `controllers/restaurantController.js`
- [Restaurant data](https://github.com/hotel-de-l-avenue/hda-backend/blob/main/models/restaurantModel.js): `models/restaurantModel.js`
- [Bar routes](https://github.com/hotel-de-l-avenue/hda-backend/blob/main/routes/barRoutes.js): `routes/barRoutes.js`
- [Bar handlers](https://github.com/hotel-de-l-avenue/hda-backend/blob/main/controllers/barController.js): `controllers/barController.js`
- [Stock operations](https://github.com/hotel-de-l-avenue/hda-backend/blob/main/models/stockModel.js): `models/stockModel.js`

### Casino operations

- [Casino routes](https://github.com/hotel-de-l-avenue/hda-backend/blob/main/routes/casinoRoutes.js): `routes/casinoRoutes.js`
- [Casino handlers](https://github.com/hotel-de-l-avenue/hda-backend/blob/main/controllers/casinoController.js): `controllers/casinoController.js`

### Shared services

- [MySQL pool](https://github.com/hotel-de-l-avenue/hda-backend/blob/main/config/db.js): `config/db.js`
- [Client routes](https://github.com/hotel-de-l-avenue/hda-backend/blob/main/routes/clientRoutes.js): `routes/clientRoutes.js`
- [Client handlers](https://github.com/hotel-de-l-avenue/hda-backend/blob/main/controllers/clientController.js): `controllers/clientController.js`
- [Client accounts KYC](https://github.com/hotel-de-l-avenue/hda-backend/blob/main/models/clientModel.js): `models/clientModel.js`
- [Signature routes](https://github.com/hotel-de-l-avenue/hda-backend/blob/main/routes/signatureRoutes.js): `routes/signatureRoutes.js`
- [Signature data](https://github.com/hotel-de-l-avenue/hda-backend/blob/main/models/signatureModel.js): `models/signatureModel.js`
- [Finance handlers](https://github.com/hotel-de-l-avenue/hda-backend/blob/main/controllers/financeController.js): `controllers/financeController.js`
- [Staff operations](https://github.com/hotel-de-l-avenue/hda-backend/blob/main/controllers/rhController.js): `controllers/rhController.js`
- [Response formatting](https://github.com/hotel-de-l-avenue/hda-backend/blob/main/utils/apiResponse.js): `utils/apiResponse.js`

### Other components

- **API client**

## Connections

- API client → Express server: sends request
- Express server → API router: mounts API
- API router → Hotel routes: dispatches
- API router → Restaurant routes: dispatches
- API router → Bar routes: dispatches
- API router → Casino routes: dispatches
- API router → Client routes: dispatches
- Hotel routes → JWT auth: requires auth
- Hotel routes → Hotel handlers: dispatches
- Hotel handlers → Hotel data: calls
- Hotel handlers → Stock operations: uses stock
- Restaurant routes → Restaurant handlers: dispatches
- Restaurant handlers → Restaurant data: calls
- Restaurant handlers → Stock operations: uses stock
- Bar routes → JWT auth: requires auth
- Bar routes → Bar handlers: dispatches
- Casino routes → JWT auth: requires auth
- Casino routes → Casino handlers: dispatches
- Casino handlers → MySQL pool: queries SQL
- Client routes → Client handlers: dispatches
- Client handlers → Client accounts KYC: calls
- Client accounts KYC → MySQL pool: queries SQL
- Signature routes → Signature data: uses model
- Hotel handlers → Response formatting: formats response
- Restaurant handlers → Response formatting: formats response
- Client handlers → Response formatting: formats response
- Finance handlers → MySQL pool: accesses data
- Staff operations → MySQL pool: accesses data
