# ceos-developers/spring-cgv-24th architecture

> Architecture diagram of the GitHub repository ceos-developers/spring-cgv-24th, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-10). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/ceos-developers/spring-cgv-24th
- Repository: https://github.com/ceos-developers/spring-cgv-24th

## Overview

This is a Spring-based cinema booking and concession-ordering backend. Customers can browse movies and screenings, reserve seats, order store items, and pay; members can also manage favorites, while administrators manage catalog, theater, screening, and store data. The graph follows the sampled service calls where available. Several controller and administration paths are represented by their exact source files, but their wiring was not sampled; those links are therefore marked unverified.

Main entry points: [`src/main/java/com/ceos24/cgv/domain/reservation/service/ReservationService.java`](https://github.com/ceos-developers/spring-cgv-24th/blob/master/src/main/java/com/ceos24/cgv/domain/reservation/service/ReservationService.java) (Seat Reservation), [`src/main/java/com/ceos24/cgv/domain/order/service/OrderService.java`](https://github.com/ceos-developers/spring-cgv-24th/blob/master/src/main/java/com/ceos24/cgv/domain/order/service/OrderService.java) (Order Creation), [`src/main/java/com/ceos24/cgv/domain/payment/service/PaymentService.java`](https://github.com/ceos-developers/spring-cgv-24th/blob/master/src/main/java/com/ceos24/cgv/domain/payment/service/PaymentService.java) (Payment Processing), [`src/main/java/com/ceos24/cgv/domain/movie/service/MovieService.java`](https://github.com/ceos-developers/spring-cgv-24th/blob/master/src/main/java/com/ceos24/cgv/domain/movie/service/MovieService.java) (Movie Catalog)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_identity["Identity"]
  node_auth_api["Auth API"]
  node_auth_service["Authentication<br/>[AuthService.java]"]
  node_member_store[("Member Records")]
end

subgraph group_cinema["Cinema Catalog"]
  node_movie_api["Movie API"]
  node_movie_service["Movie Catalog<br/>[MovieService.java]"]
  node_movie_store[("Movie Records<br/>[Movie.java]")]
  node_screening_api["Screening API"]
  node_screening_service["Screening Catalog"]
  node_screening_store[("Screening Records<br/>[Screening.java]")]
  node_theater_admin["Theater Admin"]
  node_favorite_theater["Theater Favorites"]
  node_favorite_movie["Movie Favorites"]
end

subgraph group_booking["Booking and Orders"]
  node_reservation_api["Reservation API"]
  node_reservation_service["Seat Reservation"]
  node_seat_store[("Seat Records<br/>[Seat.java]")]
  node_reservation_store[("Reservations")]
  node_order_api["Order API"]
  node_order_service["Order Creation<br/>[OrderService.java]"]
  node_order_store[("Order Records")]
end

subgraph group_payment["Payments"]
  node_payment_api["Payment API"]
  node_payment_service["Payment Processing"]
  node_payment_store[("Payment Records")]
end

subgraph group_concessions["Concessions"]
  node_store_api["Store API"]
  node_store_admin["Store Admin"]
  node_store_stock[("Menu Stock<br/>[MenuStock.java]")]
end

node_customer(("Customer"))
node_gateway["Toss Payments"]

node_customer -.->|"requests"| node_auth_api
node_auth_api -.->|"delegates"| node_auth_service
node_auth_service -->|"reads and saves"| node_member_store
node_customer -.->|"browses"| node_movie_api
node_movie_api -.->|"delegates"| node_movie_service
node_movie_service -->|"queries"| node_movie_store
node_movie_service -->|"queries"| node_screening_store
node_customer -.->|"browses"| node_screening_api
node_screening_api -.->|"delegates"| node_screening_service
node_customer -.->|"requests seats"| node_reservation_api
node_reservation_api -.->|"delegates"| node_reservation_service
node_reservation_service -->|"reads and updates"| node_seat_store
node_reservation_service -->|"reads"| node_member_store
node_reservation_service -->|"saves and deletes"| node_reservation_store
node_customer -.->|"places order"| node_order_api
node_order_api -.->|"delegates"| node_order_service
node_order_service -->|"reads"| node_member_store
node_order_service -->|"validates and deducts"| node_store_stock
node_order_service -->|"saves"| node_order_store
node_customer -.->|"pays"| node_payment_api
node_payment_api -.->|"delegates"| node_payment_service
node_payment_service -->|"reads"| node_order_store
node_payment_service -->|"records payment"| node_payment_store
node_payment_service -->|"confirms and cancels"| node_gateway
node_theater_admin -.->|"manages screenings"| node_screening_service
node_store_api -.->|"delegates"| node_store_admin
node_store_admin -->|"creates stock"| node_store_stock
node_customer -.->|"manages favorites"| node_favorite_theater
node_customer -.->|"manages favorites"| node_favorite_movie

click node_auth_api "https://github.com/ceos-developers/spring-cgv-24th/blob/master/src/main/java/com/ceos24/cgv/domain/auth/controller/AuthController.java"
click node_auth_service "https://github.com/ceos-developers/spring-cgv-24th/blob/master/src/main/java/com/ceos24/cgv/domain/auth/service/AuthService.java"
click node_member_store "https://github.com/ceos-developers/spring-cgv-24th/blob/master/src/main/java/com/ceos24/cgv/domain/member/repository/MemberRepository.java"
click node_movie_api "https://github.com/ceos-developers/spring-cgv-24th/blob/master/src/main/java/com/ceos24/cgv/domain/movie/controller/MovieController.java"
click node_movie_service "https://github.com/ceos-developers/spring-cgv-24th/blob/master/src/main/java/com/ceos24/cgv/domain/movie/service/MovieService.java"
click node_movie_store "https://github.com/ceos-developers/spring-cgv-24th/blob/master/src/main/java/com/ceos24/cgv/domain/movie/entity/Movie.java"
click node_screening_api "https://github.com/ceos-developers/spring-cgv-24th/blob/master/src/main/java/com/ceos24/cgv/domain/screening/controller/ScreeningController.java"
click node_screening_service "https://github.com/ceos-developers/spring-cgv-24th/blob/master/src/main/java/com/ceos24/cgv/domain/screening/service/ScreeningService.java"
click node_screening_store "https://github.com/ceos-developers/spring-cgv-24th/blob/master/src/main/java/com/ceos24/cgv/domain/screening/entity/Screening.java"
click node_theater_admin "https://github.com/ceos-developers/spring-cgv-24th/blob/master/src/main/java/com/ceos24/cgv/domain/theater/controller/TheaterAdminController.java"
click node_reservation_api "https://github.com/ceos-developers/spring-cgv-24th/blob/master/src/main/java/com/ceos24/cgv/domain/reservation/controller/ReservationController.java"
click node_reservation_service "https://github.com/ceos-developers/spring-cgv-24th/blob/master/src/main/java/com/ceos24/cgv/domain/reservation/service/ReservationService.java"
click node_seat_store "https://github.com/ceos-developers/spring-cgv-24th/blob/master/src/main/java/com/ceos24/cgv/domain/theater/entity/Seat.java"
click node_reservation_store "https://github.com/ceos-developers/spring-cgv-24th/blob/master/src/main/java/com/ceos24/cgv/domain/reservation/repository/ReservationRepository.java"
click node_order_api "https://github.com/ceos-developers/spring-cgv-24th/blob/master/src/main/java/com/ceos24/cgv/domain/order/controller/OrderController.java"
click node_order_service "https://github.com/ceos-developers/spring-cgv-24th/blob/master/src/main/java/com/ceos24/cgv/domain/order/service/OrderService.java"
click node_order_store "https://github.com/ceos-developers/spring-cgv-24th/blob/master/src/main/java/com/ceos24/cgv/domain/order/repository/OrderRepository.java"
click node_payment_api "https://github.com/ceos-developers/spring-cgv-24th/blob/master/src/main/java/com/ceos24/cgv/domain/payment/controller/PaymentController.java"
click node_payment_service "https://github.com/ceos-developers/spring-cgv-24th/blob/master/src/main/java/com/ceos24/cgv/domain/payment/service/PaymentService.java"
click node_payment_store "https://github.com/ceos-developers/spring-cgv-24th/blob/master/src/main/java/com/ceos24/cgv/domain/payment/repository/PaymentRepository.java"
click node_store_api "https://github.com/ceos-developers/spring-cgv-24th/blob/master/src/main/java/com/ceos24/cgv/domain/store/controller/StoreController.java"
click node_store_admin "https://github.com/ceos-developers/spring-cgv-24th/blob/master/src/main/java/com/ceos24/cgv/domain/store/service/StoreAdminService.java"
click node_store_stock "https://github.com/ceos-developers/spring-cgv-24th/blob/master/src/main/java/com/ceos24/cgv/domain/store/entity/MenuStock.java"
click node_favorite_theater "https://github.com/ceos-developers/spring-cgv-24th/blob/master/src/main/java/com/ceos24/cgv/domain/theater/service/FavoriteTheaterService.java"
click node_favorite_movie "https://github.com/ceos-developers/spring-cgv-24th/blob/master/src/main/java/com/ceos24/cgv/domain/movie/service/FavoriteMovieService.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_auth_api,node_auth_service,node_member_store toneBlue
class node_movie_api,node_movie_service,node_movie_store,node_screening_api,node_screening_service,node_screening_store,node_theater_admin,node_favorite_theater,node_favorite_movie toneAmber
class node_reservation_api,node_reservation_service,node_seat_store,node_reservation_store,node_order_api,node_order_service,node_order_store toneMint
class node_payment_api,node_payment_service,node_payment_store toneRose
class node_store_api,node_store_admin,node_store_stock,node_customer,node_gateway toneIndigo
```

## Components

### Identity

- [Auth API](https://github.com/ceos-developers/spring-cgv-24th/blob/master/src/main/java/com/ceos24/cgv/domain/auth/controller/AuthController.java): `src/main/java/com/ceos24/cgv/domain/auth/controller/AuthController.java`
- [Authentication](https://github.com/ceos-developers/spring-cgv-24th/blob/master/src/main/java/com/ceos24/cgv/domain/auth/service/AuthService.java): `src/main/java/com/ceos24/cgv/domain/auth/service/AuthService.java`
- [Member Records](https://github.com/ceos-developers/spring-cgv-24th/blob/master/src/main/java/com/ceos24/cgv/domain/member/repository/MemberRepository.java): `src/main/java/com/ceos24/cgv/domain/member/repository/MemberRepository.java`

### Cinema Catalog

- [Movie API](https://github.com/ceos-developers/spring-cgv-24th/blob/master/src/main/java/com/ceos24/cgv/domain/movie/controller/MovieController.java): `src/main/java/com/ceos24/cgv/domain/movie/controller/MovieController.java`
- [Movie Catalog](https://github.com/ceos-developers/spring-cgv-24th/blob/master/src/main/java/com/ceos24/cgv/domain/movie/service/MovieService.java): `src/main/java/com/ceos24/cgv/domain/movie/service/MovieService.java`
- [Movie Records](https://github.com/ceos-developers/spring-cgv-24th/blob/master/src/main/java/com/ceos24/cgv/domain/movie/entity/Movie.java): `src/main/java/com/ceos24/cgv/domain/movie/entity/Movie.java`
- [Screening API](https://github.com/ceos-developers/spring-cgv-24th/blob/master/src/main/java/com/ceos24/cgv/domain/screening/controller/ScreeningController.java): `src/main/java/com/ceos24/cgv/domain/screening/controller/ScreeningController.java`
- [Screening Catalog](https://github.com/ceos-developers/spring-cgv-24th/blob/master/src/main/java/com/ceos24/cgv/domain/screening/service/ScreeningService.java): `src/main/java/com/ceos24/cgv/domain/screening/service/ScreeningService.java`
- [Screening Records](https://github.com/ceos-developers/spring-cgv-24th/blob/master/src/main/java/com/ceos24/cgv/domain/screening/entity/Screening.java): `src/main/java/com/ceos24/cgv/domain/screening/entity/Screening.java`
- [Theater Admin](https://github.com/ceos-developers/spring-cgv-24th/blob/master/src/main/java/com/ceos24/cgv/domain/theater/controller/TheaterAdminController.java): `src/main/java/com/ceos24/cgv/domain/theater/controller/TheaterAdminController.java`
- [Theater Favorites](https://github.com/ceos-developers/spring-cgv-24th/blob/master/src/main/java/com/ceos24/cgv/domain/theater/service/FavoriteTheaterService.java): `src/main/java/com/ceos24/cgv/domain/theater/service/FavoriteTheaterService.java`
- [Movie Favorites](https://github.com/ceos-developers/spring-cgv-24th/blob/master/src/main/java/com/ceos24/cgv/domain/movie/service/FavoriteMovieService.java): `src/main/java/com/ceos24/cgv/domain/movie/service/FavoriteMovieService.java`

### Booking and Orders

- [Reservation API](https://github.com/ceos-developers/spring-cgv-24th/blob/master/src/main/java/com/ceos24/cgv/domain/reservation/controller/ReservationController.java): `src/main/java/com/ceos24/cgv/domain/reservation/controller/ReservationController.java`
- [Seat Reservation](https://github.com/ceos-developers/spring-cgv-24th/blob/master/src/main/java/com/ceos24/cgv/domain/reservation/service/ReservationService.java): `src/main/java/com/ceos24/cgv/domain/reservation/service/ReservationService.java`
- [Seat Records](https://github.com/ceos-developers/spring-cgv-24th/blob/master/src/main/java/com/ceos24/cgv/domain/theater/entity/Seat.java): `src/main/java/com/ceos24/cgv/domain/theater/entity/Seat.java`
- [Reservations](https://github.com/ceos-developers/spring-cgv-24th/blob/master/src/main/java/com/ceos24/cgv/domain/reservation/repository/ReservationRepository.java): `src/main/java/com/ceos24/cgv/domain/reservation/repository/ReservationRepository.java`
- [Order API](https://github.com/ceos-developers/spring-cgv-24th/blob/master/src/main/java/com/ceos24/cgv/domain/order/controller/OrderController.java): `src/main/java/com/ceos24/cgv/domain/order/controller/OrderController.java`
- [Order Creation](https://github.com/ceos-developers/spring-cgv-24th/blob/master/src/main/java/com/ceos24/cgv/domain/order/service/OrderService.java): `src/main/java/com/ceos24/cgv/domain/order/service/OrderService.java`
- [Order Records](https://github.com/ceos-developers/spring-cgv-24th/blob/master/src/main/java/com/ceos24/cgv/domain/order/repository/OrderRepository.java): `src/main/java/com/ceos24/cgv/domain/order/repository/OrderRepository.java`

### Payments

- [Payment API](https://github.com/ceos-developers/spring-cgv-24th/blob/master/src/main/java/com/ceos24/cgv/domain/payment/controller/PaymentController.java): `src/main/java/com/ceos24/cgv/domain/payment/controller/PaymentController.java`
- [Payment Processing](https://github.com/ceos-developers/spring-cgv-24th/blob/master/src/main/java/com/ceos24/cgv/domain/payment/service/PaymentService.java): `src/main/java/com/ceos24/cgv/domain/payment/service/PaymentService.java`
- [Payment Records](https://github.com/ceos-developers/spring-cgv-24th/blob/master/src/main/java/com/ceos24/cgv/domain/payment/repository/PaymentRepository.java): `src/main/java/com/ceos24/cgv/domain/payment/repository/PaymentRepository.java`

### Concessions

- [Store API](https://github.com/ceos-developers/spring-cgv-24th/blob/master/src/main/java/com/ceos24/cgv/domain/store/controller/StoreController.java): `src/main/java/com/ceos24/cgv/domain/store/controller/StoreController.java`
- [Store Admin](https://github.com/ceos-developers/spring-cgv-24th/blob/master/src/main/java/com/ceos24/cgv/domain/store/service/StoreAdminService.java): `src/main/java/com/ceos24/cgv/domain/store/service/StoreAdminService.java`
- [Menu Stock](https://github.com/ceos-developers/spring-cgv-24th/blob/master/src/main/java/com/ceos24/cgv/domain/store/entity/MenuStock.java): `src/main/java/com/ceos24/cgv/domain/store/entity/MenuStock.java`

### Other components

- **Customer**
- **Toss Payments**

## Connections

- Customer → Auth API: requests
- Auth API → Authentication: delegates (evidence: `src/main/java/com/ceos24/cgv/domain/auth/controller/AuthController.java`)
- Authentication → Member Records: reads and saves (evidence: `src/main/java/com/ceos24/cgv/domain/auth/service/AuthService.java`)
- Customer → Movie API: browses
- Movie API → Movie Catalog: delegates
- Movie Catalog → Movie Records: queries (evidence: `src/main/java/com/ceos24/cgv/domain/movie/service/MovieService.java`)
- Movie Catalog → Screening Records: queries (evidence: `src/main/java/com/ceos24/cgv/domain/movie/service/MovieService.java`)
- Customer → Screening API: browses
- Screening API → Screening Catalog: delegates
- Customer → Reservation API: requests seats
- Reservation API → Seat Reservation: delegates (evidence: `src/main/java/com/ceos24/cgv/domain/reservation/controller/ReservationController.java`)
- Seat Reservation → Seat Records: reads and updates (evidence: `src/main/java/com/ceos24/cgv/domain/reservation/service/ReservationService.java`)
- Seat Reservation → Member Records: reads (evidence: `src/main/java/com/ceos24/cgv/domain/reservation/service/ReservationService.java`)
- Seat Reservation → Reservations: saves and deletes (evidence: `src/main/java/com/ceos24/cgv/domain/reservation/service/ReservationService.java`)
- Customer → Order API: places order
- Order API → Order Creation: delegates (evidence: `src/main/java/com/ceos24/cgv/domain/order/controller/OrderController.java`)
- Order Creation → Member Records: reads (evidence: `src/main/java/com/ceos24/cgv/domain/order/service/OrderService.java`)
- Order Creation → Menu Stock: validates and deducts (evidence: `src/main/java/com/ceos24/cgv/domain/order/service/OrderService.java`)
- Order Creation → Order Records: saves (evidence: `src/main/java/com/ceos24/cgv/domain/order/service/OrderService.java`)
- Customer → Payment API: pays
- Payment API → Payment Processing: delegates (evidence: `src/main/java/com/ceos24/cgv/domain/payment/controller/PaymentController.java`)
- Payment Processing → Order Records: reads (evidence: `src/main/java/com/ceos24/cgv/domain/payment/service/PaymentService.java`)
- Payment Processing → Payment Records: records payment (evidence: `src/main/java/com/ceos24/cgv/domain/payment/service/PaymentService.java`)
- Payment Processing → Toss Payments: confirms and cancels (evidence: `src/main/java/com/ceos24/cgv/domain/payment/service/PaymentService.java`)
- Theater Admin → Screening Catalog: manages screenings
- Store API → Store Admin: delegates
- Store Admin → Menu Stock: creates stock (evidence: `src/main/java/com/ceos24/cgv/domain/store/service/StoreAdminService.java`)
- Customer → Theater Favorites: manages favorites
- Customer → Movie Favorites: manages favorites
