# lave-auto/lavo architecture

> Architecture diagram of the GitHub repository lave-auto/lavo, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-22). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/lave-auto/lavo
- Repository: https://github.com/lave-auto/lavo

## Overview

Hurryline is a car-wash booking, queue, and payment platform serving clients, stations, and administrators. Clients discover stations and book or join queues, then manage reservations, payments, and follow-up actions. Stations configure their services and availability and handle incoming work; administrators oversee onboarding, disputes, settings, and platform operations. The README documents notifications and scheduled jobs as major capabilities, but sampled source does not establish their full wiring, so those links are omitted or kept broad.

Main entry points: [`src/app/api/v1/admin`](https://github.com/lave-auto/lavo/tree/main/src/app/api/v1/admin) (Admin operations), [`src/app/api/v1/me/notifications`](https://github.com/lave-auto/lavo/tree/main/src/app/api/v1/me/notifications) (Notifications), [`src/components/stations`](https://github.com/lave-auto/lavo/tree/main/src/components/stations) (Station listings), [`src/components/station`](https://github.com/lave-auto/lavo/tree/main/src/components/station) (Station workspace)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Client journey"]
  node_discovery["Station discovery<br/>[route.ts]"]
  node_stationpages["Station listings"]
  node_booking["Reservation booking"]
  node_queue["Queue lifecycle"]
  node_reservationactions["Reservation actions"]
  node_history["History and receipts"]
  node_rating["Ratings and disputes<br/>[route.ts]"]
end

subgraph group_station["Station operations"]
  node_stationonboarding["Station onboarding"]
  node_stationmanagement["Station configuration"]
  node_stationui["Station workspace"]
end

subgraph group_platform["Platform services"]
  node_auth["Account access"]
  node_authservice["Auth service<br/>[auth-service.ts]"]
  node_payments["Payment processing<br/>[route.ts]"]
  node_notifications["Notifications"]
  node_support["Support tickets<br/>[route.ts]"]
  node_jobs["Scheduled jobs"]
end

subgraph group_admin["Administration"]
  node_adminui["Admin workspace"]
  node_adminapi["Admin operations"]
  node_disputes["Dispute handling"]
  node_settings["Platform settings<br/>[route.ts]"]
end

node_clients(("Clients"))
node_stations(("Stations"))
node_admins(("Administrators"))
node_stripe["Stripe"]
node_database[("PostgreSQL")]

node_clients -->|"authenticate"| node_auth
node_auth -->|"register or login"| node_authservice
node_clients -->|"browse stations"| node_stationpages
node_stationpages -->|"request listings"| node_discovery
node_clients -->|"book service"| node_booking
node_clients -->|"join queue"| node_queue
node_clients -->|"manage booking"| node_reservationactions
node_clients -->|"view history"| node_history
node_clients -->|"rate or dispute"| node_rating
node_stations -->|"apply"| node_stationonboarding
node_stations -->|"manage station"| node_stationui
node_stationui -->|"configure operations"| node_stationmanagement
node_stripe -->|"send payment events"| node_payments
node_payments -->|"notify clients"| node_notifications
node_clients -->|"request support"| node_support
node_stations -->|"request support"| node_support
node_admins -->|"oversee platform"| node_adminui
node_adminui -->|"manage operations"| node_adminapi
node_adminapi -->|"review disputes"| node_disputes
node_adminapi -->|"manage settings"| node_settings
node_clients -.->|"receive updates"| node_notifications
node_jobs -.->|"send reminders"| node_notifications

click node_auth "https://github.com/lave-auto/lavo/tree/main/src/app/api/v1/auth"
click node_authservice "https://github.com/lave-auto/lavo/blob/main/src/server/auth/auth-service.ts"
click node_discovery "https://github.com/lave-auto/lavo/blob/main/src/app/api/v1/stations/route.ts"
click node_stationpages "https://github.com/lave-auto/lavo/tree/main/src/components/stations"
click node_booking "https://github.com/lave-auto/lavo/tree/main/src/app/api/v1/reservations"
click node_queue "https://github.com/lave-auto/lavo/tree/main/src/app/api/v1/stations"
click node_reservationactions "https://github.com/lave-auto/lavo/tree/main/src/app/api/v1/reservations"
click node_history "https://github.com/lave-auto/lavo/tree/main/src/app/api/v1/history"
click node_rating "https://github.com/lave-auto/lavo/blob/main/src/app/api/v1/ratings/route.ts"
click node_stationonboarding "https://github.com/lave-auto/lavo/tree/main/src/app/api/v1/stations/onboarding"
click node_stationmanagement "https://github.com/lave-auto/lavo/tree/main/src/app/api/v1/station"
click node_stationui "https://github.com/lave-auto/lavo/tree/main/src/components/station"
click node_payments "https://github.com/lave-auto/lavo/blob/main/src/app/api/v1/webhooks/stripe/route.ts"
click node_notifications "https://github.com/lave-auto/lavo/tree/main/src/app/api/v1/me/notifications"
click node_support "https://github.com/lave-auto/lavo/blob/main/src/app/api/v1/support/route.ts"
click node_adminui "https://github.com/lave-auto/lavo/tree/main/src/components/admin"
click node_adminapi "https://github.com/lave-auto/lavo/tree/main/src/app/api/v1/admin"
click node_disputes "https://github.com/lave-auto/lavo/tree/main/src/app/api/v1/admin/disputes"
click node_settings "https://github.com/lave-auto/lavo/blob/main/src/app/api/v1/admin/settings/route.ts"
click node_jobs "https://github.com/lave-auto/lavo/tree/main/src/app/api/cron"

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_discovery,node_stationpages,node_booking,node_queue,node_reservationactions,node_history,node_rating,node_clients toneBlue
class node_stationonboarding,node_stationmanagement,node_stationui,node_database toneAmber
class node_auth,node_authservice,node_payments,node_notifications,node_support,node_jobs toneMint
class node_adminui,node_adminapi,node_disputes,node_settings toneRose
class node_stations,node_admins,node_stripe toneIndigo
```

## Components

### Client journey

- [Station discovery](https://github.com/lave-auto/lavo/blob/main/src/app/api/v1/stations/route.ts): `src/app/api/v1/stations/route.ts`
- [Station listings](https://github.com/lave-auto/lavo/tree/main/src/components/stations): `src/components/stations`
- [Reservation booking](https://github.com/lave-auto/lavo/tree/main/src/app/api/v1/reservations): `src/app/api/v1/reservations`
- [Queue lifecycle](https://github.com/lave-auto/lavo/tree/main/src/app/api/v1/stations): `src/app/api/v1/stations`
- [Reservation actions](https://github.com/lave-auto/lavo/tree/main/src/app/api/v1/reservations): `src/app/api/v1/reservations`
- [History and receipts](https://github.com/lave-auto/lavo/tree/main/src/app/api/v1/history): `src/app/api/v1/history`
- [Ratings and disputes](https://github.com/lave-auto/lavo/blob/main/src/app/api/v1/ratings/route.ts): `src/app/api/v1/ratings/route.ts`

### Station operations

- [Station onboarding](https://github.com/lave-auto/lavo/tree/main/src/app/api/v1/stations/onboarding): `src/app/api/v1/stations/onboarding`
- [Station configuration](https://github.com/lave-auto/lavo/tree/main/src/app/api/v1/station): `src/app/api/v1/station`
- [Station workspace](https://github.com/lave-auto/lavo/tree/main/src/components/station): `src/components/station`

### Platform services

- [Account access](https://github.com/lave-auto/lavo/tree/main/src/app/api/v1/auth): `src/app/api/v1/auth`
- [Auth service](https://github.com/lave-auto/lavo/blob/main/src/server/auth/auth-service.ts): `src/server/auth/auth-service.ts`
- [Payment processing](https://github.com/lave-auto/lavo/blob/main/src/app/api/v1/webhooks/stripe/route.ts): `src/app/api/v1/webhooks/stripe/route.ts`
- [Notifications](https://github.com/lave-auto/lavo/tree/main/src/app/api/v1/me/notifications): `src/app/api/v1/me/notifications`
- [Support tickets](https://github.com/lave-auto/lavo/blob/main/src/app/api/v1/support/route.ts): `src/app/api/v1/support/route.ts`
- [Scheduled jobs](https://github.com/lave-auto/lavo/tree/main/src/app/api/cron): `src/app/api/cron`

### Administration

- [Admin workspace](https://github.com/lave-auto/lavo/tree/main/src/components/admin): `src/components/admin`
- [Admin operations](https://github.com/lave-auto/lavo/tree/main/src/app/api/v1/admin): `src/app/api/v1/admin`
- [Dispute handling](https://github.com/lave-auto/lavo/tree/main/src/app/api/v1/admin/disputes): `src/app/api/v1/admin/disputes`
- [Platform settings](https://github.com/lave-auto/lavo/blob/main/src/app/api/v1/admin/settings/route.ts): `src/app/api/v1/admin/settings/route.ts`

### Other components

- **Clients**
- **Stations**
- **Administrators**
- **Stripe**
- **PostgreSQL**

## Connections

- Clients → Account access: authenticate
- Account access → Auth service: register or login
- Clients → Station listings: browse stations
- Station listings → Station discovery: request listings
- Clients → Reservation booking: book service
- Clients → Queue lifecycle: join queue
- Clients → Reservation actions: manage booking
- Clients → History and receipts: view history
- Clients → Ratings and disputes: rate or dispute
- Stations → Station onboarding: apply
- Stations → Station workspace: manage station
- Station workspace → Station configuration: configure operations
- Stripe → Payment processing: send payment events
- Payment processing → Notifications: notify clients
- Clients → Support tickets: request support
- Stations → Support tickets: request support
- Administrators → Admin workspace: oversee platform
- Admin workspace → Admin operations: manage operations
- Admin operations → Dispute handling: review disputes
- Admin operations → Platform settings: manage settings
- Clients → Notifications: receive updates
- Scheduled jobs → Notifications: send reminders
