# jayzee336/reserveit architecture

> Architecture diagram of the GitHub repository jayzee336/reserveit, 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/jayzee336/reserveit
- Repository: https://github.com/jayzee336/reserveit

## Overview

ReserveIT is a role-based university facility reservation and operations application. Users discover facilities and submit requests; Laravel validates booking rules and conflicts, administrators review requests, and authorized users or administrators check in/out, with checkout recording overtime. The React/Inertia interface also supports facility and account administration, concerns, notifications, and analytics. The README documents these capabilities; unsampled implementations are represented only where the tree supports their subsystem, and edges are limited to relationships evidenced by excerpts or README statements.

Main entry points: [`app/Models/Booking.php`](https://github.com/jayzee336/reserveit/blob/main/app/Models/Booking.php) (Bookings), [`app/Http/Controllers/BookingController.php`](https://github.com/jayzee336/reserveit/blob/main/app/Http/Controllers/BookingController.php) (Booking requests), [`app/Models/Facility.php`](https://github.com/jayzee336/reserveit/blob/main/app/Models/Facility.php) (Facilities), [`app/Http/Controllers/Admin/AdminDashboardController.php`](https://github.com/jayzee336/reserveit/blob/main/app/Http/Controllers/Admin/AdminDashboardController.php) (Operational dashboards)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_experience["Web experience"]
  node_inertia["Inertia page shell<br/>[app.jsx]"]
  node_booking_ui["Booking interface<br/>[BookingModal.jsx]"]
  node_facility_ui["Facility discovery<br/>[Facilities.jsx]"]
  node_consent_ui["Consent preview<br/>[ConsentPreview.jsx]"]
  node_protected_file["Protected file access"]
  node_account_ui["Account and profile<br/>[Login.jsx]"]
  node_my_bookings["My bookings<br/>[MyBookings.jsx]"]
  node_operations_ui["Facilitator operations<br/>[Bookings.jsx]"]
  node_auth_routes["Authentication routes<br/>[auth.php]"]
  node_google_auth["Google sign-in"]
end

subgraph group_booking["Reservation operations"]
  node_booking_entry["Booking requests"]
  node_approval["Booking approvals"]
  node_attendance["Check-in and checkout"]
  node_overtime_jobs["Overtime and cleanup"]
end

subgraph group_admin["Administration and support"]
  node_facility_admin["Facility management"]
  node_users_admin["User administration"]
  node_settings_admin["Booking settings"]
  node_dashboards["Operational dashboards"]
  node_concerns["Support concerns"]
  node_notifications["Booking notifications"]
end

subgraph group_domain["Domain and policy"]
  node_booking_data[("Bookings<br/>[Booking.php]")]
  node_facility_data[("Facilities<br/>[Facility.php]")]
  node_settings_data[("System rules<br/>[SystemSetting.php]")]
  node_user_data[("Accounts and roles<br/>[User.php]")]
  node_analytics["Dashboard analytics"]
  node_activity[("Activity records<br/>[ActivityLog.php]")]
end

node_user(("Users and admins"))

node_user -->|"uses"| node_inertia
node_inertia -->|"resolves pages"| node_booking_ui
node_user -->|"submits request"| node_booking_entry
node_booking_entry -->|"validates and stores"| node_booking_data
node_booking_entry -->|"checks facility rules"| node_facility_data
node_booking_entry -->|"reads rules"| node_settings_data
node_booking_entry -->|"notifies"| node_notifications
node_booking_entry -->|"stores consent file"| node_facility_data
node_user -->|"reviews request"| node_approval
node_approval -->|"updates status"| node_booking_data
node_approval -->|"notifies"| node_notifications
node_user -->|"checks in or out"| node_attendance
node_attendance -->|"records attendance"| node_booking_data
node_attendance -->|"reads rules"| node_settings_data
node_attendance -->|"records activity"| node_activity
node_overtime_jobs -.->|"monitors bookings"| node_booking_data
node_user -->|"browses facilities"| node_facility_ui
node_user -->|"manages bookings"| node_my_bookings
node_consent_ui -->|"saves protected file"| node_protected_file
node_user -->|"registers and signs in"| node_auth_routes
node_auth_routes -.->|"optional OAuth"| node_google_auth
node_google_auth -->|"finds account"| node_user_data
node_facility_admin -->|"manages facilities"| node_facility_data
node_facility_admin -->|"assigns admins"| node_user_data
node_users_admin -.->|"manages accounts"| node_user_data
node_settings_admin -.->|"configures rules"| node_settings_data
node_dashboards -->|"queries bookings"| node_booking_data
node_dashboards -->|"queries facilities"| node_facility_data
node_dashboards -->|"queries concerns"| node_concerns
node_dashboards -->|"uses analytics"| node_analytics
node_operations_ui -->|"reviews bookings"| node_approval
node_user -->|"submits concerns"| node_concerns
node_user -->|"receives updates"| node_notifications
node_booking_data -->|"belongs to"| node_facility_data
node_booking_data -->|"belongs to"| node_user_data

click node_inertia "https://github.com/jayzee336/reserveit/blob/main/resources/js/app.jsx"
click node_booking_ui "https://github.com/jayzee336/reserveit/blob/main/resources/js/Components/BookingModal.jsx"
click node_facility_ui "https://github.com/jayzee336/reserveit/blob/main/resources/js/Pages/Facilities.jsx"
click node_consent_ui "https://github.com/jayzee336/reserveit/blob/main/resources/js/Pages/ConsentPreview.jsx"
click node_protected_file "https://github.com/jayzee336/reserveit/blob/main/resources/js/utils/saveProtectedFile.js"
click node_account_ui "https://github.com/jayzee336/reserveit/blob/main/resources/js/Pages/Auth/Login.jsx"
click node_my_bookings "https://github.com/jayzee336/reserveit/blob/main/resources/js/Pages/MyBookings.jsx"
click node_booking_entry "https://github.com/jayzee336/reserveit/blob/main/app/Http/Controllers/BookingController.php"
click node_approval "https://github.com/jayzee336/reserveit/blob/main/app/Http/Controllers/Facilitator/BookingApprovalController.php"
click node_attendance "https://github.com/jayzee336/reserveit/blob/main/app/Http/Controllers/BookingCheckInOutController.php"
click node_operations_ui "https://github.com/jayzee336/reserveit/blob/main/resources/js/Pages/Facilitator/Bookings.jsx"
click node_overtime_jobs "https://github.com/jayzee336/reserveit/blob/main/app/Console/Commands/CheckOvertimeBookings.php"
click node_booking_data "https://github.com/jayzee336/reserveit/blob/main/app/Models/Booking.php"
click node_facility_data "https://github.com/jayzee336/reserveit/blob/main/app/Models/Facility.php"
click node_settings_data "https://github.com/jayzee336/reserveit/blob/main/app/Models/SystemSetting.php"
click node_user_data "https://github.com/jayzee336/reserveit/blob/main/app/Models/User.php"
click node_facility_admin "https://github.com/jayzee336/reserveit/blob/main/app/Http/Controllers/Admin/FacilityManagementController.php"
click node_users_admin "https://github.com/jayzee336/reserveit/blob/main/app/Http/Controllers/Admin/UserManagementController.php"
click node_settings_admin "https://github.com/jayzee336/reserveit/blob/main/app/Http/Controllers/Admin/SystemSettingsController.php"
click node_dashboards "https://github.com/jayzee336/reserveit/blob/main/app/Http/Controllers/Admin/AdminDashboardController.php"
click node_analytics "https://github.com/jayzee336/reserveit/blob/main/app/Support/BookingDashboardAnalytics.php"
click node_concerns "https://github.com/jayzee336/reserveit/blob/main/app/Http/Controllers/UserConcernController.php"
click node_notifications "https://github.com/jayzee336/reserveit/blob/main/app/Notifications/BookingOperationsNotification.php"
click node_auth_routes "https://github.com/jayzee336/reserveit/blob/main/routes/auth.php"
click node_google_auth "https://github.com/jayzee336/reserveit/blob/main/app/Http/Controllers/Auth/GoogleController.php"
click node_activity "https://github.com/jayzee336/reserveit/blob/main/app/Models/ActivityLog.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_inertia,node_booking_ui,node_facility_ui,node_consent_ui,node_protected_file,node_account_ui,node_my_bookings,node_operations_ui,node_auth_routes,node_google_auth,node_user toneBlue
class node_booking_entry,node_approval,node_attendance,node_overtime_jobs toneAmber
class node_facility_admin,node_users_admin,node_settings_admin,node_dashboards,node_concerns,node_notifications toneMint
class node_booking_data,node_facility_data,node_settings_data,node_user_data,node_analytics,node_activity toneRose
```

## Components

### Web experience

- [Inertia page shell](https://github.com/jayzee336/reserveit/blob/main/resources/js/app.jsx): `resources/js/app.jsx`
- [Booking interface](https://github.com/jayzee336/reserveit/blob/main/resources/js/Components/BookingModal.jsx): `resources/js/Components/BookingModal.jsx`
- [Facility discovery](https://github.com/jayzee336/reserveit/blob/main/resources/js/Pages/Facilities.jsx): `resources/js/Pages/Facilities.jsx`
- [Consent preview](https://github.com/jayzee336/reserveit/blob/main/resources/js/Pages/ConsentPreview.jsx): `resources/js/Pages/ConsentPreview.jsx`
- [Protected file access](https://github.com/jayzee336/reserveit/blob/main/resources/js/utils/saveProtectedFile.js): `resources/js/utils/saveProtectedFile.js`
- [Account and profile](https://github.com/jayzee336/reserveit/blob/main/resources/js/Pages/Auth/Login.jsx): `resources/js/Pages/Auth/Login.jsx`
- [My bookings](https://github.com/jayzee336/reserveit/blob/main/resources/js/Pages/MyBookings.jsx): `resources/js/Pages/MyBookings.jsx`
- [Facilitator operations](https://github.com/jayzee336/reserveit/blob/main/resources/js/Pages/Facilitator/Bookings.jsx): `resources/js/Pages/Facilitator/Bookings.jsx`
- [Authentication routes](https://github.com/jayzee336/reserveit/blob/main/routes/auth.php): `routes/auth.php`
- [Google sign-in](https://github.com/jayzee336/reserveit/blob/main/app/Http/Controllers/Auth/GoogleController.php): `app/Http/Controllers/Auth/GoogleController.php`

### Reservation operations

- [Booking requests](https://github.com/jayzee336/reserveit/blob/main/app/Http/Controllers/BookingController.php): `app/Http/Controllers/BookingController.php`
- [Booking approvals](https://github.com/jayzee336/reserveit/blob/main/app/Http/Controllers/Facilitator/BookingApprovalController.php): `app/Http/Controllers/Facilitator/BookingApprovalController.php`
- [Check-in and checkout](https://github.com/jayzee336/reserveit/blob/main/app/Http/Controllers/BookingCheckInOutController.php): `app/Http/Controllers/BookingCheckInOutController.php`
- [Overtime and cleanup](https://github.com/jayzee336/reserveit/blob/main/app/Console/Commands/CheckOvertimeBookings.php): `app/Console/Commands/CheckOvertimeBookings.php`

### Administration and support

- [Facility management](https://github.com/jayzee336/reserveit/blob/main/app/Http/Controllers/Admin/FacilityManagementController.php): `app/Http/Controllers/Admin/FacilityManagementController.php`
- [User administration](https://github.com/jayzee336/reserveit/blob/main/app/Http/Controllers/Admin/UserManagementController.php): `app/Http/Controllers/Admin/UserManagementController.php`
- [Booking settings](https://github.com/jayzee336/reserveit/blob/main/app/Http/Controllers/Admin/SystemSettingsController.php): `app/Http/Controllers/Admin/SystemSettingsController.php`
- [Operational dashboards](https://github.com/jayzee336/reserveit/blob/main/app/Http/Controllers/Admin/AdminDashboardController.php): `app/Http/Controllers/Admin/AdminDashboardController.php`
- [Support concerns](https://github.com/jayzee336/reserveit/blob/main/app/Http/Controllers/UserConcernController.php): `app/Http/Controllers/UserConcernController.php`
- [Booking notifications](https://github.com/jayzee336/reserveit/blob/main/app/Notifications/BookingOperationsNotification.php): `app/Notifications/BookingOperationsNotification.php`

### Domain and policy

- [Bookings](https://github.com/jayzee336/reserveit/blob/main/app/Models/Booking.php): `app/Models/Booking.php`
- [Facilities](https://github.com/jayzee336/reserveit/blob/main/app/Models/Facility.php): `app/Models/Facility.php`
- [System rules](https://github.com/jayzee336/reserveit/blob/main/app/Models/SystemSetting.php): `app/Models/SystemSetting.php`
- [Accounts and roles](https://github.com/jayzee336/reserveit/blob/main/app/Models/User.php): `app/Models/User.php`
- [Dashboard analytics](https://github.com/jayzee336/reserveit/blob/main/app/Support/BookingDashboardAnalytics.php): `app/Support/BookingDashboardAnalytics.php`
- [Activity records](https://github.com/jayzee336/reserveit/blob/main/app/Models/ActivityLog.php): `app/Models/ActivityLog.php`

### Other components

- **Users and admins**

## Connections

- Users and admins → Inertia page shell: uses (evidence: `README.md`)
- Inertia page shell → Booking interface: resolves pages (evidence: `resources/js/app.jsx`)
- Users and admins → Booking requests: submits request (evidence: `README.md`)
- Booking requests → Bookings: validates and stores (evidence: `app/Http/Controllers/BookingController.php`)
- Booking requests → Facilities: checks facility rules (evidence: `app/Http/Controllers/BookingController.php`)
- Booking requests → System rules: reads rules (evidence: `README.md`)
- Booking requests → Booking notifications: notifies (evidence: `app/Http/Controllers/BookingController.php`)
- Booking requests → Facilities: stores consent file (evidence: `app/Http/Controllers/BookingController.php`)
- Users and admins → Booking approvals: reviews request (evidence: `README.md`)
- Booking approvals → Bookings: updates status (evidence: `app/Http/Controllers/Facilitator/BookingApprovalController.php`)
- Booking approvals → Booking notifications: notifies (evidence: `app/Http/Controllers/Facilitator/BookingApprovalController.php`)
- Users and admins → Check-in and checkout: checks in or out (evidence: `README.md`)
- Check-in and checkout → Bookings: records attendance (evidence: `app/Http/Controllers/BookingCheckInOutController.php`)
- Check-in and checkout → System rules: reads rules (evidence: `app/Http/Controllers/BookingCheckInOutController.php`)
- Check-in and checkout → Activity records: records activity (evidence: `app/Http/Controllers/BookingCheckInOutController.php`)
- Overtime and cleanup → Bookings: monitors bookings
- Users and admins → Facility discovery: browses facilities (evidence: `README.md`)
- Users and admins → My bookings: manages bookings (evidence: `README.md`)
- Consent preview → Protected file access: saves protected file (evidence: `resources/js/Pages/ConsentPreview.jsx`)
- Users and admins → Authentication routes: registers and signs in (evidence: `README.md`)
- Authentication routes → Google sign-in: optional OAuth
- Google sign-in → Accounts and roles: finds account (evidence: `app/Http/Controllers/Auth/GoogleController.php`)
- Facility management → Facilities: manages facilities (evidence: `app/Http/Controllers/Admin/FacilityManagementController.php`)
- Facility management → Accounts and roles: assigns admins (evidence: `app/Http/Controllers/Admin/FacilityManagementController.php`)
- User administration → Accounts and roles: manages accounts
- Booking settings → System rules: configures rules
- Operational dashboards → Bookings: queries bookings (evidence: `app/Http/Controllers/Admin/AdminDashboardController.php`)
- Operational dashboards → Facilities: queries facilities (evidence: `app/Http/Controllers/Admin/AdminDashboardController.php`)
- Operational dashboards → Support concerns: queries concerns (evidence: `app/Http/Controllers/Admin/AdminDashboardController.php`)
- Operational dashboards → Dashboard analytics: uses analytics (evidence: `app/Http/Controllers/Admin/AdminDashboardController.php`)
- Facilitator operations → Booking approvals: reviews bookings (evidence: `README.md`)
- Users and admins → Support concerns: submits concerns (evidence: `README.md`)
- Users and admins → Booking notifications: receives updates (evidence: `README.md`)
- Bookings → Facilities: belongs to (evidence: `app/Models/Booking.php`)
- Bookings → Accounts and roles: belongs to (evidence: `app/Models/Booking.php`)
