# yasterjoshua14/lodging-management-system architecture

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

- Interactive diagram: https://gitdiagram.com/yasterjoshua14/lodging-management-system
- Repository: https://github.com/yasterjoshua14/lodging-management-system

## Overview

This is a CodeIgniter lodging-management application for tenant self-service and admin operations. Tenants browse rooms, create bookings, and proceed through PayMongo checkout; administrators manage rooms, tenants, and bookings and review dashboard reports. Authentication and role filters protect the portals, while models persist application records in the configured database. The README also describes payment history, receipts, and webhook-driven updates, but the supplied tree and excerpts do not establish a webhook handler or its wiring, so those links are not inferred.

Main entry points: [`app/Config/Routes.php`](https://github.com/yasterjoshua14/lodging-management-system/blob/main/app/Config/Routes.php) (Route dispatch), [`app/Controllers/TenantBookingsController.php`](https://github.com/yasterjoshua14/lodging-management-system/blob/main/app/Controllers/TenantBookingsController.php) (Tenant bookings), [`app/Models/BookingModel.php`](https://github.com/yasterjoshua14/lodging-management-system/blob/main/app/Models/BookingModel.php) (Booking records), [`app/Controllers/SearchController.php`](https://github.com/yasterjoshua14/lodging-management-system/blob/main/app/Controllers/SearchController.php) (Portal search)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Web entry and access"]
  node_routes["Route dispatch<br/>[Routes.php]"]
  node_auth["Authentication<br/>[AuthController.php]"]
  node_access["Access filters"]
end

subgraph group_tenant["Tenant portal"]
  node_tenant_booking["Tenant bookings"]
  node_tenant_account["Tenant account"]
  node_search["Portal search"]
  node_tenant_ui["Tenant pages"]
end

subgraph group_admin["Admin operations"]
  node_admin_rooms["Room management"]
  node_admin_tenants["Tenant management"]
  node_admin_bookings["Booking management"]
  node_dashboard["Admin dashboard"]
  node_admin_ui["Admin pages"]
end

subgraph group_domain["Booking and payments"]
  node_availability["Availability checks"]
  node_checkout["PayMongo checkout"]
end

subgraph group_data["Persistence"]
  node_rooms["Room records<br/>[RoomModel.php]"]
  node_bookings["Booking records<br/>[BookingModel.php]"]
  node_tenants["Tenant records<br/>[TenantModel.php]"]
  node_users["User records<br/>[UserModel.php]"]
  node_reports["Admin reports"]
  node_db[("SQL database<br/>[Database.php]")]
end

node_visitor(("Portal user"))
node_paymongo{{"PayMongo"}}

node_visitor -->|"sends request"| node_routes
node_routes -->|"dispatches login"| node_auth
node_routes -->|"applies filters"| node_access
node_routes -->|"dispatches tenant routes"| node_tenant_booking
node_routes -->|"dispatches account routes"| node_tenant_account
node_routes -->|"dispatches search"| node_search
node_routes -->|"dispatches room routes"| node_admin_rooms
node_routes -->|"dispatches tenant routes"| node_admin_tenants
node_routes -->|"dispatches booking routes"| node_admin_bookings
node_routes -->|"dispatches dashboard"| node_dashboard
node_auth -->|"reads and writes"| node_users
node_auth -->|"creates profile"| node_tenants
node_tenant_booking -->|"checks dates"| node_availability
node_tenant_booking -->|"loads room"| node_rooms
node_tenant_booking -->|"creates and updates"| node_bookings
node_tenant_booking -->|"loads tenant"| node_tenants
node_tenant_booking -->|"creates checkout"| node_checkout
node_checkout -.->|"requests payment link"| node_paymongo
node_admin_rooms -->|"manages records"| node_rooms
node_admin_rooms -->|"checks room bookings"| node_bookings
node_admin_tenants -->|"manages records"| node_tenants
node_admin_tenants -->|"deletes linked users"| node_users
node_admin_tenants -->|"deletes tenant bookings"| node_bookings
node_admin_bookings -->|"manages records"| node_bookings
node_dashboard -->|"loads summaries"| node_reports
node_search -->|"searches rooms"| node_rooms
node_search -->|"searches bookings"| node_bookings
node_search -->|"searches profiles"| node_tenants
node_rooms -->|"reads and writes"| node_db
node_bookings -->|"reads and writes"| node_db
node_tenants -->|"reads and writes"| node_db
node_users -->|"reads and writes"| node_db
node_reports -->|"reads summaries"| node_db
node_tenant_booking -->|"renders pages"| node_tenant_ui
node_tenant_account -->|"renders pages"| node_tenant_ui
node_search -->|"renders results"| node_tenant_ui
node_admin_rooms -->|"renders pages"| node_admin_ui
node_admin_tenants -->|"renders pages"| node_admin_ui
node_admin_bookings -->|"renders pages"| node_admin_ui
node_dashboard -->|"renders dashboard"| node_admin_ui

click node_routes "https://github.com/yasterjoshua14/lodging-management-system/blob/main/app/Config/Routes.php"
click node_auth "https://github.com/yasterjoshua14/lodging-management-system/blob/main/app/Controllers/AuthController.php"
click node_access "https://github.com/yasterjoshua14/lodging-management-system/tree/main/app/Filters"
click node_tenant_booking "https://github.com/yasterjoshua14/lodging-management-system/blob/main/app/Controllers/TenantBookingsController.php"
click node_tenant_account "https://github.com/yasterjoshua14/lodging-management-system/blob/main/app/Controllers/TenantAccountController.php"
click node_search "https://github.com/yasterjoshua14/lodging-management-system/blob/main/app/Controllers/SearchController.php"
click node_tenant_ui "https://github.com/yasterjoshua14/lodging-management-system/tree/main/app/Views/tenant"
click node_admin_rooms "https://github.com/yasterjoshua14/lodging-management-system/blob/main/app/Controllers/AdminRoomsController.php"
click node_admin_tenants "https://github.com/yasterjoshua14/lodging-management-system/blob/main/app/Controllers/AdminTenantsController.php"
click node_admin_bookings "https://github.com/yasterjoshua14/lodging-management-system/blob/main/app/Controllers/AdminBookingsController.php"
click node_dashboard "https://github.com/yasterjoshua14/lodging-management-system/blob/main/app/Controllers/AdminDashboardController.php"
click node_admin_ui "https://github.com/yasterjoshua14/lodging-management-system/tree/main/app/Views/admin"
click node_availability "https://github.com/yasterjoshua14/lodging-management-system/blob/main/app/Libraries/BookingAvailability.php"
click node_checkout "https://github.com/yasterjoshua14/lodging-management-system/blob/main/app/Libraries/PayMongoCheckout.php"
click node_rooms "https://github.com/yasterjoshua14/lodging-management-system/blob/main/app/Models/RoomModel.php"
click node_bookings "https://github.com/yasterjoshua14/lodging-management-system/blob/main/app/Models/BookingModel.php"
click node_tenants "https://github.com/yasterjoshua14/lodging-management-system/blob/main/app/Models/TenantModel.php"
click node_users "https://github.com/yasterjoshua14/lodging-management-system/blob/main/app/Models/UserModel.php"
click node_reports "https://github.com/yasterjoshua14/lodging-management-system/blob/main/app/Models/AdminReportModel.php"
click node_db "https://github.com/yasterjoshua14/lodging-management-system/blob/main/app/Config/Database.php"

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_routes,node_auth,node_access,node_visitor toneBlue
class node_tenant_booking,node_tenant_account,node_search,node_tenant_ui toneAmber
class node_admin_rooms,node_admin_tenants,node_admin_bookings,node_dashboard,node_admin_ui toneMint
class node_availability,node_checkout toneRose
class node_rooms,node_bookings,node_tenants,node_users,node_reports,node_db,node_paymongo toneIndigo
```

## Components

### Web entry and access

- [Route dispatch](https://github.com/yasterjoshua14/lodging-management-system/blob/main/app/Config/Routes.php): `app/Config/Routes.php`
- [Authentication](https://github.com/yasterjoshua14/lodging-management-system/blob/main/app/Controllers/AuthController.php): `app/Controllers/AuthController.php`
- [Access filters](https://github.com/yasterjoshua14/lodging-management-system/tree/main/app/Filters): `app/Filters`

### Tenant portal

- [Tenant bookings](https://github.com/yasterjoshua14/lodging-management-system/blob/main/app/Controllers/TenantBookingsController.php): `app/Controllers/TenantBookingsController.php`
- [Tenant account](https://github.com/yasterjoshua14/lodging-management-system/blob/main/app/Controllers/TenantAccountController.php): `app/Controllers/TenantAccountController.php`
- [Portal search](https://github.com/yasterjoshua14/lodging-management-system/blob/main/app/Controllers/SearchController.php): `app/Controllers/SearchController.php`
- [Tenant pages](https://github.com/yasterjoshua14/lodging-management-system/tree/main/app/Views/tenant): `app/Views/tenant`

### Admin operations

- [Room management](https://github.com/yasterjoshua14/lodging-management-system/blob/main/app/Controllers/AdminRoomsController.php): `app/Controllers/AdminRoomsController.php`
- [Tenant management](https://github.com/yasterjoshua14/lodging-management-system/blob/main/app/Controllers/AdminTenantsController.php): `app/Controllers/AdminTenantsController.php`
- [Booking management](https://github.com/yasterjoshua14/lodging-management-system/blob/main/app/Controllers/AdminBookingsController.php): `app/Controllers/AdminBookingsController.php`
- [Admin dashboard](https://github.com/yasterjoshua14/lodging-management-system/blob/main/app/Controllers/AdminDashboardController.php): `app/Controllers/AdminDashboardController.php`
- [Admin pages](https://github.com/yasterjoshua14/lodging-management-system/tree/main/app/Views/admin): `app/Views/admin`

### Booking and payments

- [Availability checks](https://github.com/yasterjoshua14/lodging-management-system/blob/main/app/Libraries/BookingAvailability.php): `app/Libraries/BookingAvailability.php`
- [PayMongo checkout](https://github.com/yasterjoshua14/lodging-management-system/blob/main/app/Libraries/PayMongoCheckout.php): `app/Libraries/PayMongoCheckout.php`

### Persistence

- [Room records](https://github.com/yasterjoshua14/lodging-management-system/blob/main/app/Models/RoomModel.php): `app/Models/RoomModel.php`
- [Booking records](https://github.com/yasterjoshua14/lodging-management-system/blob/main/app/Models/BookingModel.php): `app/Models/BookingModel.php`
- [Tenant records](https://github.com/yasterjoshua14/lodging-management-system/blob/main/app/Models/TenantModel.php): `app/Models/TenantModel.php`
- [User records](https://github.com/yasterjoshua14/lodging-management-system/blob/main/app/Models/UserModel.php): `app/Models/UserModel.php`
- [Admin reports](https://github.com/yasterjoshua14/lodging-management-system/blob/main/app/Models/AdminReportModel.php): `app/Models/AdminReportModel.php`
- [SQL database](https://github.com/yasterjoshua14/lodging-management-system/blob/main/app/Config/Database.php): `app/Config/Database.php`

### Other components

- **Portal user**
- **PayMongo**

## Connections

- Portal user → Route dispatch: sends request
- Route dispatch → Authentication: dispatches login
- Route dispatch → Access filters: applies filters
- Route dispatch → Tenant bookings: dispatches tenant routes
- Route dispatch → Tenant account: dispatches account routes
- Route dispatch → Portal search: dispatches search
- Route dispatch → Room management: dispatches room routes
- Route dispatch → Tenant management: dispatches tenant routes
- Route dispatch → Booking management: dispatches booking routes
- Route dispatch → Admin dashboard: dispatches dashboard
- Authentication → User records: reads and writes
- Authentication → Tenant records: creates profile
- Tenant bookings → Availability checks: checks dates
- Tenant bookings → Room records: loads room
- Tenant bookings → Booking records: creates and updates
- Tenant bookings → Tenant records: loads tenant
- Tenant bookings → PayMongo checkout: creates checkout
- PayMongo checkout → PayMongo: requests payment link
- Room management → Room records: manages records
- Room management → Booking records: checks room bookings
- Tenant management → Tenant records: manages records
- Tenant management → User records: deletes linked users
- Tenant management → Booking records: deletes tenant bookings
- Booking management → Booking records: manages records
- Admin dashboard → Admin reports: loads summaries
- Portal search → Room records: searches rooms
- Portal search → Booking records: searches bookings
- Portal search → Tenant records: searches profiles
- Room records → SQL database: reads and writes
- Booking records → SQL database: reads and writes
- Tenant records → SQL database: reads and writes
- User records → SQL database: reads and writes
- Admin reports → SQL database: reads summaries
- Tenant bookings → Tenant pages: renders pages
- Tenant account → Tenant pages: renders pages
- Portal search → Tenant pages: renders results
- Room management → Admin pages: renders pages
- Tenant management → Admin pages: renders pages
- Booking management → Admin pages: renders pages
- Admin dashboard → Admin pages: renders dashboard
