# dorayakiiiiz/ticket-box architecture

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

- Interactive diagram: https://gitdiagram.com/dorayakiiiiz/ticket-box
- Repository: https://github.com/dorayakiiiiz/ticket-box

## Overview

TicketBox is an event-ticketing platform with a Next.js audience/admin web app, a NestJS API, and a documented Flutter check-in app. The main flow is discover a concert, reserve limited inventory, pay through MoMo or VNPay, then retrieve and scan tickets. Organizer capabilities include concert and ticket-type management, AI-generated artist bios, guest imports, and dashboards. The README documents Redis/BullMQ concurrency controls and offline mobile sync; mobile implementation files and several service internals were not sampled, so those links are limited to documented behavior and supported tree paths.

Main entry points: [`src/frontend/src/services`](https://github.com/dorayakiiiiz/ticket-box/tree/main/src/frontend/src/services) (Web API clients), [`src/backend/src/concert`](https://github.com/dorayakiiiiz/ticket-box/tree/main/src/backend/src/concert) (Concert catalog), [`src/backend/src/booking`](https://github.com/dorayakiiiiz/ticket-box/tree/main/src/backend/src/booking) (Booking processing), [`src/backend/src/payment`](https://github.com/dorayakiiiiz/ticket-box/tree/main/src/backend/src/payment) (Payment strategies)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web experience"]
  node_webapp["Web app"]
  node_webservices["Web API clients"]
end

subgraph group_commerce["Ticket commerce"]
  node_concerts["Concert catalog"]
  node_booking["Booking API"]
  node_bookinglogic["Booking processing"]
  node_orders["Order processing<br/>[order.processor.ts]"]
  node_payments["Payment API"]
  node_paymentlogic["Payment strategies"]
  node_tickets["Ticket services"]
end

subgraph group_operations["Event operations"]
  node_admin["Admin dashboard"]
  node_guests["Guest management"]
  node_ai["AI bio worker"]
  node_mobile["Flutter check-in app"]
end

subgraph group_platform["Shared platform"]
  node_auth["Authentication"]
  node_redis[("Redis inventory")]
  node_database[("PostgreSQL")]
  node_aiproviders["AI providers"]
  node_notifications["Notification worker"]
  node_storage["File storage"]
end

node_audience(("Ticket buyer"))
node_organizer(("Organizer"))
node_staff(("Check-in staff"))
node_gateway["Payment gateways"]
node_supabase["Supabase services"]

node_audience -->|"browses and books"| node_webapp
node_organizer -->|"manages events"| node_webapp
node_webapp -->|"uses API clients"| node_webservices
node_webservices -->|"auth requests"| node_auth
node_webservices -->|"concert requests"| node_concerts
node_webservices -->|"booking requests"| node_booking
node_webservices -->|"payment requests"| node_payments
node_webservices -->|"ticket requests"| node_tickets
node_auth -->|"reads and writes"| node_database
node_auth -->|"queues OTP email"| node_notifications
node_concerts -->|"reads and writes"| node_database
node_concerts -->|"uploads files"| node_storage
node_storage -->|"stores images"| node_supabase
node_concerts -->|"queues bio work"| node_ai
node_ai -->|"requests summaries"| node_aiproviders
node_booking -->|"handles booking"| node_bookinglogic
node_bookinglogic -->|"reserves inventory"| node_redis
node_bookinglogic -->|"queues orders"| node_orders
node_orders -->|"updates orders"| node_database
node_payments -->|"creates URLs and handles IPN"| node_paymentlogic
node_paymentlogic -->|"requests payment"| node_gateway
node_paymentlogic -->|"settles order"| node_orders
node_tickets -->|"reads and writes"| node_database
node_webservices -->|"admin requests"| node_admin
node_admin -->|"reads and writes"| node_database
node_webservices -->|"guest requests"| node_guests
node_guests -->|"reads and writes"| node_database
node_guests -.->|"serves sync data"| node_mobile
node_mobile -.->|"scans and syncs tickets"| node_tickets
node_staff -->|"checks in attendees"| node_mobile

click node_webapp "https://github.com/dorayakiiiiz/ticket-box/tree/main/src/frontend/src/app"
click node_webservices "https://github.com/dorayakiiiiz/ticket-box/tree/main/src/frontend/src/services"
click node_auth "https://github.com/dorayakiiiiz/ticket-box/tree/main/src/backend/src/auth"
click node_concerts "https://github.com/dorayakiiiiz/ticket-box/tree/main/src/backend/src/concert"
click node_booking "https://github.com/dorayakiiiiz/ticket-box/blob/main/src/backend/src/booking/booking.controller.ts"
click node_bookinglogic "https://github.com/dorayakiiiiz/ticket-box/tree/main/src/backend/src/booking"
click node_redis "https://github.com/dorayakiiiiz/ticket-box/tree/main/src/backend/src/redis"
click node_orders "https://github.com/dorayakiiiiz/ticket-box/blob/main/src/backend/src/booking/order.processor.ts"
click node_payments "https://github.com/dorayakiiiiz/ticket-box/blob/main/src/backend/src/payment/payment.controller.ts"
click node_paymentlogic "https://github.com/dorayakiiiiz/ticket-box/tree/main/src/backend/src/payment"
click node_tickets "https://github.com/dorayakiiiiz/ticket-box/tree/main/src/backend/src/ticket"
click node_admin "https://github.com/dorayakiiiiz/ticket-box/tree/main/src/backend/src/admin"
click node_guests "https://github.com/dorayakiiiiz/ticket-box/tree/main/src/backend/src/guest"
click node_ai "https://github.com/dorayakiiiiz/ticket-box/blob/main/src/backend/src/concert/ai-bio.processor.ts"
click node_aiproviders "https://github.com/dorayakiiiiz/ticket-box/tree/main/src/backend/src/ai-provider"
click node_notifications "https://github.com/dorayakiiiiz/ticket-box/tree/main/src/backend/src/notification"
click node_storage "https://github.com/dorayakiiiiz/ticket-box/tree/main/src/backend/src/storage"
click node_mobile "https://github.com/dorayakiiiiz/ticket-box/tree/main/src/mobile"

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_webapp,node_webservices toneBlue
class node_concerts,node_booking,node_bookinglogic,node_orders,node_payments,node_paymentlogic,node_tickets toneAmber
class node_admin,node_guests,node_ai,node_mobile toneMint
class node_auth,node_redis,node_database,node_aiproviders,node_notifications,node_storage toneRose
class node_audience,node_organizer,node_staff,node_gateway,node_supabase toneIndigo
```

## Components

### Web experience

- [Web app](https://github.com/dorayakiiiiz/ticket-box/tree/main/src/frontend/src/app): `src/frontend/src/app`
- [Web API clients](https://github.com/dorayakiiiiz/ticket-box/tree/main/src/frontend/src/services): `src/frontend/src/services`

### Ticket commerce

- [Concert catalog](https://github.com/dorayakiiiiz/ticket-box/tree/main/src/backend/src/concert): `src/backend/src/concert`
- [Booking API](https://github.com/dorayakiiiiz/ticket-box/blob/main/src/backend/src/booking/booking.controller.ts): `src/backend/src/booking/booking.controller.ts`
- [Booking processing](https://github.com/dorayakiiiiz/ticket-box/tree/main/src/backend/src/booking): `src/backend/src/booking`
- [Order processing](https://github.com/dorayakiiiiz/ticket-box/blob/main/src/backend/src/booking/order.processor.ts): `src/backend/src/booking/order.processor.ts`
- [Payment API](https://github.com/dorayakiiiiz/ticket-box/blob/main/src/backend/src/payment/payment.controller.ts): `src/backend/src/payment/payment.controller.ts`
- [Payment strategies](https://github.com/dorayakiiiiz/ticket-box/tree/main/src/backend/src/payment): `src/backend/src/payment`
- [Ticket services](https://github.com/dorayakiiiiz/ticket-box/tree/main/src/backend/src/ticket): `src/backend/src/ticket`

### Event operations

- [Admin dashboard](https://github.com/dorayakiiiiz/ticket-box/tree/main/src/backend/src/admin): `src/backend/src/admin`
- [Guest management](https://github.com/dorayakiiiiz/ticket-box/tree/main/src/backend/src/guest): `src/backend/src/guest`
- [AI bio worker](https://github.com/dorayakiiiiz/ticket-box/blob/main/src/backend/src/concert/ai-bio.processor.ts): `src/backend/src/concert/ai-bio.processor.ts`
- [Flutter check-in app](https://github.com/dorayakiiiiz/ticket-box/tree/main/src/mobile): `src/mobile`

### Shared platform

- [Authentication](https://github.com/dorayakiiiiz/ticket-box/tree/main/src/backend/src/auth): `src/backend/src/auth`
- [Redis inventory](https://github.com/dorayakiiiiz/ticket-box/tree/main/src/backend/src/redis): `src/backend/src/redis`
- **PostgreSQL**
- [AI providers](https://github.com/dorayakiiiiz/ticket-box/tree/main/src/backend/src/ai-provider): `src/backend/src/ai-provider`
- [Notification worker](https://github.com/dorayakiiiiz/ticket-box/tree/main/src/backend/src/notification): `src/backend/src/notification`
- [File storage](https://github.com/dorayakiiiiz/ticket-box/tree/main/src/backend/src/storage): `src/backend/src/storage`

### Other components

- **Ticket buyer**
- **Organizer**
- **Check-in staff**
- **Payment gateways**
- **Supabase services**

## Connections

- Ticket buyer → Web app: browses and books
- Organizer → Web app: manages events
- Web app → Web API clients: uses API clients
- Web API clients → Authentication: auth requests
- Web API clients → Concert catalog: concert requests
- Web API clients → Booking API: booking requests
- Web API clients → Payment API: payment requests
- Web API clients → Ticket services: ticket requests
- Authentication → PostgreSQL: reads and writes
- Authentication → Notification worker: queues OTP email
- Concert catalog → PostgreSQL: reads and writes
- Concert catalog → File storage: uploads files
- File storage → Supabase services: stores images
- Concert catalog → AI bio worker: queues bio work
- AI bio worker → AI providers: requests summaries
- Booking API → Booking processing: handles booking
- Booking processing → Redis inventory: reserves inventory
- Booking processing → Order processing: queues orders
- Order processing → PostgreSQL: updates orders
- Payment API → Payment strategies: creates URLs and handles IPN
- Payment strategies → Payment gateways: requests payment
- Payment strategies → Order processing: settles order
- Ticket services → PostgreSQL: reads and writes
- Web API clients → Admin dashboard: admin requests
- Admin dashboard → PostgreSQL: reads and writes
- Web API clients → Guest management: guest requests
- Guest management → PostgreSQL: reads and writes
- Guest management → Flutter check-in app: serves sync data
- Flutter check-in app → Ticket services: scans and syncs tickets
- Check-in staff → Flutter check-in app: checks in attendees
