# engelinecerda/capstone-website architecture

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

## Overview

This repository appears to implement an event-booking business portal: customers configure reservations, manage payments and contracts, and leave reviews, while staff administer bookings and business operations. The tree also shows customer-facing content, notifications, and a separate analytics/forecasting service. The README is empty, and most runtime files were not sampled, so the graph preserves the product areas evident from filenames but limits detailed call wiring to relationships supported by excerpts.

Main entry points: [`js/reservations.js`](https://github.com/engelinecerda/capstone-website/blob/master/js/reservations.js) (Reservation flow), [`js/supabase.js`](https://github.com/engelinecerda/capstone-website/blob/master/js/supabase.js) (Supabase client), [`python/main.py`](https://github.com/engelinecerda/capstone-website/blob/master/python/main.py) (Analytics API), [`js/reviews.js`](https://github.com/engelinecerda/capstone-website/blob/master/js/reviews.js) (Reviews)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_customer["Customer booking"]
  node_reservation_ui["Reservation flow<br/>[reservations.js]"]
  node_availability["Availability"]
  node_packages["Packages<br/>[packages.js]"]
  node_customer_payments["Payments"]
  node_customer_contract["Contract signing"]
  node_customer_reviews["Reviews<br/>[reviews.js]"]
end

subgraph group_staff["Staff operations"]
  node_admin_reservations["Reservation admin"]
  node_admin_payments["Payment admin<br/>[admin_payments.js]"]
  node_admin_contracts["Contract admin<br/>[admin_contracts.js]"]
  node_admin_reviews["Review admin<br/>[admin_reviews.js]"]
  node_admin_customers["Customer admin<br/>[admin_customers.js]"]
  node_admin_profile["Business settings"]
end

subgraph group_services["Backend services"]
  node_supabase_client["Supabase client<br/>[supabase.js]"]
  node_database[("Supabase data")]
  node_contract_fn["Contract generation<br/>[index.ts]"]
  node_contract_verify["Contract verification<br/>[index.ts]"]
  node_ocr["Payment OCR<br/>[index.ts]"]
  node_notifications["Notifications<br/>[notifications.js]"]
  node_email_fn["Notification email<br/>[index.ts]"]
  node_booking_db[("Reservation data")]
end

subgraph group_insights["Analytics"]
  node_analytics_api["Analytics API<br/>[main.py]"]
  node_forecast["Forecast generator<br/>[forecast.py]"]
end

node_customer(("Customer"))
node_cloudinary["Cloudinary"]
node_gemini["Gemini"]
node_vision["Google Vision"]
node_resend["Resend"]
node_staff(("Staff"))

node_customer -->|"configures booking"| node_reservation_ui
node_reservation_ui -->|"checks dates"| node_availability
node_reservation_ui -->|"selects package"| node_packages
node_reservation_ui -->|"uses client"| node_supabase_client
node_reservation_ui -->|"creates reservation"| node_booking_db
node_customer -->|"submits payment"| node_customer_payments
node_customer_payments -->|"uses client"| node_supabase_client
node_customer -->|"signs contract"| node_customer_contract
node_contract_fn -->|"reads reservation"| node_database
node_contract_fn -->|"uploads files"| node_cloudinary
node_contract_verify -->|"checks signature"| node_vision
node_contract_verify -->|"updates status"| node_database
node_ocr -->|"extracts fields"| node_gemini
node_ocr -->|"reads payment"| node_database
node_customer -->|"submits review"| node_customer_reviews
node_customer_reviews -->|"uses client"| node_supabase_client
node_customer_reviews -->|"reads reviews"| node_database
node_staff -->|"manages bookings"| node_admin_reservations
node_admin_reviews -->|"loads reviews"| node_database
node_admin_reviews -->|"uses client"| node_supabase_client
node_staff -->|"manages payments"| node_admin_payments
node_staff -->|"manages contracts"| node_admin_contracts
node_staff -->|"manages customers"| node_admin_customers
node_staff -->|"updates business"| node_admin_profile
node_notifications -->|"reads notifications"| node_database
node_email_fn -->|"sends email"| node_resend
node_email_fn -->|"reads notification"| node_database
node_analytics_api -->|"queries analytics"| node_database
node_analytics_api -->|"runs generation"| node_forecast
node_analytics_api -->|"serves dashboard data"| node_staff

click node_reservation_ui "https://github.com/engelinecerda/capstone-website/blob/master/js/reservations.js"
click node_availability "https://github.com/engelinecerda/capstone-website/blob/master/js/reservation_availability.js"
click node_packages "https://github.com/engelinecerda/capstone-website/blob/master/js/packages.js"
click node_customer_payments "https://github.com/engelinecerda/capstone-website/blob/master/js/customer_payments.js"
click node_customer_contract "https://github.com/engelinecerda/capstone-website/blob/master/js/reservation_details.js"
click node_customer_reviews "https://github.com/engelinecerda/capstone-website/blob/master/js/reviews.js"
click node_supabase_client "https://github.com/engelinecerda/capstone-website/blob/master/js/supabase.js"
click node_contract_fn "https://github.com/engelinecerda/capstone-website/blob/master/supabase/functions/generate-signed-contract/index.ts"
click node_contract_verify "https://github.com/engelinecerda/capstone-website/blob/master/supabase/functions/verify-contract/index.ts"
click node_ocr "https://github.com/engelinecerda/capstone-website/blob/master/supabase/functions/ocr-payment/index.ts"
click node_notifications "https://github.com/engelinecerda/capstone-website/blob/master/js/notifications.js"
click node_email_fn "https://github.com/engelinecerda/capstone-website/blob/master/supabase/functions/send-notification-email/index.ts"
click node_admin_reservations "https://github.com/engelinecerda/capstone-website/blob/master/js/admin_reservations.js"
click node_admin_payments "https://github.com/engelinecerda/capstone-website/blob/master/js/admin_payments.js"
click node_admin_contracts "https://github.com/engelinecerda/capstone-website/blob/master/js/admin_contracts.js"
click node_admin_reviews "https://github.com/engelinecerda/capstone-website/blob/master/js/admin_reviews.js"
click node_admin_customers "https://github.com/engelinecerda/capstone-website/blob/master/js/admin_customers.js"
click node_admin_profile "https://github.com/engelinecerda/capstone-website/blob/master/js/admin_business_profile.js"
click node_analytics_api "https://github.com/engelinecerda/capstone-website/blob/master/python/main.py"
click node_forecast "https://github.com/engelinecerda/capstone-website/blob/master/python/forecast.py"

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_reservation_ui,node_availability,node_packages,node_customer_payments,node_customer_contract,node_customer_reviews toneBlue
class node_admin_reservations,node_admin_payments,node_admin_contracts,node_admin_reviews,node_admin_customers,node_admin_profile toneAmber
class node_supabase_client,node_database,node_contract_fn,node_contract_verify,node_ocr,node_notifications,node_email_fn,node_booking_db toneMint
class node_analytics_api,node_forecast toneRose
class node_customer,node_cloudinary,node_gemini,node_vision,node_resend,node_staff toneIndigo
```

## Components

### Customer booking

- [Reservation flow](https://github.com/engelinecerda/capstone-website/blob/master/js/reservations.js): `js/reservations.js`
- [Availability](https://github.com/engelinecerda/capstone-website/blob/master/js/reservation_availability.js): `js/reservation_availability.js`
- [Packages](https://github.com/engelinecerda/capstone-website/blob/master/js/packages.js): `js/packages.js`
- [Payments](https://github.com/engelinecerda/capstone-website/blob/master/js/customer_payments.js): `js/customer_payments.js`
- [Contract signing](https://github.com/engelinecerda/capstone-website/blob/master/js/reservation_details.js): `js/reservation_details.js`
- [Reviews](https://github.com/engelinecerda/capstone-website/blob/master/js/reviews.js): `js/reviews.js`

### Staff operations

- [Reservation admin](https://github.com/engelinecerda/capstone-website/blob/master/js/admin_reservations.js): `js/admin_reservations.js`
- [Payment admin](https://github.com/engelinecerda/capstone-website/blob/master/js/admin_payments.js): `js/admin_payments.js`
- [Contract admin](https://github.com/engelinecerda/capstone-website/blob/master/js/admin_contracts.js): `js/admin_contracts.js`
- [Review admin](https://github.com/engelinecerda/capstone-website/blob/master/js/admin_reviews.js): `js/admin_reviews.js`
- [Customer admin](https://github.com/engelinecerda/capstone-website/blob/master/js/admin_customers.js): `js/admin_customers.js`
- [Business settings](https://github.com/engelinecerda/capstone-website/blob/master/js/admin_business_profile.js): `js/admin_business_profile.js`

### Backend services

- [Supabase client](https://github.com/engelinecerda/capstone-website/blob/master/js/supabase.js): `js/supabase.js`
- **Supabase data**
- [Contract generation](https://github.com/engelinecerda/capstone-website/blob/master/supabase/functions/generate-signed-contract/index.ts): `supabase/functions/generate-signed-contract/index.ts`
- [Contract verification](https://github.com/engelinecerda/capstone-website/blob/master/supabase/functions/verify-contract/index.ts): `supabase/functions/verify-contract/index.ts`
- [Payment OCR](https://github.com/engelinecerda/capstone-website/blob/master/supabase/functions/ocr-payment/index.ts): `supabase/functions/ocr-payment/index.ts`
- [Notifications](https://github.com/engelinecerda/capstone-website/blob/master/js/notifications.js): `js/notifications.js`
- [Notification email](https://github.com/engelinecerda/capstone-website/blob/master/supabase/functions/send-notification-email/index.ts): `supabase/functions/send-notification-email/index.ts`
- **Reservation data**

### Analytics

- [Analytics API](https://github.com/engelinecerda/capstone-website/blob/master/python/main.py): `python/main.py`
- [Forecast generator](https://github.com/engelinecerda/capstone-website/blob/master/python/forecast.py): `python/forecast.py`

### Other components

- **Customer**
- **Cloudinary**
- **Gemini**
- **Google Vision**
- **Resend**
- **Staff**

## Connections

- Customer → Reservation flow: configures booking
- Reservation flow → Availability: checks dates
- Reservation flow → Packages: selects package
- Reservation flow → Supabase client: uses client
- Reservation flow → Reservation data: creates reservation
- Customer → Payments: submits payment
- Payments → Supabase client: uses client
- Customer → Contract signing: signs contract
- Contract generation → Supabase data: reads reservation
- Contract generation → Cloudinary: uploads files
- Contract verification → Google Vision: checks signature
- Contract verification → Supabase data: updates status
- Payment OCR → Gemini: extracts fields
- Payment OCR → Supabase data: reads payment
- Customer → Reviews: submits review
- Reviews → Supabase client: uses client
- Reviews → Supabase data: reads reviews
- Staff → Reservation admin: manages bookings
- Review admin → Supabase data: loads reviews
- Review admin → Supabase client: uses client
- Staff → Payment admin: manages payments
- Staff → Contract admin: manages contracts
- Staff → Customer admin: manages customers
- Staff → Business settings: updates business
- Notifications → Supabase data: reads notifications
- Notification email → Resend: sends email
- Notification email → Supabase data: reads notification
- Analytics API → Supabase data: queries analytics
- Analytics API → Forecast generator: runs generation
- Analytics API → Staff: serves dashboard data
