How dawn-guys/showmoa-backend works
ShowMoa is a Spring Boot backend for discovering performances and theatres, saving favorites, and managing an in-service calendar; ticket purchases remain with external ticketing sites. The main journey is performance search or map exploration, then detail viewing, wishlist management, and calendar retrieval. Separate capabilities include account/authentication, holiday lookup, and scheduled KOPIS ingestion. The graph follows documented product scope and sampled service relationships; some controller wiring and unsampled domain implementations are represented only where README documentation supports them.
Main entry points: FindTheatreApplication.java ShowMoa API · TheatreService.java Theatre API · WishlistService.java Wishlist and calendar · UserService.java User management
Components 23
Performance discovery
- Performance API
src/main/java/com/dawnguys/findtheatre/performance/PerformanceService.java - Performance data
src/main/java/com/dawnguys/findtheatre/performance/Performance.java - Theatre API
src/main/java/com/dawnguys/findtheatre/theatre/TheatreService.java - Theatre data
src/main/java/com/dawnguys/findtheatre/theatre/Theatre.java - Map search clients
src/main/java/com/dawnguys/findtheatre/external/map
Personal planning
- Wishlist and calendar
src/main/java/com/dawnguys/findtheatre/wishlist/WishlistService.java - Wishlist data
src/main/java/com/dawnguys/findtheatre/wishlist/Wishlist.java - Holiday API
src/main/java/com/dawnguys/findtheatre/holiday/HolidayService.java - Holiday client
src/main/java/com/dawnguys/findtheatre/external/holiday/HolidayApiClient.java
Accounts and access
- User management
src/main/java/com/dawnguys/findtheatre/user/UserService.java - User accounts
src/main/java/com/dawnguys/findtheatre/user/User.java - Authentication
src/main/java/com/dawnguys/findtheatre/auth/AuthService.java - Email verification
src/main/java/com/dawnguys/findtheatre/auth/email/EmailVerificationService.java - OAuth login
src/main/java/com/dawnguys/findtheatre/auth/oauth/CustomOAuth2UserService.java
Data ingestion
- KOPIS sync
src/main/java/com/dawnguys/findtheatre/external/kopis/KopisPerformanceSyncService.java - Theatre sync
src/main/java/com/dawnguys/findtheatre/external/kopis/KopisTheatreSyncService.java - KOPIS client
src/main/java/com/dawnguys/findtheatre/external/kopis/KopisClient.java
Shared services
- API error handling
src/main/java/com/dawnguys/findtheatre/common/exception/GlobalExceptionHandler.java
Other components
- Frontend user
- Naver Map APIs
- Public holiday source
- KOPIS API
- ShowMoa API
src/main/java/com/dawnguys/findtheatre/FindTheatreApplication.java
Connections 29
- Frontend user → ShowMoa API: uses API
README.md - ShowMoa API → Performance API: routes requests
- ShowMoa API → Theatre API: routes requests
- ShowMoa API → Wishlist and calendar: routes requests
- ShowMoa API → User management: routes requests
- Performance API → Performance data: queries
src/main/java/com/dawnguys/findtheatre/performance/PerformanceService.java - Performance API → Wishlist data: checks favorites
src/main/java/com/dawnguys/findtheatre/performance/PerformanceService.java - Theatre API → Theatre data: queries
src/main/java/com/dawnguys/findtheatre/theatre/TheatreService.java - Theatre API → Performance data: loads shows
src/main/java/com/dawnguys/findtheatre/theatre/TheatreService.java - Theatre API → Wishlist data: checks favorites
src/main/java/com/dawnguys/findtheatre/theatre/TheatreService.java - Theatre API → Map search clients: geocodes and searches
src/main/java/com/dawnguys/findtheatre/theatre/TheatreService.java - Map search clients → Naver Map APIs: searches locations
- Wishlist and calendar → Performance data: loads shows
src/main/java/com/dawnguys/findtheatre/wishlist/WishlistService.java - Wishlist and calendar → User accounts: loads user
src/main/java/com/dawnguys/findtheatre/wishlist/WishlistService.java - Wishlist and calendar → Wishlist data: saves and lists
src/main/java/com/dawnguys/findtheatre/wishlist/WishlistService.java - Holiday API → Holiday client: fetches holidays
src/main/java/com/dawnguys/findtheatre/holiday/HolidayService.java - Holiday client → Public holiday source: requests dates
- User management → User accounts: manages accounts
src/main/java/com/dawnguys/findtheatre/user/UserService.java - User management → Email verification: checks verification
src/main/java/com/dawnguys/findtheatre/user/UserService.java - User management → Authentication: logs out after changes
src/main/java/com/dawnguys/findtheatre/user/UserService.java - Authentication → User accounts: looks up account
src/main/java/com/dawnguys/findtheatre/auth/AuthService.java - OAuth login → User accounts: finds or creates account
src/main/java/com/dawnguys/findtheatre/auth/oauth/CustomOAuth2UserService.java - KOPIS sync → KOPIS client: fetches performance data
src/main/java/com/dawnguys/findtheatre/external/kopis/KopisPerformanceSyncService.java - KOPIS sync → Theatre sync: syncs facilities
src/main/java/com/dawnguys/findtheatre/external/kopis/KopisPerformanceSyncService.java - KOPIS sync → Performance data: writes performances
src/main/java/com/dawnguys/findtheatre/external/kopis/KopisPerformanceSyncService.java - Theatre sync → KOPIS client: fetches facility details
src/main/java/com/dawnguys/findtheatre/external/kopis/KopisTheatreSyncService.java - Theatre sync → Theatre data: saves facilities
src/main/java/com/dawnguys/findtheatre/external/kopis/KopisTheatreSyncService.java - KOPIS client → KOPIS API: requests source data
- API error handling → ShowMoa API: formats errors