# mattyinc/gobuzz architecture

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

## Overview

Go’Buzz Wellness is a wellness-club website with public marketing and founding-invitation pages, live sauna and ice-bath reservations, a client booking lookup, and private booking administration. The main guest workflow is to choose a facility and date, check available sessions, submit guest details, and receive a booking confirmation; guests can later retrieve booking details and a QR code. Business rules and persistence sit behind API routes. Supabase/SQLite selection and several page implementations are described by the README or tree but were not fully sampled, so uncertain internal wiring is omitted.

Main entry points: [`src/lib/booking-store.ts`](https://github.com/mattyinc/gobuzz/blob/main/src/lib/booking-store.ts) (Booking store), [`src/app/api/bookings/route.ts`](https://github.com/mattyinc/gobuzz/blob/main/src/app/api/bookings/route.ts) (Booking endpoint), [`src/components/booking-flow.tsx`](https://github.com/mattyinc/gobuzz/blob/main/src/components/booking-flow.tsx) (Booking flow), [`src/app/api/availability/route.ts`](https://github.com/mattyinc/gobuzz/blob/main/src/app/api/availability/route.ts) (Availability endpoint)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_public["Public experience"]
  node_home["Marketing site<br/>[page.tsx]"]
  node_teaser["Founding teaser<br/>[page.tsx]"]
  node_invitationform["Invitation form"]
  node_invitationapi["Invitation endpoint<br/>[route.ts]"]
end

subgraph group_booking["Booking workflow"]
  node_bookpage["Book page<br/>[page.tsx]"]
  node_bookingflow["Booking flow<br/>[booking-flow.tsx]"]
  node_availabilityapi["Availability endpoint<br/>[route.ts]"]
  node_facilityrules["Facility rules<br/>[facilities.ts]"]
  node_bookingapi["Booking endpoint<br/>[route.ts]"]
  node_portal["Booking portal<br/>[page.tsx]"]
  node_lookupapi["Booking lookup API<br/>[route.ts]"]
  node_qrapi["QR endpoint<br/>[route.ts]"]
end

subgraph group_admin["Booking administration"]
  node_adminlogin["Admin login<br/>[page.tsx]"]
  node_adminbookings["Admin bookings<br/>[page.tsx]"]
  node_adminfacilities["Admin facilities<br/>[page.tsx]"]
  node_adminapi["Admin booking API<br/>[route.ts]"]
end

subgraph group_data["Data and services"]
  node_invitationstore["Invitation store"]
  node_bookingstore["Booking store<br/>[booking-store.ts]"]
  node_bookingdb[("Booking database<br/>[db.ts]")]
  node_qrservice["QR generation<br/>[qr.ts]"]
  node_emailservice["Confirmation email<br/>[email.ts]"]
  node_supabaseserver["Supabase server client<br/>[server.ts]"]
end

node_guest(("Guest"))
node_visitor(("Site visitor"))
node_adminuser(("Admin"))
node_supabase[("Supabase")]
node_resend["Resend"]

node_visitor -->|"visits"| node_home
node_visitor -->|"visits"| node_teaser
node_teaser -->|"presents"| node_invitationform
node_invitationform -->|"submits request"| node_invitationapi
node_invitationapi -->|"saves request"| node_invitationstore
node_guest -->|"opens booking"| node_bookpage
node_bookpage -->|"renders"| node_bookingflow
node_bookingflow -->|"requests slots"| node_availabilityapi
node_availabilityapi -->|"uses rules"| node_facilityrules
node_availabilityapi -->|"reads occupancy"| node_bookingstore
node_bookingflow -->|"submits booking"| node_bookingapi
node_bookingapi -->|"validates session"| node_facilityrules
node_bookingapi -->|"creates booking"| node_bookingstore
node_bookingapi -->|"sends confirmation"| node_emailservice
node_emailservice -->|"generates QR"| node_qrservice
node_emailservice -.->|"sends email"| node_resend
node_guest -->|"looks up booking"| node_portal
node_portal -->|"requests booking"| node_lookupapi
node_lookupapi -->|"reads booking"| node_bookingstore
node_guest -->|"requests QR"| node_qrapi
node_qrapi -->|"reads booking"| node_bookingstore
node_qrapi -->|"renders QR"| node_qrservice
node_adminuser -->|"signs in"| node_adminlogin
node_adminuser -->|"manages bookings"| node_adminbookings
node_adminuser -->|"views facilities"| node_adminfacilities
node_adminbookings -->|"updates booking"| node_adminapi
node_adminapi -->|"checks auth"| node_supabaseserver
node_adminapi -->|"updates or deletes"| node_bookingstore
node_bookingstore -->|"uses SQLite fallback"| node_bookingdb
node_bookingstore -.->|"uses when configured"| node_supabase
node_supabaseserver -->|"authenticates"| node_supabase

click node_home "https://github.com/mattyinc/gobuzz/blob/main/src/app/page.tsx"
click node_teaser "https://github.com/mattyinc/gobuzz/blob/main/src/app/teaser/page.tsx"
click node_invitationform "https://github.com/mattyinc/gobuzz/blob/main/src/components/invitation-form.tsx"
click node_invitationapi "https://github.com/mattyinc/gobuzz/blob/main/src/app/api/invitations/route.ts"
click node_invitationstore "https://github.com/mattyinc/gobuzz/blob/main/src/lib/invitation-store.ts"
click node_bookpage "https://github.com/mattyinc/gobuzz/blob/main/src/app/book/page.tsx"
click node_bookingflow "https://github.com/mattyinc/gobuzz/blob/main/src/components/booking-flow.tsx"
click node_availabilityapi "https://github.com/mattyinc/gobuzz/blob/main/src/app/api/availability/route.ts"
click node_facilityrules "https://github.com/mattyinc/gobuzz/blob/main/src/lib/facilities.ts"
click node_bookingapi "https://github.com/mattyinc/gobuzz/blob/main/src/app/api/bookings/route.ts"
click node_bookingstore "https://github.com/mattyinc/gobuzz/blob/main/src/lib/booking-store.ts"
click node_bookingdb "https://github.com/mattyinc/gobuzz/blob/main/src/lib/db.ts"
click node_portal "https://github.com/mattyinc/gobuzz/blob/main/src/app/my-booking/page.tsx"
click node_lookupapi "https://github.com/mattyinc/gobuzz/blob/main/src/app/api/bookings/%5Bcode%5D/route.ts"
click node_qrapi "https://github.com/mattyinc/gobuzz/blob/main/src/app/api/bookings/%5Bcode%5D/qr/route.ts"
click node_qrservice "https://github.com/mattyinc/gobuzz/blob/main/src/lib/qr.ts"
click node_emailservice "https://github.com/mattyinc/gobuzz/blob/main/src/lib/email.ts"
click node_adminlogin "https://github.com/mattyinc/gobuzz/blob/main/src/app/admin/login/page.tsx"
click node_adminbookings "https://github.com/mattyinc/gobuzz/blob/main/src/app/admin/(protected)/bookings/page.tsx"
click node_adminfacilities "https://github.com/mattyinc/gobuzz/blob/main/src/app/admin/(protected)/facilities/page.tsx"
click node_adminapi "https://github.com/mattyinc/gobuzz/blob/main/src/app/api/admin/bookings/%5Bid%5D/route.ts"
click node_supabaseserver "https://github.com/mattyinc/gobuzz/blob/main/src/lib/supabase/server.ts"

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_teaser,node_invitationform,node_invitationapi toneBlue
class node_bookpage,node_bookingflow,node_availabilityapi,node_facilityrules,node_bookingapi,node_portal,node_lookupapi,node_qrapi,node_supabase toneAmber
class node_adminlogin,node_adminbookings,node_adminfacilities,node_adminapi toneMint
class node_invitationstore,node_bookingstore,node_bookingdb,node_qrservice,node_emailservice,node_supabaseserver toneRose
class node_guest,node_visitor,node_adminuser,node_resend toneIndigo
```

## Components

### Public experience

- [Marketing site](https://github.com/mattyinc/gobuzz/blob/main/src/app/page.tsx): `src/app/page.tsx`
- [Founding teaser](https://github.com/mattyinc/gobuzz/blob/main/src/app/teaser/page.tsx): `src/app/teaser/page.tsx`
- [Invitation form](https://github.com/mattyinc/gobuzz/blob/main/src/components/invitation-form.tsx): `src/components/invitation-form.tsx`
- [Invitation endpoint](https://github.com/mattyinc/gobuzz/blob/main/src/app/api/invitations/route.ts): `src/app/api/invitations/route.ts`

### Booking workflow

- [Book page](https://github.com/mattyinc/gobuzz/blob/main/src/app/book/page.tsx): `src/app/book/page.tsx`
- [Booking flow](https://github.com/mattyinc/gobuzz/blob/main/src/components/booking-flow.tsx): `src/components/booking-flow.tsx`
- [Availability endpoint](https://github.com/mattyinc/gobuzz/blob/main/src/app/api/availability/route.ts): `src/app/api/availability/route.ts`
- [Facility rules](https://github.com/mattyinc/gobuzz/blob/main/src/lib/facilities.ts): `src/lib/facilities.ts`
- [Booking endpoint](https://github.com/mattyinc/gobuzz/blob/main/src/app/api/bookings/route.ts): `src/app/api/bookings/route.ts`
- [Booking portal](https://github.com/mattyinc/gobuzz/blob/main/src/app/my-booking/page.tsx): `src/app/my-booking/page.tsx`
- [Booking lookup API](https://github.com/mattyinc/gobuzz/blob/main/src/app/api/bookings/%5Bcode%5D/route.ts): `src/app/api/bookings/[code]/route.ts`
- [QR endpoint](https://github.com/mattyinc/gobuzz/blob/main/src/app/api/bookings/%5Bcode%5D/qr/route.ts): `src/app/api/bookings/[code]/qr/route.ts`

### Booking administration

- [Admin login](https://github.com/mattyinc/gobuzz/blob/main/src/app/admin/login/page.tsx): `src/app/admin/login/page.tsx`
- [Admin bookings](https://github.com/mattyinc/gobuzz/blob/main/src/app/admin/(protected)/bookings/page.tsx): `src/app/admin/(protected)/bookings/page.tsx`
- [Admin facilities](https://github.com/mattyinc/gobuzz/blob/main/src/app/admin/(protected)/facilities/page.tsx): `src/app/admin/(protected)/facilities/page.tsx`
- [Admin booking API](https://github.com/mattyinc/gobuzz/blob/main/src/app/api/admin/bookings/%5Bid%5D/route.ts): `src/app/api/admin/bookings/[id]/route.ts`

### Data and services

- [Invitation store](https://github.com/mattyinc/gobuzz/blob/main/src/lib/invitation-store.ts): `src/lib/invitation-store.ts`
- [Booking store](https://github.com/mattyinc/gobuzz/blob/main/src/lib/booking-store.ts): `src/lib/booking-store.ts`
- [Booking database](https://github.com/mattyinc/gobuzz/blob/main/src/lib/db.ts): `src/lib/db.ts`
- [QR generation](https://github.com/mattyinc/gobuzz/blob/main/src/lib/qr.ts): `src/lib/qr.ts`
- [Confirmation email](https://github.com/mattyinc/gobuzz/blob/main/src/lib/email.ts): `src/lib/email.ts`
- [Supabase server client](https://github.com/mattyinc/gobuzz/blob/main/src/lib/supabase/server.ts): `src/lib/supabase/server.ts`

### Other components

- **Guest**
- **Site visitor**
- **Admin**
- **Supabase**
- **Resend**

## Connections

- Site visitor → Marketing site: visits
- Site visitor → Founding teaser: visits
- Founding teaser → Invitation form: presents
- Invitation form → Invitation endpoint: submits request
- Invitation endpoint → Invitation store: saves request
- Guest → Book page: opens booking
- Book page → Booking flow: renders
- Booking flow → Availability endpoint: requests slots
- Availability endpoint → Facility rules: uses rules
- Availability endpoint → Booking store: reads occupancy
- Booking flow → Booking endpoint: submits booking
- Booking endpoint → Facility rules: validates session
- Booking endpoint → Booking store: creates booking
- Booking endpoint → Confirmation email: sends confirmation
- Confirmation email → QR generation: generates QR
- Confirmation email → Resend: sends email
- Guest → Booking portal: looks up booking
- Booking portal → Booking lookup API: requests booking
- Booking lookup API → Booking store: reads booking
- Guest → QR endpoint: requests QR
- QR endpoint → Booking store: reads booking
- QR endpoint → QR generation: renders QR
- Admin → Admin login: signs in
- Admin → Admin bookings: manages bookings
- Admin → Admin facilities: views facilities
- Admin bookings → Admin booking API: updates booking
- Admin booking API → Supabase server client: checks auth
- Admin booking API → Booking store: updates or deletes
- Booking store → Booking database: uses SQLite fallback
- Booking store → Supabase: uses when configured
- Supabase server client → Supabase: authenticates
