# brandonkoh01/ticketblitz architecture

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

## Overview

TicketBlitz is a concert-ticketing platform with fan booking, organiser flash sales, and cancellation/refund workflows. The main path runs from the fan-facing Vue app through the API gateway to reservation orchestration, with asynchronous booking fulfillment and downstream ticketing/notification work. The graph also preserves the organiser and cancellation branches described in the README. Some backend excerpts are partial, so only documented service relationships and visible calls are shown; uncertain internal wiring is omitted.

Main entry points: [`backend/composite/cancellation-orchestrator/cancellation_orchestrator.py`](https://github.com/brandonkoh01/ticketblitz/blob/main/backend/composite/cancellation-orchestrator/cancellation_orchestrator.py) (Cancellation API), [`backend/composite/booking-fulfillment-orchestrator/booking_fulfillment_worker.py`](https://github.com/brandonkoh01/ticketblitz/blob/main/backend/composite/booking-fulfillment-orchestrator/booking_fulfillment_worker.py) (Booking fulfillment), [`backend/composite/reservation-orchestrator/app.py`](https://github.com/brandonkoh01/ticketblitz/blob/main/backend/composite/reservation-orchestrator/app.py) (Reservation API), [`backend/composite/flash-sale-orchestrator/flash_sale_orchestrator.py`](https://github.com/brandonkoh01/ticketblitz/blob/main/backend/composite/flash-sale-orchestrator/flash_sale_orchestrator.py) (Flash sale API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Vue client"]
  node_vue["Ticketing UI<br/>[App.vue]"]
  node_booking_ui["Booking screens"]
  node_dashboard["Sale dashboard"]
  node_api_client["API client<br/>[apiClient.js]"]
end

subgraph group_booking["Booking services"]
  node_reservation["Reservation API<br/>[app.py]"]
  node_fulfillment["Booking fulfillment"]
  node_booking_status["Booking status<br/>[booking_status.py]"]
  node_inventory["Inventory service<br/>[inventory.py]"]
  node_waitlist["Waitlist service<br/>[waitlist.py]"]
  node_promotion["Waitlist promotion"]
end

subgraph group_sale["Sale services"]
  node_events["Event service<br/>[event.py]"]
  node_flash_sale["Flash sale API"]
  node_pricing["Pricing service<br/>[pricing.py]"]
  node_pricing_worker["Pricing worker"]
end

subgraph group_cancellation["Cancellation services"]
  node_cancellation_api["Cancellation API"]
  node_payment["Payment service<br/>[payment.py]"]
end

subgraph group_platform["Shared platform"]
  node_gateway{{"Kong gateway"}}
  node_event_bus["RabbitMQ"]
  node_database[("Supabase PostgreSQL")]
  node_stripe{{"Stripe"}}
  node_outsystems{{"OutSystems e-tickets"}}
  node_notification["Notification worker<br/>[notification.py]"]
  node_sendgrid{{"SendGrid"}}
end

node_fan(("Fan"))
node_organiser(("Organiser"))

node_fan -->|"uses"| node_vue
node_organiser -->|"uses"| node_vue
node_vue -->|"routes to"| node_booking_ui
node_booking_ui -->|"requests through"| node_api_client
node_dashboard -->|"requests through"| node_api_client
node_api_client -->|"sends API requests"| node_gateway
node_gateway -->|"routes booking"| node_reservation
node_gateway -->|"routes sale"| node_flash_sale
node_gateway -->|"routes cancellation"| node_cancellation_api
node_reservation -->|"requests holds"| node_inventory
node_reservation -->|"requests waitlist"| node_waitlist
node_reservation -->|"publishes events"| node_event_bus
node_event_bus -->|"dispatches booking"| node_fulfillment
node_fulfillment -->|"confirms hold"| node_inventory
node_fulfillment -->|"looks up entry"| node_waitlist
node_fulfillment -.->|"generates ticket"| node_outsystems
node_fulfillment -->|"publishes notification"| node_event_bus
node_vue -->|"checks status"| node_booking_status
node_flash_sale -->|"updates prices"| node_pricing
node_flash_sale -->|"loads event data"| node_events
node_flash_sale -->|"broadcasts prices"| node_event_bus
node_event_bus -->|"dispatches sale events"| node_pricing_worker
node_pricing_worker -->|"loads event data"| node_events
node_pricing_worker -->|"updates pricing"| node_pricing
node_cancellation_api -->|"updates refund"| node_payment
node_cancellation_api -->|"releases seat"| node_inventory
node_cancellation_api -->|"checks waitlist"| node_waitlist
node_cancellation_api -.->|"updates ticket"| node_outsystems
node_cancellation_api -->|"publishes notification"| node_event_bus
node_event_bus -->|"dispatches messages"| node_notification
node_notification -.->|"sends email"| node_sendgrid
node_payment -.->|"processes payment"| node_stripe
node_database --> node_database

click node_vue "https://github.com/brandonkoh01/ticketblitz/blob/main/frontend/src/App.vue"
click node_booking_ui "https://github.com/brandonkoh01/ticketblitz/blob/main/frontend/src/pages/TicketPurchasePage.vue"
click node_dashboard "https://github.com/brandonkoh01/ticketblitz/blob/main/frontend/src/composables/useOrganiserDashboardScenario2.js"
click node_api_client "https://github.com/brandonkoh01/ticketblitz/blob/main/frontend/src/lib/apiClient.js"
click node_reservation "https://github.com/brandonkoh01/ticketblitz/blob/main/backend/composite/reservation-orchestrator/app.py"
click node_fulfillment "https://github.com/brandonkoh01/ticketblitz/blob/main/backend/composite/booking-fulfillment-orchestrator/booking_fulfillment_worker.py"
click node_booking_status "https://github.com/brandonkoh01/ticketblitz/blob/main/backend/composite/booking-status-service/booking_status.py"
click node_inventory "https://github.com/brandonkoh01/ticketblitz/blob/main/backend/atomic/inventory-service/inventory.py"
click node_waitlist "https://github.com/brandonkoh01/ticketblitz/blob/main/backend/atomic/waitlist-service/waitlist.py"
click node_promotion "https://github.com/brandonkoh01/ticketblitz/blob/main/backend/composite/waitlist-promotion-orchestrator/waitlist_promotion.py"
click node_events "https://github.com/brandonkoh01/ticketblitz/blob/main/backend/atomic/event-service/event.py"
click node_flash_sale "https://github.com/brandonkoh01/ticketblitz/blob/main/backend/composite/flash-sale-orchestrator/flash_sale_orchestrator.py"
click node_pricing "https://github.com/brandonkoh01/ticketblitz/blob/main/backend/atomic/pricing-service/pricing.py"
click node_pricing_worker "https://github.com/brandonkoh01/ticketblitz/blob/main/backend/composite/pricing-orchestrator/pricing_orchestrator.py"
click node_cancellation_api "https://github.com/brandonkoh01/ticketblitz/blob/main/backend/composite/cancellation-orchestrator/cancellation_orchestrator.py"
click node_payment "https://github.com/brandonkoh01/ticketblitz/blob/main/backend/atomic/payment-service/payment.py"
click node_notification "https://github.com/brandonkoh01/ticketblitz/blob/main/backend/atomic/notification-service/notification.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_vue,node_booking_ui,node_dashboard,node_api_client toneBlue
class node_reservation,node_fulfillment,node_booking_status,node_inventory,node_waitlist,node_promotion toneAmber
class node_events,node_flash_sale,node_pricing,node_pricing_worker toneMint
class node_cancellation_api,node_payment toneRose
class node_gateway,node_event_bus,node_database,node_stripe,node_outsystems,node_notification,node_sendgrid,node_fan,node_organiser toneIndigo
```

## Components

### Vue client

- [Ticketing UI](https://github.com/brandonkoh01/ticketblitz/blob/main/frontend/src/App.vue): `frontend/src/App.vue`
- [Booking screens](https://github.com/brandonkoh01/ticketblitz/blob/main/frontend/src/pages/TicketPurchasePage.vue): `frontend/src/pages/TicketPurchasePage.vue`
- [Sale dashboard](https://github.com/brandonkoh01/ticketblitz/blob/main/frontend/src/composables/useOrganiserDashboardScenario2.js): `frontend/src/composables/useOrganiserDashboardScenario2.js`
- [API client](https://github.com/brandonkoh01/ticketblitz/blob/main/frontend/src/lib/apiClient.js): `frontend/src/lib/apiClient.js`

### Booking services

- [Reservation API](https://github.com/brandonkoh01/ticketblitz/blob/main/backend/composite/reservation-orchestrator/app.py): `backend/composite/reservation-orchestrator/app.py`
- [Booking fulfillment](https://github.com/brandonkoh01/ticketblitz/blob/main/backend/composite/booking-fulfillment-orchestrator/booking_fulfillment_worker.py): `backend/composite/booking-fulfillment-orchestrator/booking_fulfillment_worker.py`
- [Booking status](https://github.com/brandonkoh01/ticketblitz/blob/main/backend/composite/booking-status-service/booking_status.py): `backend/composite/booking-status-service/booking_status.py`
- [Inventory service](https://github.com/brandonkoh01/ticketblitz/blob/main/backend/atomic/inventory-service/inventory.py): `backend/atomic/inventory-service/inventory.py`
- [Waitlist service](https://github.com/brandonkoh01/ticketblitz/blob/main/backend/atomic/waitlist-service/waitlist.py): `backend/atomic/waitlist-service/waitlist.py`
- [Waitlist promotion](https://github.com/brandonkoh01/ticketblitz/blob/main/backend/composite/waitlist-promotion-orchestrator/waitlist_promotion.py): `backend/composite/waitlist-promotion-orchestrator/waitlist_promotion.py`

### Sale services

- [Event service](https://github.com/brandonkoh01/ticketblitz/blob/main/backend/atomic/event-service/event.py): `backend/atomic/event-service/event.py`
- [Flash sale API](https://github.com/brandonkoh01/ticketblitz/blob/main/backend/composite/flash-sale-orchestrator/flash_sale_orchestrator.py): `backend/composite/flash-sale-orchestrator/flash_sale_orchestrator.py`
- [Pricing service](https://github.com/brandonkoh01/ticketblitz/blob/main/backend/atomic/pricing-service/pricing.py): `backend/atomic/pricing-service/pricing.py`
- [Pricing worker](https://github.com/brandonkoh01/ticketblitz/blob/main/backend/composite/pricing-orchestrator/pricing_orchestrator.py): `backend/composite/pricing-orchestrator/pricing_orchestrator.py`

### Cancellation services

- [Cancellation API](https://github.com/brandonkoh01/ticketblitz/blob/main/backend/composite/cancellation-orchestrator/cancellation_orchestrator.py): `backend/composite/cancellation-orchestrator/cancellation_orchestrator.py`
- [Payment service](https://github.com/brandonkoh01/ticketblitz/blob/main/backend/atomic/payment-service/payment.py): `backend/atomic/payment-service/payment.py`

### Shared platform

- **Kong gateway**
- **RabbitMQ**
- **Supabase PostgreSQL**
- **Stripe**
- **OutSystems e-tickets**
- [Notification worker](https://github.com/brandonkoh01/ticketblitz/blob/main/backend/atomic/notification-service/notification.py): `backend/atomic/notification-service/notification.py`
- **SendGrid**

### Other components

- **Fan**
- **Organiser**

## Connections

- Fan → Ticketing UI: uses
- Organiser → Ticketing UI: uses
- Ticketing UI → Booking screens: routes to
- Booking screens → API client: requests through
- Sale dashboard → API client: requests through
- API client → Kong gateway: sends API requests
- Kong gateway → Reservation API: routes booking
- Kong gateway → Flash sale API: routes sale
- Kong gateway → Cancellation API: routes cancellation
- Reservation API → Inventory service: requests holds
- Reservation API → Waitlist service: requests waitlist
- Reservation API → RabbitMQ: publishes events
- RabbitMQ → Booking fulfillment: dispatches booking
- Booking fulfillment → Inventory service: confirms hold
- Booking fulfillment → Waitlist service: looks up entry
- Booking fulfillment → OutSystems e-tickets: generates ticket
- Booking fulfillment → RabbitMQ: publishes notification
- Ticketing UI → Booking status: checks status
- Flash sale API → Pricing service: updates prices
- Flash sale API → Event service: loads event data
- Flash sale API → RabbitMQ: broadcasts prices
- RabbitMQ → Pricing worker: dispatches sale events
- Pricing worker → Event service: loads event data
- Pricing worker → Pricing service: updates pricing
- Cancellation API → Payment service: updates refund
- Cancellation API → Inventory service: releases seat
- Cancellation API → Waitlist service: checks waitlist
- Cancellation API → OutSystems e-tickets: updates ticket
- Cancellation API → RabbitMQ: publishes notification
- RabbitMQ → Notification worker: dispatches messages
- Notification worker → SendGrid: sends email
- Payment service → Stripe: processes payment
- Supabase PostgreSQL → Supabase PostgreSQL
