# darshikapande/hotel-booking-system architecture

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

## Overview

GrandStay is a hotel booking and operations application: guests discover rooms, authenticate, reserve a stay, and manage reservations and profiles; administrators manage inventory, reservations, customers, and performance metrics. The React client calls an Express API backed by MongoDB. The graph preserves the documented customer and admin capabilities, while some page-to-service wiring is documented rather than directly sampled; those links are shown at subsystem level where exact handlers were not available.

Main entry points: [`client/src/App.jsx`](https://github.com/darshikapande/hotel-booking-system/blob/main/client/src/App.jsx) (React App), [`server/server.js`](https://github.com/darshikapande/hotel-booking-system/blob/main/server/server.js) (Express Server), [`client/src/services/api.js`](https://github.com/darshikapande/hotel-booking-system/blob/main/client/src/services/api.js) (HTTP Client), [`client/src/services/adminService.js`](https://github.com/darshikapande/hotel-booking-system/blob/main/client/src/services/adminService.js) (Admin Service)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Guest Experience"]
  node_client_app["React App<br/>[App.jsx]"]
  node_auth_context["Session Context<br/>[AuthContext.jsx]"]
  node_discovery["Room Discovery<br/>[Rooms.jsx]"]
  node_room_details["Room Details<br/>[RoomDetails.jsx]"]
  node_booking_form["Reservation Form<br/>[BookingForm.jsx]"]
  node_confirmation["Booking Receipt"]
  node_my_bookings["My Reservations<br/>[MyBookings.jsx]"]
  node_profile["Guest Profile<br/>[Profile.jsx]"]
  node_auth_pages["Sign In / Up<br/>[Login.jsx]"]
  node_api_client["HTTP Client<br/>[api.js]"]
  node_auth_service["Authentication Service<br/>[authService.js]"]
  node_room_service["Room Service<br/>[roomService.js]"]
  node_booking_service["Booking Service<br/>[bookingService.js]"]
  node_admin_service["Admin Service<br/>[adminService.js]"]
end

subgraph group_admin["Hotel Operations"]
  node_admin_dashboard["Admin Dashboard<br/>[AdminDashboard.jsx]"]
  node_manage_rooms["Manage Rooms<br/>[ManageRooms.jsx]"]
  node_manage_bookings["Manage Bookings<br/>[ManageBookings.jsx]"]
  node_manage_customers["Manage Customers"]
end

subgraph group_api["REST API"]
  node_server["Express Server<br/>[server.js]"]
  node_auth_routes["Auth Routes<br/>[authRoutes.js]"]
  node_room_routes["Room Routes<br/>[roomRoutes.js]"]
  node_booking_routes["Booking Routes<br/>[bookingRoutes.js]"]
  node_admin_routes["Admin Routes<br/>[adminRoutes.js]"]
end

subgraph group_domain["Booking Domain"]
  node_auth_controller["Identity Logic<br/>[authController.js]"]
  node_room_controller["Room Logic<br/>[roomController.js]"]
  node_booking_controller["Reservation Logic"]
  node_admin_controller["Operations Logic<br/>[adminController.js]"]
  node_user_model["User Records<br/>[User.js]"]
  node_room_model["Room Records<br/>[Room.js]"]
  node_booking_model["Booking Records<br/>[Booking.js]"]
end

node_guest(("Guest"))
node_administrator(("Administrator"))
node_mongo[("MongoDB")]

node_guest -->|"uses"| node_client_app
node_administrator -->|"uses"| node_client_app
node_client_app -->|"routes to"| node_discovery
node_client_app -->|"routes to"| node_auth_pages
node_client_app -->|"provides session"| node_auth_context
node_client_app -->|"routes to"| node_admin_dashboard
node_client_app -->|"routes to"| node_manage_rooms
node_client_app -->|"routes to"| node_manage_bookings
node_client_app -->|"routes to"| node_manage_customers
node_discovery -->|"requests rooms"| node_room_service
node_room_details -->|"requests details"| node_room_service
node_room_details -->|"starts reservation"| node_booking_form
node_booking_form -->|"submits stay"| node_booking_service
node_booking_service -->|"returns receipt"| node_confirmation
node_my_bookings -->|"loads / cancels"| node_booking_service
node_profile -->|"updates account"| node_auth_service
node_auth_pages -->|"authenticates"| node_auth_service
node_admin_dashboard -->|"loads metrics"| node_admin_service
node_manage_rooms -->|"loads inventory"| node_admin_service
node_manage_rooms -->|"changes rooms"| node_room_service
node_manage_bookings -->|"manages stays"| node_admin_service
node_manage_customers -->|"manages guests"| node_admin_service
node_auth_service -->|"sends requests"| node_api_client
node_room_service -->|"sends requests"| node_api_client
node_booking_service -->|"sends requests"| node_api_client
node_admin_service -->|"sends requests"| node_api_client
node_api_client -->|"HTTP requests"| node_server
node_server -->|"dispatches"| node_auth_routes
node_server -->|"dispatches"| node_room_routes
node_server -->|"dispatches"| node_booking_routes
node_server -->|"dispatches"| node_admin_routes
node_auth_routes -->|"dispatches"| node_auth_controller
node_room_routes -->|"dispatches"| node_room_controller
node_booking_routes -->|"dispatches"| node_booking_controller
node_admin_routes -->|"dispatches"| node_admin_controller
node_room_controller -->|"checks overlaps"| node_booking_model
node_room_controller -->|"reads / writes"| node_room_model
node_booking_controller -->|"checks room"| node_room_model
node_booking_controller -->|"checks / saves"| node_booking_model
node_admin_controller -->|"reads / deletes"| node_user_model
node_admin_controller -->|"reads inventory"| node_room_model
node_admin_controller -->|"reads / updates"| node_booking_model
node_auth_controller -->|"manages accounts"| node_user_model
node_server -->|"connects"| node_mongo
node_user_model -->|"persists users"| node_mongo
node_room_model -->|"persists rooms"| node_mongo
node_booking_model -->|"persists bookings"| node_mongo

click node_client_app "https://github.com/darshikapande/hotel-booking-system/blob/main/client/src/App.jsx"
click node_auth_context "https://github.com/darshikapande/hotel-booking-system/blob/main/client/src/context/AuthContext.jsx"
click node_discovery "https://github.com/darshikapande/hotel-booking-system/blob/main/client/src/pages/Rooms.jsx"
click node_room_details "https://github.com/darshikapande/hotel-booking-system/blob/main/client/src/pages/RoomDetails.jsx"
click node_booking_form "https://github.com/darshikapande/hotel-booking-system/blob/main/client/src/components/BookingForm.jsx"
click node_confirmation "https://github.com/darshikapande/hotel-booking-system/blob/main/client/src/pages/BookingConfirmation.jsx"
click node_my_bookings "https://github.com/darshikapande/hotel-booking-system/blob/main/client/src/pages/MyBookings.jsx"
click node_profile "https://github.com/darshikapande/hotel-booking-system/blob/main/client/src/pages/Profile.jsx"
click node_auth_pages "https://github.com/darshikapande/hotel-booking-system/blob/main/client/src/pages/Login.jsx"
click node_admin_dashboard "https://github.com/darshikapande/hotel-booking-system/blob/main/client/src/pages/admin/AdminDashboard.jsx"
click node_manage_rooms "https://github.com/darshikapande/hotel-booking-system/blob/main/client/src/pages/admin/ManageRooms.jsx"
click node_manage_bookings "https://github.com/darshikapande/hotel-booking-system/blob/main/client/src/pages/admin/ManageBookings.jsx"
click node_manage_customers "https://github.com/darshikapande/hotel-booking-system/blob/main/client/src/pages/admin/ManageCustomers.jsx"
click node_api_client "https://github.com/darshikapande/hotel-booking-system/blob/main/client/src/services/api.js"
click node_auth_service "https://github.com/darshikapande/hotel-booking-system/blob/main/client/src/services/authService.js"
click node_room_service "https://github.com/darshikapande/hotel-booking-system/blob/main/client/src/services/roomService.js"
click node_booking_service "https://github.com/darshikapande/hotel-booking-system/blob/main/client/src/services/bookingService.js"
click node_admin_service "https://github.com/darshikapande/hotel-booking-system/blob/main/client/src/services/adminService.js"
click node_server "https://github.com/darshikapande/hotel-booking-system/blob/main/server/server.js"
click node_auth_routes "https://github.com/darshikapande/hotel-booking-system/blob/main/server/routes/authRoutes.js"
click node_room_routes "https://github.com/darshikapande/hotel-booking-system/blob/main/server/routes/roomRoutes.js"
click node_booking_routes "https://github.com/darshikapande/hotel-booking-system/blob/main/server/routes/bookingRoutes.js"
click node_admin_routes "https://github.com/darshikapande/hotel-booking-system/blob/main/server/routes/adminRoutes.js"
click node_auth_controller "https://github.com/darshikapande/hotel-booking-system/blob/main/server/controllers/authController.js"
click node_room_controller "https://github.com/darshikapande/hotel-booking-system/blob/main/server/controllers/roomController.js"
click node_booking_controller "https://github.com/darshikapande/hotel-booking-system/blob/main/server/controllers/bookingController.js"
click node_admin_controller "https://github.com/darshikapande/hotel-booking-system/blob/main/server/controllers/adminController.js"
click node_user_model "https://github.com/darshikapande/hotel-booking-system/blob/main/server/models/User.js"
click node_room_model "https://github.com/darshikapande/hotel-booking-system/blob/main/server/models/Room.js"
click node_booking_model "https://github.com/darshikapande/hotel-booking-system/blob/main/server/models/Booking.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_client_app,node_auth_context,node_discovery,node_room_details,node_booking_form,node_confirmation,node_my_bookings,node_profile,node_auth_pages,node_api_client,node_auth_service,node_room_service,node_booking_service,node_admin_service toneBlue
class node_admin_dashboard,node_manage_rooms,node_manage_bookings,node_manage_customers,node_mongo toneAmber
class node_server,node_auth_routes,node_room_routes,node_booking_routes,node_admin_routes toneMint
class node_auth_controller,node_room_controller,node_booking_controller,node_admin_controller,node_user_model,node_room_model,node_booking_model toneRose
class node_guest,node_administrator toneIndigo
```

## Components

### Guest Experience

- [React App](https://github.com/darshikapande/hotel-booking-system/blob/main/client/src/App.jsx): `client/src/App.jsx`
- [Session Context](https://github.com/darshikapande/hotel-booking-system/blob/main/client/src/context/AuthContext.jsx): `client/src/context/AuthContext.jsx`
- [Room Discovery](https://github.com/darshikapande/hotel-booking-system/blob/main/client/src/pages/Rooms.jsx): `client/src/pages/Rooms.jsx`
- [Room Details](https://github.com/darshikapande/hotel-booking-system/blob/main/client/src/pages/RoomDetails.jsx): `client/src/pages/RoomDetails.jsx`
- [Reservation Form](https://github.com/darshikapande/hotel-booking-system/blob/main/client/src/components/BookingForm.jsx): `client/src/components/BookingForm.jsx`
- [Booking Receipt](https://github.com/darshikapande/hotel-booking-system/blob/main/client/src/pages/BookingConfirmation.jsx): `client/src/pages/BookingConfirmation.jsx`
- [My Reservations](https://github.com/darshikapande/hotel-booking-system/blob/main/client/src/pages/MyBookings.jsx): `client/src/pages/MyBookings.jsx`
- [Guest Profile](https://github.com/darshikapande/hotel-booking-system/blob/main/client/src/pages/Profile.jsx): `client/src/pages/Profile.jsx`
- [Sign In / Up](https://github.com/darshikapande/hotel-booking-system/blob/main/client/src/pages/Login.jsx): `client/src/pages/Login.jsx`
- [HTTP Client](https://github.com/darshikapande/hotel-booking-system/blob/main/client/src/services/api.js): `client/src/services/api.js`
- [Authentication Service](https://github.com/darshikapande/hotel-booking-system/blob/main/client/src/services/authService.js): `client/src/services/authService.js`
- [Room Service](https://github.com/darshikapande/hotel-booking-system/blob/main/client/src/services/roomService.js): `client/src/services/roomService.js`
- [Booking Service](https://github.com/darshikapande/hotel-booking-system/blob/main/client/src/services/bookingService.js): `client/src/services/bookingService.js`
- [Admin Service](https://github.com/darshikapande/hotel-booking-system/blob/main/client/src/services/adminService.js): `client/src/services/adminService.js`

### Hotel Operations

- [Admin Dashboard](https://github.com/darshikapande/hotel-booking-system/blob/main/client/src/pages/admin/AdminDashboard.jsx): `client/src/pages/admin/AdminDashboard.jsx`
- [Manage Rooms](https://github.com/darshikapande/hotel-booking-system/blob/main/client/src/pages/admin/ManageRooms.jsx): `client/src/pages/admin/ManageRooms.jsx`
- [Manage Bookings](https://github.com/darshikapande/hotel-booking-system/blob/main/client/src/pages/admin/ManageBookings.jsx): `client/src/pages/admin/ManageBookings.jsx`
- [Manage Customers](https://github.com/darshikapande/hotel-booking-system/blob/main/client/src/pages/admin/ManageCustomers.jsx): `client/src/pages/admin/ManageCustomers.jsx`

### REST API

- [Express Server](https://github.com/darshikapande/hotel-booking-system/blob/main/server/server.js): `server/server.js`
- [Auth Routes](https://github.com/darshikapande/hotel-booking-system/blob/main/server/routes/authRoutes.js): `server/routes/authRoutes.js`
- [Room Routes](https://github.com/darshikapande/hotel-booking-system/blob/main/server/routes/roomRoutes.js): `server/routes/roomRoutes.js`
- [Booking Routes](https://github.com/darshikapande/hotel-booking-system/blob/main/server/routes/bookingRoutes.js): `server/routes/bookingRoutes.js`
- [Admin Routes](https://github.com/darshikapande/hotel-booking-system/blob/main/server/routes/adminRoutes.js): `server/routes/adminRoutes.js`

### Booking Domain

- [Identity Logic](https://github.com/darshikapande/hotel-booking-system/blob/main/server/controllers/authController.js): `server/controllers/authController.js`
- [Room Logic](https://github.com/darshikapande/hotel-booking-system/blob/main/server/controllers/roomController.js): `server/controllers/roomController.js`
- [Reservation Logic](https://github.com/darshikapande/hotel-booking-system/blob/main/server/controllers/bookingController.js): `server/controllers/bookingController.js`
- [Operations Logic](https://github.com/darshikapande/hotel-booking-system/blob/main/server/controllers/adminController.js): `server/controllers/adminController.js`
- [User Records](https://github.com/darshikapande/hotel-booking-system/blob/main/server/models/User.js): `server/models/User.js`
- [Room Records](https://github.com/darshikapande/hotel-booking-system/blob/main/server/models/Room.js): `server/models/Room.js`
- [Booking Records](https://github.com/darshikapande/hotel-booking-system/blob/main/server/models/Booking.js): `server/models/Booking.js`

### Other components

- **Guest**
- **Administrator**
- **MongoDB**

## Connections

- Guest → React App: uses
- Administrator → React App: uses
- React App → Room Discovery: routes to
- React App → Sign In / Up: routes to
- React App → Session Context: provides session
- React App → Admin Dashboard: routes to
- React App → Manage Rooms: routes to
- React App → Manage Bookings: routes to
- React App → Manage Customers: routes to
- Room Discovery → Room Service: requests rooms
- Room Details → Room Service: requests details
- Room Details → Reservation Form: starts reservation
- Reservation Form → Booking Service: submits stay
- Booking Service → Booking Receipt: returns receipt
- My Reservations → Booking Service: loads / cancels
- Guest Profile → Authentication Service: updates account
- Sign In / Up → Authentication Service: authenticates
- Admin Dashboard → Admin Service: loads metrics
- Manage Rooms → Admin Service: loads inventory
- Manage Rooms → Room Service: changes rooms
- Manage Bookings → Admin Service: manages stays
- Manage Customers → Admin Service: manages guests
- Authentication Service → HTTP Client: sends requests
- Room Service → HTTP Client: sends requests
- Booking Service → HTTP Client: sends requests
- Admin Service → HTTP Client: sends requests
- HTTP Client → Express Server: HTTP requests
- Express Server → Auth Routes: dispatches
- Express Server → Room Routes: dispatches
- Express Server → Booking Routes: dispatches
- Express Server → Admin Routes: dispatches
- Auth Routes → Identity Logic: dispatches
- Room Routes → Room Logic: dispatches
- Booking Routes → Reservation Logic: dispatches
- Admin Routes → Operations Logic: dispatches
- Room Logic → Booking Records: checks overlaps
- Room Logic → Room Records: reads / writes
- Reservation Logic → Room Records: checks room
- Reservation Logic → Booking Records: checks / saves
- Operations Logic → User Records: reads / deletes
- Operations Logic → Room Records: reads inventory
- Operations Logic → Booking Records: reads / updates
- Identity Logic → User Records: manages accounts
- Express Server → MongoDB: connects
- User Records → MongoDB: persists users
- Room Records → MongoDB: persists rooms
- Booking Records → MongoDB: persists bookings
