How cao-trong-khang/ticketbox works
TicketBox is a concert-ticketing system with a React web app, NestJS API and Android check-in app. The main audience workflow is browse concerts, place an order and pay; organizers manage concerts and ticket types, while staff scan tickets and VIP guests, including offline check-in with later sync. The map also preserves artist-bio generation and VIP imports documented in the README. Edges are limited to sampled calls/references or README-described workflows; unsampled feature links are omitted rather than inferred.
Main entry points: main.ts NestJS API · router.tsx Web Routes · CheckInRepository.kt Check-in Repository · api-client.ts API Client
Components 28
Web App
- Web Routes
frontend/src/app/router.tsx - Concert Browsing
frontend/src/features/concerts/pages/ConcertDetailPage.tsx - Order & Payment UI
frontend/src/features/orders/pages/OrderPendingPage.tsx - Organizer Console
frontend/src/features/organizer-concerts/pages/OrganizerConcertEditPage.tsx - Web Authentication
frontend/src/features/auth/session.ts - API Client
frontend/src/lib/api-client.ts
Backend API
- NestJS API
backend/src/main.ts - Authentication
backend/src/modules/auth/auth.service.ts - Access Control
backend/src/modules/rbac/permissions.guard.ts - Order Management
backend/src/modules/orders/orders.controller.ts - Payment Processing
backend/src/modules/payments/payments.controller.ts - Check-in Service
backend/src/modules/check-in/check-in.service.ts
Concert Operations
- Concert Catalog
backend/src/modules/concerts/concerts.service.ts - Concert Management
backend/src/modules/concerts/organizer-concerts.service.ts - AI Artist Bio
backend/src/modules/artist-bio/artist-bio-preview.controller.ts - VIP Imports
backend/src/modules/vip-imports/vip-imports.controller.ts - Notifications
backend/src/modules/notifications/notifications.controller.ts
Mobile Check-in
- Staff Check-in UI
mobile-checkin/app/src/main/java/com/ticketbox/checkin/ui/navigation/StaffCheckInApp.kt - Check-in Repository
mobile-checkin/app/src/main/java/com/ticketbox/checkin/data/CheckInRepository.kt - Offline Scan Logic
mobile-checkin/app/src/main/java/com/ticketbox/checkin/domain/ScanValidator.kt - Local Check-in Store
mobile-checkin/app/src/main/java/com/ticketbox/checkin/data/local/CheckInDatabase.kt - Check-in API Client
mobile-checkin/app/src/main/java/com/ticketbox/checkin/data/network/CheckInApiClient.kt - Background Sync
mobile-checkin/app/src/main/java/com/ticketbox/checkin/sync/CheckInSyncWorker.kt
Shared Platform
- PostgreSQL
- Redis
- Kafka
- MinIO
Other components
- Audience / Staff
Connections 31
- Audience / Staff → Web Routes: uses
frontend/src/app/router.tsx - Web Routes → Concert Browsing: routes to
frontend/src/app/router.tsx - Web Routes → Order & Payment UI: routes to
frontend/src/app/router.tsx - Web Routes → Organizer Console: routes to
frontend/src/app/router.tsx - Web Routes → Web Authentication: checks session
frontend/src/app/router.tsx - Concert Browsing → API Client: requests data
- Order & Payment UI → API Client: requests checkout
- Organizer Console → API Client: requests changes
- API Client → NestJS API: calls API
- NestJS API → Authentication: authenticates
- NestJS API → Concert Catalog: serves catalog
- NestJS API → Concert Management: serves management
- NestJS API → Order Management: serves orders
backend/src/modules/orders/orders.controller.ts - Order Management → Payment Processing: checkout proceeds
- NestJS API → Payment Processing: serves payments
backend/src/modules/payments/payments.controller.ts - NestJS API → AI Artist Bio: serves bio preview
backend/src/modules/artist-bio/artist-bio-preview.controller.ts - NestJS API → VIP Imports: serves imports
- NestJS API → Notifications: serves notifications
backend/src/modules/notifications/notifications.controller.ts - Audience / Staff → Staff Check-in UI: uses
README.md - Staff Check-in UI → Check-in Repository: operates check-in
- Check-in Repository → Offline Scan Logic: validates scans
mobile-checkin/app/src/main/java/com/ticketbox/checkin/data/CheckInRepository.kt - Check-in Repository → Local Check-in Store: reads and writes
mobile-checkin/app/src/main/java/com/ticketbox/checkin/data/CheckInRepository.kt - Check-in Repository → Check-in API Client: sends sync
mobile-checkin/app/src/main/java/com/ticketbox/checkin/data/CheckInRepository.kt - Background Sync → Check-in Repository: runs sync
mobile-checkin/app/src/main/java/com/ticketbox/checkin/sync/CheckInSyncWorker.kt - Check-in API Client → Check-in Service: calls check-in API
- NestJS API → Check-in Service: routes check-in
- NestJS API → Access Control: guards requests
- NestJS API → PostgreSQL: persists application data
- NestJS API → Redis: uses cache / limits
- NestJS API → Kafka: publishes events
- NestJS API → MinIO: stores banners