How schulczistvanjr/ticketing works
Ticketing is a web marketplace where users browse tickets, authenticate, place orders, and pay; tickets and orders also change through expiry and payment events. The map follows the sampled service startup and routing code plus event and route names in the tree; several route and listener implementations were not sampled, so uncertain call wiring is omitted.
Main entry points: build-client.js HTTP client · src/app.ts Orders API · src/app.ts Auth API · src/app.ts Tickets API
Components 30
Web client
- Web pages
client/pages - HTTP client
client/api/build-client.js
Identity
- Auth API
auth/src/app.ts - Auth routes
auth/src/routes - User model
auth/src/models/user.ts
Ticket catalog
- Tickets API
tickets/src/app.ts - Ticket routes
tickets/src/routes - Ticket model
tickets/src/models/ticket.ts
Orders and payments
- Orders API
orders/src/app.ts - Order routes
orders/src/routes - Order model
orders/src/models/order.ts - Payments API
payments/src/app.ts - Charge route
payments/src/routes/new.ts - Payment model
payments/src/models/payment.ts - Stripe adapter
payments/src/stripe.ts
Event processing
- Expiry worker
expiration/src/index.ts - Order-created listener
expiration/src/events/listeners/order-created-listener.ts - Expiry queue
expiration/src/queues/expiration-queue.ts - Ticket event handlers
tickets/src/events/listeners - Order event handlers
orders/src/events/listeners - Payment event handlers
payments/src/events/listeners - Expiry publisher
expiration/src/events/publishers/expiration-complete-publisher.ts - Ticket publishers
tickets/src/events/publishers - Order publishers
orders/src/events/publishers - Payment publisher
payments/src/events/publishers/payment-created-publisher.ts
Other components
- User
- MongoDB
- Redis
- NATS Streaming
- Stripe
Connections 35
- User → Web pages: uses
- Web pages → HTTP client: requests
- HTTP client → Tickets API: fetches tickets
- HTTP client → Auth API: auth requests
- HTTP client → Orders API: order requests
- HTTP client → Payments API: payment requests
- Auth API → Auth routes: dispatches
- Auth routes → User model: reads/writes
- Tickets API → Ticket routes: dispatches
- Ticket routes → Ticket model: reads/writes
- Orders API → Order routes: dispatches
- Order routes → Order model: reads/writes
- Orders API → Ticket model: uses
- Payments API → Charge route: dispatches
- Charge route → Payment model: records
- Charge route → Stripe adapter: charges via
- Stripe adapter → Stripe: charges
- Auth API → MongoDB: persists users
- Tickets API → MongoDB: persists tickets
- Orders API → MongoDB: persists orders
- Payments API → MongoDB: persists payments
- Expiry worker → Order-created listener: starts listener
- Order-created listener → Expiry queue: schedules
- Expiry queue → Redis: stores timers
- Order-created listener → NATS Streaming: subscribes
- Ticket event handlers → NATS Streaming: subscribes
- Order event handlers → NATS Streaming: subscribes
- Payment event handlers → NATS Streaming: subscribes
- Ticket publishers → NATS Streaming: publishes
- Order publishers → NATS Streaming: publishes
- Payment publisher → NATS Streaming: publishes
- Expiry publisher → NATS Streaming: publishes
- Ticket event handlers → Ticket model: updates
- Order event handlers → Order model: updates
- Payment event handlers → Payment model: updates