# michiko-hagakure/lgu-public-facilities-reservation-system architecture

> Architecture diagram of the GitHub repository michiko-hagakure/lgu-public-facilities-reservation-system, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/michiko-hagakure/lgu-public-facilities-reservation-system
- Repository: https://github.com/michiko-hagakure/lgu-public-facilities-reservation-system

## Overview

LGU1 is a Laravel public-facilities reservation system. Citizens discover facilities, request bookings, submit payment, and track reservations; staff and treasury roles verify bookings and payments, while administrators manage facilities and operations. The system also supports public reservation APIs, departmental revenue and budget reporting, and cross-departmental integration. The README documents the payment lifecycle and two-database arrangement; sampled controllers confirm booking/payment handling and reporting queries. Other feature links are based on the repository tree and README, so their internal call wiring is not asserted.

Main entry points: [`app/Models/PaymentSlip.php`](https://github.com/michiko-hagakure/lgu-public-facilities-reservation-system/blob/main/app/Models/PaymentSlip.php) (Payment slips), [`app/Models/Booking.php`](https://github.com/michiko-hagakure/lgu-public-facilities-reservation-system/blob/main/app/Models/Booking.php) (Booking records), [`app/Http/Controllers/Citizen/BookingController.php`](https://github.com/michiko-hagakure/lgu-public-facilities-reservation-system/blob/main/app/Http/Controllers/Citizen/BookingController.php) (Booking management), [`app/Http/Controllers/Citizen/PaymentController.php`](https://github.com/michiko-hagakure/lgu-public-facilities-reservation-system/blob/main/app/Http/Controllers/Citizen/PaymentController.php) (Citizen payments)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_reservation["Reservations"]
  node_browse["Facility discovery"]
  node_booking["Booking management"]
  node_reservation_api["Reservation API"]
  node_booking_state[("Booking records<br/>[Booking.php]")]
  node_conflicts["Schedule conflicts"]
end

subgraph group_finance["Payments and Finance"]
  node_treasurer["Treasury verification"]
  node_payment["Citizen payments"]
  node_payment_api["Payment API"]
  node_payment_slips[("Payment slips<br/>[PaymentSlip.php]")]
  node_receipt["Official receipts"]
  node_refunds["Refund handling"]
  node_cbd["CBD reporting"]
  node_budget[("Budget allocations")]
end

subgraph group_operations["Operations and Reporting"]
  node_staff_verify["Staff verification"]
  node_admin["Administration"]
  node_facilities["Facility management"]
  node_analytics["Analytics and exports"]
end

subgraph group_platform["Identity and Integration"]
  node_auth["Google sign-in"]
  node_auth_db[("Shared auth database")]
  node_integration_api["Department APIs"]
end

node_citizen(("Citizen"))
node_paymongo{{"PayMongo"}}
node_external_departments(("City departments"))

node_citizen -->|"browses"| node_browse
node_citizen -->|"requests booking"| node_booking
node_citizen -->|"submits payment"| node_payment
node_browse -->|"queries availability"| node_reservation_api
node_booking -->|"writes booking"| node_booking_state
node_reservation_api -->|"reads bookings"| node_booking_state
node_booking -->|"checks conflicts"| node_conflicts
node_staff_verify -->|"updates status"| node_booking_state
node_admin -->|"manages bookings"| node_booking_state
node_facilities -->|"supports reservations"| node_booking_state
node_payment -->|"records payment"| node_payment_slips
node_payment -.->|"initiates checkout"| node_paymongo
node_paymongo -.->|"sends webhook"| node_payment_api
node_payment_api -->|"updates payment"| node_payment_slips
node_treasurer -->|"verifies payment"| node_payment_slips
node_receipt -->|"reads paid slips"| node_payment_slips
node_refunds -->|"processes refunds"| node_payment_slips
node_cbd -->|"queries revenue"| node_payment_slips
node_cbd -->|"reads allocations"| node_budget
node_analytics -->|"reports bookings"| node_booking_state
node_analytics -->|"reports payments"| node_payment_slips
node_auth -->|"reads and writes identity"| node_auth_db
node_external_departments -.->|"integrates with system"| node_integration_api
node_integration_api -.->|"exposes reservation data"| node_reservation_api
node_citizen -->|"signs in"| node_auth
node_external_departments -.->|"receives reports"| node_cbd

click node_browse "https://github.com/michiko-hagakure/lgu-public-facilities-reservation-system/blob/main/app/Http/Controllers/Citizen/FacilityController.php"
click node_booking "https://github.com/michiko-hagakure/lgu-public-facilities-reservation-system/blob/main/app/Http/Controllers/Citizen/BookingController.php"
click node_reservation_api "https://github.com/michiko-hagakure/lgu-public-facilities-reservation-system/blob/main/app/Http/Controllers/Api/FacilityReservationApiController.php"
click node_booking_state "https://github.com/michiko-hagakure/lgu-public-facilities-reservation-system/blob/main/app/Models/Booking.php"
click node_conflicts "https://github.com/michiko-hagakure/lgu-public-facilities-reservation-system/blob/main/app/Http/Controllers/Citizen/BookingConflictController.php"
click node_staff_verify "https://github.com/michiko-hagakure/lgu-public-facilities-reservation-system/blob/main/app/Http/Controllers/Staff/BookingVerificationController.php"
click node_admin "https://github.com/michiko-hagakure/lgu-public-facilities-reservation-system/blob/main/app/Http/Controllers/Admin/BookingManagementController.php"
click node_facilities "https://github.com/michiko-hagakure/lgu-public-facilities-reservation-system/blob/main/app/Http/Controllers/Admin/FacilityController.php"
click node_treasurer "https://github.com/michiko-hagakure/lgu-public-facilities-reservation-system/blob/main/app/Http/Controllers/Treasurer/PaymentVerificationController.php"
click node_payment "https://github.com/michiko-hagakure/lgu-public-facilities-reservation-system/blob/main/app/Http/Controllers/Citizen/PaymentController.php"
click node_payment_api "https://github.com/michiko-hagakure/lgu-public-facilities-reservation-system/blob/main/app/Http/Controllers/Api/PayMongoWebhookController.php"
click node_payment_slips "https://github.com/michiko-hagakure/lgu-public-facilities-reservation-system/blob/main/app/Models/PaymentSlip.php"
click node_receipt "https://github.com/michiko-hagakure/lgu-public-facilities-reservation-system/blob/main/app/Http/Controllers/Treasurer/OfficialReceiptController.php"
click node_refunds "https://github.com/michiko-hagakure/lgu-public-facilities-reservation-system/blob/main/app/Http/Controllers/Treasurer/RefundController.php"
click node_cbd "https://github.com/michiko-hagakure/lgu-public-facilities-reservation-system/blob/main/app/Http/Controllers/CBD/ReportController.php"
click node_budget "https://github.com/michiko-hagakure/lgu-public-facilities-reservation-system/blob/main/app/Models/BudgetAllocation.php"
click node_analytics "https://github.com/michiko-hagakure/lgu-public-facilities-reservation-system/blob/main/app/Http/Controllers/Admin/AnalyticsController.php"
click node_auth "https://github.com/michiko-hagakure/lgu-public-facilities-reservation-system/blob/main/app/Http/Controllers/Auth/GoogleController.php"
click node_auth_db "https://github.com/michiko-hagakure/lgu-public-facilities-reservation-system/blob/main/app/Http/Controllers/Auth/GoogleController.php"
click node_integration_api "https://github.com/michiko-hagakure/lgu-public-facilities-reservation-system/blob/main/app/Http/Controllers/Api/ExternalIntegrationController.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_browse,node_booking,node_reservation_api,node_booking_state,node_conflicts toneBlue
class node_treasurer,node_payment,node_payment_api,node_payment_slips,node_receipt,node_refunds,node_cbd,node_budget toneAmber
class node_staff_verify,node_admin,node_facilities,node_analytics toneMint
class node_auth,node_auth_db,node_integration_api toneRose
class node_citizen,node_paymongo,node_external_departments toneIndigo
```

## Components

### Reservations

- [Facility discovery](https://github.com/michiko-hagakure/lgu-public-facilities-reservation-system/blob/main/app/Http/Controllers/Citizen/FacilityController.php): `app/Http/Controllers/Citizen/FacilityController.php`
- [Booking management](https://github.com/michiko-hagakure/lgu-public-facilities-reservation-system/blob/main/app/Http/Controllers/Citizen/BookingController.php): `app/Http/Controllers/Citizen/BookingController.php`
- [Reservation API](https://github.com/michiko-hagakure/lgu-public-facilities-reservation-system/blob/main/app/Http/Controllers/Api/FacilityReservationApiController.php): `app/Http/Controllers/Api/FacilityReservationApiController.php`
- [Booking records](https://github.com/michiko-hagakure/lgu-public-facilities-reservation-system/blob/main/app/Models/Booking.php): `app/Models/Booking.php`
- [Schedule conflicts](https://github.com/michiko-hagakure/lgu-public-facilities-reservation-system/blob/main/app/Http/Controllers/Citizen/BookingConflictController.php): `app/Http/Controllers/Citizen/BookingConflictController.php`

### Payments and Finance

- [Treasury verification](https://github.com/michiko-hagakure/lgu-public-facilities-reservation-system/blob/main/app/Http/Controllers/Treasurer/PaymentVerificationController.php): `app/Http/Controllers/Treasurer/PaymentVerificationController.php`
- [Citizen payments](https://github.com/michiko-hagakure/lgu-public-facilities-reservation-system/blob/main/app/Http/Controllers/Citizen/PaymentController.php): `app/Http/Controllers/Citizen/PaymentController.php`
- [Payment API](https://github.com/michiko-hagakure/lgu-public-facilities-reservation-system/blob/main/app/Http/Controllers/Api/PayMongoWebhookController.php): `app/Http/Controllers/Api/PayMongoWebhookController.php`
- [Payment slips](https://github.com/michiko-hagakure/lgu-public-facilities-reservation-system/blob/main/app/Models/PaymentSlip.php): `app/Models/PaymentSlip.php`
- [Official receipts](https://github.com/michiko-hagakure/lgu-public-facilities-reservation-system/blob/main/app/Http/Controllers/Treasurer/OfficialReceiptController.php): `app/Http/Controllers/Treasurer/OfficialReceiptController.php`
- [Refund handling](https://github.com/michiko-hagakure/lgu-public-facilities-reservation-system/blob/main/app/Http/Controllers/Treasurer/RefundController.php): `app/Http/Controllers/Treasurer/RefundController.php`
- [CBD reporting](https://github.com/michiko-hagakure/lgu-public-facilities-reservation-system/blob/main/app/Http/Controllers/CBD/ReportController.php): `app/Http/Controllers/CBD/ReportController.php`
- [Budget allocations](https://github.com/michiko-hagakure/lgu-public-facilities-reservation-system/blob/main/app/Models/BudgetAllocation.php): `app/Models/BudgetAllocation.php`

### Operations and Reporting

- [Staff verification](https://github.com/michiko-hagakure/lgu-public-facilities-reservation-system/blob/main/app/Http/Controllers/Staff/BookingVerificationController.php): `app/Http/Controllers/Staff/BookingVerificationController.php`
- [Administration](https://github.com/michiko-hagakure/lgu-public-facilities-reservation-system/blob/main/app/Http/Controllers/Admin/BookingManagementController.php): `app/Http/Controllers/Admin/BookingManagementController.php`
- [Facility management](https://github.com/michiko-hagakure/lgu-public-facilities-reservation-system/blob/main/app/Http/Controllers/Admin/FacilityController.php): `app/Http/Controllers/Admin/FacilityController.php`
- [Analytics and exports](https://github.com/michiko-hagakure/lgu-public-facilities-reservation-system/blob/main/app/Http/Controllers/Admin/AnalyticsController.php): `app/Http/Controllers/Admin/AnalyticsController.php`

### Identity and Integration

- [Google sign-in](https://github.com/michiko-hagakure/lgu-public-facilities-reservation-system/blob/main/app/Http/Controllers/Auth/GoogleController.php): `app/Http/Controllers/Auth/GoogleController.php`
- [Shared auth database](https://github.com/michiko-hagakure/lgu-public-facilities-reservation-system/blob/main/app/Http/Controllers/Auth/GoogleController.php): `app/Http/Controllers/Auth/GoogleController.php`
- [Department APIs](https://github.com/michiko-hagakure/lgu-public-facilities-reservation-system/blob/main/app/Http/Controllers/Api/ExternalIntegrationController.php): `app/Http/Controllers/Api/ExternalIntegrationController.php`

### Other components

- **Citizen**
- **PayMongo**
- **City departments**

## Connections

- Citizen → Facility discovery: browses
- Citizen → Booking management: requests booking
- Citizen → Citizen payments: submits payment
- Facility discovery → Reservation API: queries availability
- Booking management → Booking records: writes booking
- Reservation API → Booking records: reads bookings
- Booking management → Schedule conflicts: checks conflicts
- Staff verification → Booking records: updates status
- Administration → Booking records: manages bookings
- Facility management → Booking records: supports reservations
- Citizen payments → Payment slips: records payment
- Citizen payments → PayMongo: initiates checkout
- PayMongo → Payment API: sends webhook
- Payment API → Payment slips: updates payment
- Treasury verification → Payment slips: verifies payment
- Official receipts → Payment slips: reads paid slips
- Refund handling → Payment slips: processes refunds
- CBD reporting → Payment slips: queries revenue
- CBD reporting → Budget allocations: reads allocations
- Analytics and exports → Booking records: reports bookings
- Analytics and exports → Payment slips: reports payments
- Google sign-in → Shared auth database: reads and writes identity
- City departments → Department APIs: integrates with system
- Department APIs → Reservation API: exposes reservation data
- Citizen → Google sign-in: signs in
- City departments → CBD reporting: receives reports
