# dmitri170/seatflow-backend architecture

> Architecture diagram of the GitHub repository dmitri170/seatflow-backend, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-10-03). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/dmitri170/seatflow-backend
- Repository: https://github.com/dmitri170/seatflow-backend

## Overview

SeatFlow is a REST backend for configuring venues and their seating, then defining events, event-seat availability, and sector prices. The documented organizer workflow runs from venue → hall → sector (which generates physical seats) → event (which initializes event seats) → event pricing and seat-status queries. The repository excerpts show these orchestration calls and repository-backed persistence. Other controller/service modules are represented from the tree and README; their internal calls are not inferred where source was not sampled.

Main entry points: [`src/main/java/com/dmitriy/seatflow`](https://github.com/dmitri170/seatflow-backend/tree/main/src/main/java/com/dmitriy/seatflow) (REST API), [`src/main/java/com/dmitriy/seatflow/sector/SectorService.java`](https://github.com/dmitri170/seatflow-backend/blob/main/src/main/java/com/dmitriy/seatflow/sector/SectorService.java) (Sectors), [`src/main/java/com/dmitriy/seatflow/event/EventService.java`](https://github.com/dmitri170/seatflow-backend/blob/main/src/main/java/com/dmitriy/seatflow/event/EventService.java) (Event management), [`src/main/java/com/dmitriy/seatflow/eventpricing/EventSectorPriceService.java`](https://github.com/dmitri170/seatflow-backend/blob/main/src/main/java/com/dmitriy/seatflow/eventpricing/EventSectorPriceService.java) (Sector pricing)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_catalog["Venue catalog"]
  node_venue["Venues<br/>[VenueService.java]"]
  node_venue_store[("Venue records")]
  node_hall["Halls<br/>[HallService.java]"]
  node_hall_store[("Hall records")]
end

subgraph group_seating["Seating layout"]
  node_sector["Sectors<br/>[SectorService.java]"]
  node_sector_store[("Sector records")]
  node_seat["Physical seats<br/>[SeatService.java]"]
  node_seat_store[("Seat records")]
end

subgraph group_events["Events and inventory"]
  node_event["Event management<br/>[EventService.java]"]
  node_event_store[("Event records")]
  node_event_seats["Event-seat inventory"]
  node_event_seat_store[("Event-seat records")]
  node_pricing["Sector pricing"]
  node_price_store[("Price records")]
end

subgraph group_platform["API platform"]
  node_api["REST API"]
  node_system["System status"]
  node_errors["API errors"]
end

node_organizer(("Organizer"))

node_organizer -->|"sends requests"| node_api
node_api -.->|"routes venue operations"| node_venue
node_venue -.->|"reads and writes"| node_venue_store
node_api -.->|"routes hall operations"| node_hall
node_hall -->|"loads venue"| node_venue_store
node_hall -->|"reads and writes"| node_hall_store
node_api -.->|"routes sector operations"| node_sector
node_sector -->|"loads hall"| node_hall_store
node_sector -->|"reads and writes"| node_sector_store
node_sector -->|"generates and saves seats"| node_seat_store
node_api -.->|"routes seat queries"| node_seat
node_seat -->|"checks sector"| node_sector_store
node_seat -->|"loads seats"| node_seat_store
node_api -.->|"routes event operations"| node_event
node_event -->|"loads hall"| node_hall_store
node_event -->|"reads and writes"| node_event_store
node_event -->|"initializes inventory"| node_event_seats
node_event_seats -->|"loads hall seats"| node_seat_store
node_event_seats -->|"saves and queries"| node_event_seat_store
node_api -.->|"routes inventory queries"| node_event_seats
node_api -.->|"routes price operations"| node_pricing
node_pricing -->|"loads event"| node_event_store
node_pricing -->|"loads sectors"| node_sector_store
node_pricing -->|"reads and saves prices"| node_price_store
node_api -.->|"serves status"| node_system
node_api -.->|"formats failures"| node_errors

click node_api "https://github.com/dmitri170/seatflow-backend/tree/main/src/main/java/com/dmitriy/seatflow"
click node_venue "https://github.com/dmitri170/seatflow-backend/blob/main/src/main/java/com/dmitriy/seatflow/venue/VenueService.java"
click node_venue_store "https://github.com/dmitri170/seatflow-backend/blob/main/src/main/java/com/dmitriy/seatflow/venue/VenueRepository.java"
click node_hall "https://github.com/dmitri170/seatflow-backend/blob/main/src/main/java/com/dmitriy/seatflow/hall/HallService.java"
click node_hall_store "https://github.com/dmitri170/seatflow-backend/blob/main/src/main/java/com/dmitriy/seatflow/hall/HallRepository.java"
click node_sector "https://github.com/dmitri170/seatflow-backend/blob/main/src/main/java/com/dmitriy/seatflow/sector/SectorService.java"
click node_sector_store "https://github.com/dmitri170/seatflow-backend/blob/main/src/main/java/com/dmitriy/seatflow/sector/SectorRepository.java"
click node_seat "https://github.com/dmitri170/seatflow-backend/blob/main/src/main/java/com/dmitriy/seatflow/seat/SeatService.java"
click node_seat_store "https://github.com/dmitri170/seatflow-backend/blob/main/src/main/java/com/dmitriy/seatflow/seat/SeatRepository.java"
click node_event "https://github.com/dmitri170/seatflow-backend/blob/main/src/main/java/com/dmitriy/seatflow/event/EventService.java"
click node_event_store "https://github.com/dmitri170/seatflow-backend/blob/main/src/main/java/com/dmitriy/seatflow/event/EventRepository.java"
click node_event_seats "https://github.com/dmitri170/seatflow-backend/blob/main/src/main/java/com/dmitriy/seatflow/eventseat/EventSeatService.java"
click node_event_seat_store "https://github.com/dmitri170/seatflow-backend/blob/main/src/main/java/com/dmitriy/seatflow/eventseat/EventSeatRepository.java"
click node_pricing "https://github.com/dmitri170/seatflow-backend/blob/main/src/main/java/com/dmitriy/seatflow/eventpricing/EventSectorPriceService.java"
click node_price_store "https://github.com/dmitri170/seatflow-backend/blob/main/src/main/java/com/dmitriy/seatflow/eventpricing/EventSectorPriceRepository.java"
click node_system "https://github.com/dmitri170/seatflow-backend/blob/main/src/main/java/com/dmitriy/seatflow/system/SystemController.java"
click node_errors "https://github.com/dmitri170/seatflow-backend/blob/main/src/main/java/com/dmitriy/seatflow/common/error/GlobalExceptionHandler.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_venue,node_venue_store,node_hall,node_hall_store toneBlue
class node_sector,node_sector_store,node_seat,node_seat_store toneAmber
class node_event,node_event_store,node_event_seats,node_event_seat_store,node_pricing,node_price_store toneMint
class node_api,node_system,node_errors toneRose
class node_organizer toneIndigo
```

## Components

### Venue catalog

- [Venues](https://github.com/dmitri170/seatflow-backend/blob/main/src/main/java/com/dmitriy/seatflow/venue/VenueService.java): `src/main/java/com/dmitriy/seatflow/venue/VenueService.java`
- [Venue records](https://github.com/dmitri170/seatflow-backend/blob/main/src/main/java/com/dmitriy/seatflow/venue/VenueRepository.java): `src/main/java/com/dmitriy/seatflow/venue/VenueRepository.java`
- [Halls](https://github.com/dmitri170/seatflow-backend/blob/main/src/main/java/com/dmitriy/seatflow/hall/HallService.java): `src/main/java/com/dmitriy/seatflow/hall/HallService.java`
- [Hall records](https://github.com/dmitri170/seatflow-backend/blob/main/src/main/java/com/dmitriy/seatflow/hall/HallRepository.java): `src/main/java/com/dmitriy/seatflow/hall/HallRepository.java`

### Seating layout

- [Sectors](https://github.com/dmitri170/seatflow-backend/blob/main/src/main/java/com/dmitriy/seatflow/sector/SectorService.java): `src/main/java/com/dmitriy/seatflow/sector/SectorService.java`
- [Sector records](https://github.com/dmitri170/seatflow-backend/blob/main/src/main/java/com/dmitriy/seatflow/sector/SectorRepository.java): `src/main/java/com/dmitriy/seatflow/sector/SectorRepository.java`
- [Physical seats](https://github.com/dmitri170/seatflow-backend/blob/main/src/main/java/com/dmitriy/seatflow/seat/SeatService.java): `src/main/java/com/dmitriy/seatflow/seat/SeatService.java`
- [Seat records](https://github.com/dmitri170/seatflow-backend/blob/main/src/main/java/com/dmitriy/seatflow/seat/SeatRepository.java): `src/main/java/com/dmitriy/seatflow/seat/SeatRepository.java`

### Events and inventory

- [Event management](https://github.com/dmitri170/seatflow-backend/blob/main/src/main/java/com/dmitriy/seatflow/event/EventService.java): `src/main/java/com/dmitriy/seatflow/event/EventService.java`
- [Event records](https://github.com/dmitri170/seatflow-backend/blob/main/src/main/java/com/dmitriy/seatflow/event/EventRepository.java): `src/main/java/com/dmitriy/seatflow/event/EventRepository.java`
- [Event-seat inventory](https://github.com/dmitri170/seatflow-backend/blob/main/src/main/java/com/dmitriy/seatflow/eventseat/EventSeatService.java): `src/main/java/com/dmitriy/seatflow/eventseat/EventSeatService.java`
- [Event-seat records](https://github.com/dmitri170/seatflow-backend/blob/main/src/main/java/com/dmitriy/seatflow/eventseat/EventSeatRepository.java): `src/main/java/com/dmitriy/seatflow/eventseat/EventSeatRepository.java`
- [Sector pricing](https://github.com/dmitri170/seatflow-backend/blob/main/src/main/java/com/dmitriy/seatflow/eventpricing/EventSectorPriceService.java): `src/main/java/com/dmitriy/seatflow/eventpricing/EventSectorPriceService.java`
- [Price records](https://github.com/dmitri170/seatflow-backend/blob/main/src/main/java/com/dmitriy/seatflow/eventpricing/EventSectorPriceRepository.java): `src/main/java/com/dmitriy/seatflow/eventpricing/EventSectorPriceRepository.java`

### API platform

- [REST API](https://github.com/dmitri170/seatflow-backend/tree/main/src/main/java/com/dmitriy/seatflow): `src/main/java/com/dmitriy/seatflow`
- [System status](https://github.com/dmitri170/seatflow-backend/blob/main/src/main/java/com/dmitriy/seatflow/system/SystemController.java): `src/main/java/com/dmitriy/seatflow/system/SystemController.java`
- [API errors](https://github.com/dmitri170/seatflow-backend/blob/main/src/main/java/com/dmitriy/seatflow/common/error/GlobalExceptionHandler.java): `src/main/java/com/dmitriy/seatflow/common/error/GlobalExceptionHandler.java`

### Other components

- **Organizer**

## Connections

- Organizer → REST API: sends requests
- REST API → Venues: routes venue operations (evidence: `src/main/java/com/dmitriy/seatflow/venue/VenueController.java`)
- Venues → Venue records: reads and writes (evidence: `src/main/java/com/dmitriy/seatflow/venue/VenueService.java`)
- REST API → Halls: routes hall operations (evidence: `src/main/java/com/dmitriy/seatflow/hall/HallController.java`)
- Halls → Venue records: loads venue (evidence: `src/main/java/com/dmitriy/seatflow/hall/HallService.java`)
- Halls → Hall records: reads and writes (evidence: `src/main/java/com/dmitriy/seatflow/hall/HallService.java`)
- REST API → Sectors: routes sector operations (evidence: `src/main/java/com/dmitriy/seatflow/sector/SectorController.java`)
- Sectors → Hall records: loads hall (evidence: `src/main/java/com/dmitriy/seatflow/sector/SectorService.java`)
- Sectors → Sector records: reads and writes (evidence: `src/main/java/com/dmitriy/seatflow/sector/SectorService.java`)
- Sectors → Seat records: generates and saves seats (evidence: `src/main/java/com/dmitriy/seatflow/sector/SectorService.java`)
- REST API → Physical seats: routes seat queries (evidence: `src/main/java/com/dmitriy/seatflow/seat/SeatController.java`)
- Physical seats → Sector records: checks sector (evidence: `src/main/java/com/dmitriy/seatflow/seat/SeatService.java`)
- Physical seats → Seat records: loads seats (evidence: `src/main/java/com/dmitriy/seatflow/seat/SeatService.java`)
- REST API → Event management: routes event operations (evidence: `src/main/java/com/dmitriy/seatflow/event/EventController.java`)
- Event management → Hall records: loads hall (evidence: `src/main/java/com/dmitriy/seatflow/event/EventService.java`)
- Event management → Event records: reads and writes (evidence: `src/main/java/com/dmitriy/seatflow/event/EventService.java`)
- Event management → Event-seat inventory: initializes inventory (evidence: `src/main/java/com/dmitriy/seatflow/event/EventService.java`)
- Event-seat inventory → Seat records: loads hall seats (evidence: `src/main/java/com/dmitriy/seatflow/eventseat/EventSeatService.java`)
- Event-seat inventory → Event-seat records: saves and queries (evidence: `src/main/java/com/dmitriy/seatflow/eventseat/EventSeatService.java`)
- REST API → Event-seat inventory: routes inventory queries (evidence: `src/main/java/com/dmitriy/seatflow/event/EventService.java`)
- REST API → Sector pricing: routes price operations (evidence: `src/main/java/com/dmitriy/seatflow/eventpricing/EventSectorPriceController.java`)
- Sector pricing → Event records: loads event (evidence: `src/main/java/com/dmitriy/seatflow/eventpricing/EventSectorPriceService.java`)
- Sector pricing → Sector records: loads sectors (evidence: `src/main/java/com/dmitriy/seatflow/eventpricing/EventSectorPriceService.java`)
- Sector pricing → Price records: reads and saves prices (evidence: `src/main/java/com/dmitriy/seatflow/eventpricing/EventSectorPriceService.java`)
- REST API → System status: serves status (evidence: `src/main/java/com/dmitriy/seatflow/system/SystemController.java`)
- REST API → API errors: formats failures (evidence: `src/main/java/com/dmitriy/seatflow/common/error/GlobalExceptionHandler.java`)
