# senanu03/ticket-hub architecture

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

- Interactive diagram: https://gitdiagram.com/senanu03/ticket-hub
- Repository: https://github.com/senanu03/ticket-hub

## Overview

SnapSeat/TicketHub is a microservice ticket-booking system. The customer workflow exposed in the sampled code is booking creation and seat reservation, followed by payment initiation and a payment-result update to the booking; the booking domain also supports lookup, cancellation, and expiry. Event and show management provide the catalog and seat-map capabilities. Notifications process booking outcomes and send email. The README is empty, and gateway routing, service discovery, and several event-driven connections are not shown in the excerpts, so those links are omitted.

Main entry points: [`payment-service/TicketHub_Payment_Microservice_Phase1_MySQL/tickethub-payment-service/src/main/java/com/tickethub/payment/service/PaymentService.java`](https://github.com/senanu03/ticket-hub/blob/main/payment-service/TicketHub_Payment_Microservice_Phase1_MySQL/tickethub-payment-service/src/main/java/com/tickethub/payment/service/PaymentService.java) (Payment operations), [`booking-service/src/main/java/com/tp/snapseat/booking_service/service/BookingService.java`](https://github.com/senanu03/ticket-hub/blob/main/booking-service/src/main/java/com/tp/snapseat/booking_service/service/BookingService.java) (Booking operations), [`notification-service/notification-service/src/main/java/com/tp/snapseat/notification_service/service/NotificationService.java`](https://github.com/senanu03/ticket-hub/blob/main/notification-service/notification-service/src/main/java/com/tp/snapseat/notification_service/service/NotificationService.java) (Notification handling), [`booking-service/src/main/java/com/tp/snapseat/booking_service/controller/BookingController.java`](https://github.com/senanu03/ticket-hub/blob/main/booking-service/src/main/java/com/tp/snapseat/booking_service/controller/BookingController.java) (Customer booking API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_edge["Entry and identity"]
  node_gateway["API gateway"]
  node_auth["JWT authentication<br/>[AuthService.java]"]
end

subgraph group_catalog["Event catalog"]
  node_event_api["Event management"]
  node_event_service["Event catalog logic<br/>[EventService.java]"]
  node_show_api["Show and seat APIs"]
  node_show_service["Show management<br/>[ShowService.java]"]
end

subgraph group_reservation["Bookings and seats"]
  node_booking_api["Customer booking API"]
  node_booking_logic["Booking operations"]
  node_booking_record[("Booking state<br/>[Booking.java]")]
  node_internal_api["Internal booking API"]
  node_event_client["Event service client"]
end

subgraph group_payments["Payment processing"]
  node_payment_api["Payment API"]
  node_payment_logic["Payment operations"]
  node_payment_record[("Payment records<br/>[Payment.java]")]
  node_booking_client["Booking service client"]
  node_provider["Payment providers"]
  node_payment_events["Payment events"]
end

subgraph group_notifications["Notifications"]
  node_notification_consumer["Booking event consumer"]
  node_notification_logic["Notification handling"]
  node_notification_records[("Delivery records")]
  node_email["Email delivery<br/>[EmailService.java]"]
end

node_customer(("Customer"))

node_customer -.->|"requests"| node_gateway
node_customer -.->|"logs in"| node_auth
node_event_api -.->|"delegates to"| node_event_service
node_show_api -->|"delegates to"| node_show_service
node_customer -->|"books seats"| node_booking_api
node_booking_api -->|"calls"| node_booking_logic
node_internal_api -->|"calls"| node_booking_logic
node_booking_logic -.->|"manages"| node_booking_record
node_booking_logic -.->|"queries"| node_event_client
node_payment_api -->|"calls"| node_payment_logic
node_payment_logic -.->|"persists"| node_payment_record
node_payment_logic -->|"requests booking data"| node_booking_client
node_booking_client -->|"calls"| node_internal_api
node_payment_logic -.->|"uses"| node_provider
node_payment_logic -->|"publishes"| node_payment_events
node_notification_consumer -.->|"dispatches"| node_notification_logic
node_notification_logic -->|"records delivery"| node_notification_records
node_notification_logic -->|"sends email"| node_email

click node_gateway "https://github.com/senanu03/ticket-hub/blob/main/api-gateway/src/main/java/com/tp/snapseat/api_gateway/ApiGatewayApplication.java"
click node_auth "https://github.com/senanu03/ticket-hub/blob/main/auth-service/auth-service/src/main/java/com/tp/snapseat/auth_service/service/AuthService.java"
click node_event_api "https://github.com/senanu03/ticket-hub/blob/main/event-service/event-service-updated-fixed/src/main/java/com/tp/snapseat/event_service/controller/EventController.java"
click node_event_service "https://github.com/senanu03/ticket-hub/blob/main/event-service/event-service-updated-fixed/src/main/java/com/tp/snapseat/event_service/service/EventService.java"
click node_show_api "https://github.com/senanu03/ticket-hub/blob/main/event-service/event-service-updated-fixed/src/main/java/com/tp/snapseat/event_service/controller/ShowController.java"
click node_show_service "https://github.com/senanu03/ticket-hub/blob/main/event-service/event-service-updated-fixed/src/main/java/com/tp/snapseat/event_service/service/ShowService.java"
click node_booking_api "https://github.com/senanu03/ticket-hub/blob/main/booking-service/src/main/java/com/tp/snapseat/booking_service/controller/BookingController.java"
click node_booking_logic "https://github.com/senanu03/ticket-hub/blob/main/booking-service/src/main/java/com/tp/snapseat/booking_service/service/BookingService.java"
click node_booking_record "https://github.com/senanu03/ticket-hub/blob/main/booking-service/src/main/java/com/tp/snapseat/booking_service/entity/Booking.java"
click node_internal_api "https://github.com/senanu03/ticket-hub/blob/main/booking-service/src/main/java/com/tp/snapseat/booking_service/controller/InternalBookingController.java"
click node_event_client "https://github.com/senanu03/ticket-hub/blob/main/booking-service/src/main/java/com/tp/snapseat/booking_service/client/EventServiceClient.java"
click node_payment_api "https://github.com/senanu03/ticket-hub/blob/main/payment-service/TicketHub_Payment_Microservice_Phase1_MySQL/tickethub-payment-service/src/main/java/com/tickethub/payment/controller/PaymentController.java"
click node_payment_logic "https://github.com/senanu03/ticket-hub/blob/main/payment-service/TicketHub_Payment_Microservice_Phase1_MySQL/tickethub-payment-service/src/main/java/com/tickethub/payment/service/PaymentService.java"
click node_payment_record "https://github.com/senanu03/ticket-hub/blob/main/payment-service/TicketHub_Payment_Microservice_Phase1_MySQL/tickethub-payment-service/src/main/java/com/tickethub/payment/entity/Payment.java"
click node_booking_client "https://github.com/senanu03/ticket-hub/blob/main/payment-service/TicketHub_Payment_Microservice_Phase1_MySQL/tickethub-payment-service/src/main/java/com/tickethub/payment/client/BookingServiceClient.java"
click node_provider "https://github.com/senanu03/ticket-hub/blob/main/payment-service/TicketHub_Payment_Microservice_Phase1_MySQL/tickethub-payment-service/src/main/java/com/tickethub/payment/provider/PaymentProviderClient.java"
click node_payment_events "https://github.com/senanu03/ticket-hub/blob/main/payment-service/TicketHub_Payment_Microservice_Phase1_MySQL/tickethub-payment-service/src/main/java/com/tickethub/payment/event/PaymentEventPublisher.java"
click node_notification_consumer "https://github.com/senanu03/ticket-hub/blob/main/notification-service/notification-service/src/main/java/com/tp/snapseat/notification_service/kafka/BookingNotificationConsumer.java"
click node_notification_logic "https://github.com/senanu03/ticket-hub/blob/main/notification-service/notification-service/src/main/java/com/tp/snapseat/notification_service/service/NotificationService.java"
click node_notification_records "https://github.com/senanu03/ticket-hub/blob/main/notification-service/notification-service/src/main/java/com/tp/snapseat/notification_service/repository/NotificationRecordRepository.java"
click node_email "https://github.com/senanu03/ticket-hub/blob/main/notification-service/notification-service/src/main/java/com/tp/snapseat/notification_service/service/EmailService.java"

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_gateway,node_auth toneBlue
class node_event_api,node_event_service,node_show_api,node_show_service toneAmber
class node_booking_api,node_booking_logic,node_booking_record,node_internal_api,node_event_client toneMint
class node_payment_api,node_payment_logic,node_payment_record,node_booking_client,node_provider,node_payment_events toneRose
class node_notification_consumer,node_notification_logic,node_notification_records,node_email,node_customer toneIndigo
```

## Components

### Entry and identity

- [API gateway](https://github.com/senanu03/ticket-hub/blob/main/api-gateway/src/main/java/com/tp/snapseat/api_gateway/ApiGatewayApplication.java): `api-gateway/src/main/java/com/tp/snapseat/api_gateway/ApiGatewayApplication.java`
- [JWT authentication](https://github.com/senanu03/ticket-hub/blob/main/auth-service/auth-service/src/main/java/com/tp/snapseat/auth_service/service/AuthService.java): `auth-service/auth-service/src/main/java/com/tp/snapseat/auth_service/service/AuthService.java`

### Event catalog

- [Event management](https://github.com/senanu03/ticket-hub/blob/main/event-service/event-service-updated-fixed/src/main/java/com/tp/snapseat/event_service/controller/EventController.java): `event-service/event-service-updated-fixed/src/main/java/com/tp/snapseat/event_service/controller/EventController.java`
- [Event catalog logic](https://github.com/senanu03/ticket-hub/blob/main/event-service/event-service-updated-fixed/src/main/java/com/tp/snapseat/event_service/service/EventService.java): `event-service/event-service-updated-fixed/src/main/java/com/tp/snapseat/event_service/service/EventService.java`
- [Show and seat APIs](https://github.com/senanu03/ticket-hub/blob/main/event-service/event-service-updated-fixed/src/main/java/com/tp/snapseat/event_service/controller/ShowController.java): `event-service/event-service-updated-fixed/src/main/java/com/tp/snapseat/event_service/controller/ShowController.java`
- [Show management](https://github.com/senanu03/ticket-hub/blob/main/event-service/event-service-updated-fixed/src/main/java/com/tp/snapseat/event_service/service/ShowService.java): `event-service/event-service-updated-fixed/src/main/java/com/tp/snapseat/event_service/service/ShowService.java`

### Bookings and seats

- [Customer booking API](https://github.com/senanu03/ticket-hub/blob/main/booking-service/src/main/java/com/tp/snapseat/booking_service/controller/BookingController.java): `booking-service/src/main/java/com/tp/snapseat/booking_service/controller/BookingController.java`
- [Booking operations](https://github.com/senanu03/ticket-hub/blob/main/booking-service/src/main/java/com/tp/snapseat/booking_service/service/BookingService.java): `booking-service/src/main/java/com/tp/snapseat/booking_service/service/BookingService.java`
- [Booking state](https://github.com/senanu03/ticket-hub/blob/main/booking-service/src/main/java/com/tp/snapseat/booking_service/entity/Booking.java): `booking-service/src/main/java/com/tp/snapseat/booking_service/entity/Booking.java`
- [Internal booking API](https://github.com/senanu03/ticket-hub/blob/main/booking-service/src/main/java/com/tp/snapseat/booking_service/controller/InternalBookingController.java): `booking-service/src/main/java/com/tp/snapseat/booking_service/controller/InternalBookingController.java`
- [Event service client](https://github.com/senanu03/ticket-hub/blob/main/booking-service/src/main/java/com/tp/snapseat/booking_service/client/EventServiceClient.java): `booking-service/src/main/java/com/tp/snapseat/booking_service/client/EventServiceClient.java`

### Payment processing

- [Payment API](https://github.com/senanu03/ticket-hub/blob/main/payment-service/TicketHub_Payment_Microservice_Phase1_MySQL/tickethub-payment-service/src/main/java/com/tickethub/payment/controller/PaymentController.java): `payment-service/TicketHub_Payment_Microservice_Phase1_MySQL/tickethub-payment-service/src/main/java/com/tickethub/payment/controller/PaymentController.java`
- [Payment operations](https://github.com/senanu03/ticket-hub/blob/main/payment-service/TicketHub_Payment_Microservice_Phase1_MySQL/tickethub-payment-service/src/main/java/com/tickethub/payment/service/PaymentService.java): `payment-service/TicketHub_Payment_Microservice_Phase1_MySQL/tickethub-payment-service/src/main/java/com/tickethub/payment/service/PaymentService.java`
- [Payment records](https://github.com/senanu03/ticket-hub/blob/main/payment-service/TicketHub_Payment_Microservice_Phase1_MySQL/tickethub-payment-service/src/main/java/com/tickethub/payment/entity/Payment.java): `payment-service/TicketHub_Payment_Microservice_Phase1_MySQL/tickethub-payment-service/src/main/java/com/tickethub/payment/entity/Payment.java`
- [Booking service client](https://github.com/senanu03/ticket-hub/blob/main/payment-service/TicketHub_Payment_Microservice_Phase1_MySQL/tickethub-payment-service/src/main/java/com/tickethub/payment/client/BookingServiceClient.java): `payment-service/TicketHub_Payment_Microservice_Phase1_MySQL/tickethub-payment-service/src/main/java/com/tickethub/payment/client/BookingServiceClient.java`
- [Payment providers](https://github.com/senanu03/ticket-hub/blob/main/payment-service/TicketHub_Payment_Microservice_Phase1_MySQL/tickethub-payment-service/src/main/java/com/tickethub/payment/provider/PaymentProviderClient.java): `payment-service/TicketHub_Payment_Microservice_Phase1_MySQL/tickethub-payment-service/src/main/java/com/tickethub/payment/provider/PaymentProviderClient.java`
- [Payment events](https://github.com/senanu03/ticket-hub/blob/main/payment-service/TicketHub_Payment_Microservice_Phase1_MySQL/tickethub-payment-service/src/main/java/com/tickethub/payment/event/PaymentEventPublisher.java): `payment-service/TicketHub_Payment_Microservice_Phase1_MySQL/tickethub-payment-service/src/main/java/com/tickethub/payment/event/PaymentEventPublisher.java`

### Notifications

- [Booking event consumer](https://github.com/senanu03/ticket-hub/blob/main/notification-service/notification-service/src/main/java/com/tp/snapseat/notification_service/kafka/BookingNotificationConsumer.java): `notification-service/notification-service/src/main/java/com/tp/snapseat/notification_service/kafka/BookingNotificationConsumer.java`
- [Notification handling](https://github.com/senanu03/ticket-hub/blob/main/notification-service/notification-service/src/main/java/com/tp/snapseat/notification_service/service/NotificationService.java): `notification-service/notification-service/src/main/java/com/tp/snapseat/notification_service/service/NotificationService.java`
- [Delivery records](https://github.com/senanu03/ticket-hub/blob/main/notification-service/notification-service/src/main/java/com/tp/snapseat/notification_service/repository/NotificationRecordRepository.java): `notification-service/notification-service/src/main/java/com/tp/snapseat/notification_service/repository/NotificationRecordRepository.java`
- [Email delivery](https://github.com/senanu03/ticket-hub/blob/main/notification-service/notification-service/src/main/java/com/tp/snapseat/notification_service/service/EmailService.java): `notification-service/notification-service/src/main/java/com/tp/snapseat/notification_service/service/EmailService.java`

### Other components

- **Customer**

## Connections

- Customer → API gateway: requests
- Customer → JWT authentication: logs in
- Event management → Event catalog logic: delegates to (evidence: `event-service/event-service-updated-fixed/src/main/java/com/tp/snapseat/event_service/controller/EventController.java`)
- Show and seat APIs → Show management: delegates to (evidence: `event-service/event-service-updated-fixed/src/main/java/com/tp/snapseat/event_service/controller/ShowController.java`)
- Customer → Customer booking API: books seats (evidence: `booking-service/src/main/java/com/tp/snapseat/booking_service/controller/BookingController.java`)
- Customer booking API → Booking operations: calls (evidence: `booking-service/src/main/java/com/tp/snapseat/booking_service/controller/BookingController.java`)
- Internal booking API → Booking operations: calls (evidence: `booking-service/src/main/java/com/tp/snapseat/booking_service/controller/InternalBookingController.java`)
- Booking operations → Booking state: manages
- Booking operations → Event service client: queries
- Payment API → Payment operations: calls (evidence: `payment-service/TicketHub_Payment_Microservice_Phase1_MySQL/tickethub-payment-service/src/main/java/com/tickethub/payment/controller/PaymentController.java`)
- Payment operations → Payment records: persists (evidence: `payment-service/TicketHub_Payment_Microservice_Phase1_MySQL/tickethub-payment-service/src/main/java/com/tickethub/payment/service/PaymentService.java`)
- Payment operations → Booking service client: requests booking data (evidence: `payment-service/TicketHub_Payment_Microservice_Phase1_MySQL/tickethub-payment-service/src/main/java/com/tickethub/payment/service/PaymentService.java`)
- Booking service client → Internal booking API: calls (evidence: `payment-service/TicketHub_Payment_Microservice_Phase1_MySQL/tickethub-payment-service/src/main/java/com/tickethub/payment/client/BookingServiceClient.java`)
- Payment operations → Payment providers: uses (evidence: `payment-service/TicketHub_Payment_Microservice_Phase1_MySQL/tickethub-payment-service/src/main/java/com/tickethub/payment/service/PaymentService.java`)
- Payment operations → Payment events: publishes (evidence: `payment-service/TicketHub_Payment_Microservice_Phase1_MySQL/tickethub-payment-service/src/main/java/com/tickethub/payment/service/PaymentService.java`)
- Booking event consumer → Notification handling: dispatches
- Notification handling → Delivery records: records delivery (evidence: `notification-service/notification-service/src/main/java/com/tp/snapseat/notification_service/service/NotificationService.java`)
- Notification handling → Email delivery: sends email (evidence: `notification-service/notification-service/src/main/java/com/tp/snapseat/notification_service/service/NotificationService.java`)
