# emmanrubillos/catering_system architecture

> Architecture diagram of the GitHub repository emmanrubillos/catering_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/emmanrubillos/catering_system
- Repository: https://github.com/emmanrubillos/catering_system

## Overview

This is a Laravel catering and event-booking application. Customers browse catering services, menus, inclusions, and events, then configure a reservation with event details, location, guest/package choices, and payment information; submitted bookings are stored as pending and trigger email. Customers can also view reservations and request cancellation or rescheduling, while administrators manage catalogues, users, and reservation status and notifications. The tree and excerpts support these principal areas, but unsampled route declarations and several controllers limit certainty about their exact wiring.

Main entry points: [`routes/web.php`](https://github.com/emmanrubillos/catering_system/blob/staging/routes/web.php) (Web routes), [`app/Http/Controllers/Customer/MakeReservationController.php`](https://github.com/emmanrubillos/catering_system/blob/staging/app/Http/Controllers/Customer/MakeReservationController.php) (Reservation setup), [`app/Http/Controllers/Pages/HomeController.php`](https://github.com/emmanrubillos/catering_system/blob/staging/app/Http/Controllers/Pages/HomeController.php) (Home catalogue), [`app/Http/Controllers/Admin/Services/ServiceController.php`](https://github.com/emmanrubillos/catering_system/blob/staging/app/Http/Controllers/Admin/Services/ServiceController.php) (Service management)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_customer["Customer booking"]
  node_home["Home catalogue<br/>[HomeController.php]"]
  node_booking["Reservation setup"]
  node_profile["Customer profile"]
  node_registration["Customer registration"]
  node_booking_view["Booking screens<br/>[index.blade.php]"]
  node_profile_view["Profile screens<br/>[index.blade.php]"]
end

subgraph group_admin["Administration"]
  node_reservation_ops["Reservation operations"]
  node_service_admin["Service management"]
  node_user_admin["User management"]
  node_admin_views["Admin screens"]
end

subgraph group_domain["Catering domain"]
  node_service_model["Services<br/>[Service.php]"]
  node_inclusion_model["Inclusions<br/>[Inclusion.php]"]
  node_classification_model["Classifications<br/>[Classification.php]"]
  node_event_model["Events<br/>[Event.php]"]
  node_reservation_model["Reservations<br/>[Reservation.php]"]
  node_user_model["Users and roles<br/>[User.php]"]
end

subgraph group_platform["Web and messaging"]
  node_web_routes["Web routes<br/>[web.php]"]
  node_route_provider["Route provider"]
  node_mail_classes["Reservation mail"]
  node_mail_service["Mail service"]
end

node_customer(("Customer"))
node_admin_user(("Administrator"))
node_database[("SQL database")]

node_route_provider -->|"loads routes"| node_web_routes
node_customer -->|"requests pages"| node_web_routes
node_admin_user -->|"requests admin"| node_web_routes
node_web_routes -->|"dispatches"| node_home
node_web_routes -->|"dispatches"| node_booking
node_web_routes -->|"dispatches"| node_profile
node_web_routes -->|"dispatches"| node_reservation_ops
node_web_routes -->|"dispatches"| node_service_admin
node_web_routes -->|"dispatches"| node_user_admin
node_web_routes -->|"dispatches"| node_registration
node_home -->|"reads catalogue"| node_service_model
node_home -->|"reads groups"| node_classification_model
node_home -->|"reads inclusions"| node_inclusion_model
node_home -->|"reads events"| node_event_model
node_home -->|"renders"| node_booking_view
node_booking -->|"reads services"| node_service_model
node_booking -->|"reads groups"| node_classification_model
node_booking -->|"reads inclusions"| node_inclusion_model
node_booking -->|"reads events"| node_event_model
node_booking -->|"renders"| node_booking_view
node_booking -->|"creates booking"| node_reservation_model
node_booking -->|"sends booking mail"| node_mail_classes
node_mail_classes -->|"uses"| node_mail_service
node_profile -->|"reads reservations"| node_reservation_model
node_profile -->|"reads events"| node_event_model
node_profile -->|"renders"| node_profile_view
node_reservation_ops -->|"updates status"| node_reservation_model
node_reservation_ops -->|"sends notices"| node_mail_service
node_service_admin -->|"manages services"| node_service_model
node_service_admin -->|"reads groups"| node_classification_model
node_service_admin -->|"reads inclusions"| node_inclusion_model
node_service_admin -->|"renders"| node_admin_views
node_user_admin -->|"manages users"| node_user_model
node_user_admin -->|"renders"| node_admin_views
node_registration -->|"creates account"| node_user_model
node_registration -->|"persists account"| node_database
node_service_model -->|"reads and writes"| node_database
node_inclusion_model -->|"reads and writes"| node_database
node_classification_model -->|"reads and writes"| node_database
node_event_model -->|"reads and writes"| node_database
node_reservation_model -->|"reads and writes"| node_database
node_user_model -->|"reads and writes"| node_database

click node_web_routes "https://github.com/emmanrubillos/catering_system/blob/staging/routes/web.php"
click node_route_provider "https://github.com/emmanrubillos/catering_system/blob/staging/app/Providers/RouteServiceProvider.php"
click node_home "https://github.com/emmanrubillos/catering_system/blob/staging/app/Http/Controllers/Pages/HomeController.php"
click node_booking "https://github.com/emmanrubillos/catering_system/blob/staging/app/Http/Controllers/Customer/MakeReservationController.php"
click node_profile "https://github.com/emmanrubillos/catering_system/blob/staging/app/Http/Controllers/Admin/ProfileController.php"
click node_reservation_ops "https://github.com/emmanrubillos/catering_system/blob/staging/app/Http/Controllers/ReservationController.php"
click node_service_admin "https://github.com/emmanrubillos/catering_system/blob/staging/app/Http/Controllers/Admin/Services/ServiceController.php"
click node_user_admin "https://github.com/emmanrubillos/catering_system/blob/staging/app/Http/Controllers/Admin/UserController/UsersController.php"
click node_registration "https://github.com/emmanrubillos/catering_system/blob/staging/app/Http/Controllers/Auth/RegisterController.php"
click node_service_model "https://github.com/emmanrubillos/catering_system/blob/staging/app/Models/Service.php"
click node_inclusion_model "https://github.com/emmanrubillos/catering_system/blob/staging/app/Models/Inclusion.php"
click node_classification_model "https://github.com/emmanrubillos/catering_system/blob/staging/app/Models/Classification.php"
click node_event_model "https://github.com/emmanrubillos/catering_system/blob/staging/app/Models/Event.php"
click node_reservation_model "https://github.com/emmanrubillos/catering_system/blob/staging/app/Models/Reservation.php"
click node_user_model "https://github.com/emmanrubillos/catering_system/blob/staging/app/Models/User.php"
click node_booking_view "https://github.com/emmanrubillos/catering_system/blob/staging/resources/views/layouts/customer/make_reservation/index.blade.php"
click node_profile_view "https://github.com/emmanrubillos/catering_system/blob/staging/resources/views/layouts/customer/profile/index.blade.php"
click node_admin_views "https://github.com/emmanrubillos/catering_system/tree/staging/resources/views/admin2"
click node_mail_classes "https://github.com/emmanrubillos/catering_system/blob/staging/app/Mail/ReservationBookingMail.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_home,node_booking,node_profile,node_registration,node_booking_view,node_profile_view toneBlue
class node_reservation_ops,node_service_admin,node_user_admin,node_admin_views,node_database toneAmber
class node_service_model,node_inclusion_model,node_classification_model,node_event_model,node_reservation_model,node_user_model toneMint
class node_web_routes,node_route_provider,node_mail_classes,node_mail_service toneRose
class node_customer,node_admin_user toneIndigo
```

## Components

### Customer booking

- [Home catalogue](https://github.com/emmanrubillos/catering_system/blob/staging/app/Http/Controllers/Pages/HomeController.php): `app/Http/Controllers/Pages/HomeController.php`
- [Reservation setup](https://github.com/emmanrubillos/catering_system/blob/staging/app/Http/Controllers/Customer/MakeReservationController.php): `app/Http/Controllers/Customer/MakeReservationController.php`
- [Customer profile](https://github.com/emmanrubillos/catering_system/blob/staging/app/Http/Controllers/Admin/ProfileController.php): `app/Http/Controllers/Admin/ProfileController.php`
- [Customer registration](https://github.com/emmanrubillos/catering_system/blob/staging/app/Http/Controllers/Auth/RegisterController.php): `app/Http/Controllers/Auth/RegisterController.php`
- [Booking screens](https://github.com/emmanrubillos/catering_system/blob/staging/resources/views/layouts/customer/make_reservation/index.blade.php): `resources/views/layouts/customer/make_reservation/index.blade.php`
- [Profile screens](https://github.com/emmanrubillos/catering_system/blob/staging/resources/views/layouts/customer/profile/index.blade.php): `resources/views/layouts/customer/profile/index.blade.php`

### Administration

- [Reservation operations](https://github.com/emmanrubillos/catering_system/blob/staging/app/Http/Controllers/ReservationController.php): `app/Http/Controllers/ReservationController.php`
- [Service management](https://github.com/emmanrubillos/catering_system/blob/staging/app/Http/Controllers/Admin/Services/ServiceController.php): `app/Http/Controllers/Admin/Services/ServiceController.php`
- [User management](https://github.com/emmanrubillos/catering_system/blob/staging/app/Http/Controllers/Admin/UserController/UsersController.php): `app/Http/Controllers/Admin/UserController/UsersController.php`
- [Admin screens](https://github.com/emmanrubillos/catering_system/tree/staging/resources/views/admin2): `resources/views/admin2`

### Catering domain

- [Services](https://github.com/emmanrubillos/catering_system/blob/staging/app/Models/Service.php): `app/Models/Service.php`
- [Inclusions](https://github.com/emmanrubillos/catering_system/blob/staging/app/Models/Inclusion.php): `app/Models/Inclusion.php`
- [Classifications](https://github.com/emmanrubillos/catering_system/blob/staging/app/Models/Classification.php): `app/Models/Classification.php`
- [Events](https://github.com/emmanrubillos/catering_system/blob/staging/app/Models/Event.php): `app/Models/Event.php`
- [Reservations](https://github.com/emmanrubillos/catering_system/blob/staging/app/Models/Reservation.php): `app/Models/Reservation.php`
- [Users and roles](https://github.com/emmanrubillos/catering_system/blob/staging/app/Models/User.php): `app/Models/User.php`

### Web and messaging

- [Web routes](https://github.com/emmanrubillos/catering_system/blob/staging/routes/web.php): `routes/web.php`
- [Route provider](https://github.com/emmanrubillos/catering_system/blob/staging/app/Providers/RouteServiceProvider.php): `app/Providers/RouteServiceProvider.php`
- [Reservation mail](https://github.com/emmanrubillos/catering_system/blob/staging/app/Mail/ReservationBookingMail.php): `app/Mail/ReservationBookingMail.php`
- **Mail service**

### Other components

- **Customer**
- **Administrator**
- **SQL database**

## Connections

- Route provider → Web routes: loads routes
- Customer → Web routes: requests pages
- Administrator → Web routes: requests admin
- Web routes → Home catalogue: dispatches
- Web routes → Reservation setup: dispatches
- Web routes → Customer profile: dispatches
- Web routes → Reservation operations: dispatches
- Web routes → Service management: dispatches
- Web routes → User management: dispatches
- Web routes → Customer registration: dispatches
- Home catalogue → Services: reads catalogue
- Home catalogue → Classifications: reads groups
- Home catalogue → Inclusions: reads inclusions
- Home catalogue → Events: reads events
- Home catalogue → Booking screens: renders
- Reservation setup → Services: reads services
- Reservation setup → Classifications: reads groups
- Reservation setup → Inclusions: reads inclusions
- Reservation setup → Events: reads events
- Reservation setup → Booking screens: renders
- Reservation setup → Reservations: creates booking
- Reservation setup → Reservation mail: sends booking mail
- Reservation mail → Mail service: uses
- Customer profile → Reservations: reads reservations
- Customer profile → Events: reads events
- Customer profile → Profile screens: renders
- Reservation operations → Reservations: updates status
- Reservation operations → Mail service: sends notices
- Service management → Services: manages services
- Service management → Classifications: reads groups
- Service management → Inclusions: reads inclusions
- Service management → Admin screens: renders
- User management → Users and roles: manages users
- User management → Admin screens: renders
- Customer registration → Users and roles: creates account
- Customer registration → SQL database: persists account
- Services → SQL database: reads and writes
- Inclusions → SQL database: reads and writes
- Classifications → SQL database: reads and writes
- Events → SQL database: reads and writes
- Reservations → SQL database: reads and writes
- Users and roles → SQL database: reads and writes
