How euiseok00/game-market works
Game Market is a virtual game storefront: users browse and filter games, sign in, add games to a cart, make a simulated purchase, and view their library. On game details, they can inspect source reviews and request a cached Gemini summary with browser TTS playback. The React client calls the Spring Boot API; the backend owns sessions, catalog, cart, order, review, and summary logic. The README documents PostgreSQL and Gemini integrations. Some subsystem links rely on README statements or SOURCE INDEX references; unsampled implementations are not inferred beyond those relationships.
Main entry points: api.ts API client · App.tsx React app · SummaryService.java Summary generation · OrderService.java Order service
Components 29
Web client
- React app
frontend/src/App.tsx - API client
frontend/src/api.ts - Auth context
frontend/src/auth.tsx - Store pages
frontend/src/pages/Home.tsx - Game detail
frontend/src/pages/GameDetail.tsx - Cart page
frontend/src/pages/Cart.tsx - Library page
frontend/src/pages/Library.tsx - Review list
frontend/src/components/ReviewList.tsx - Summary panel
frontend/src/components/SummaryPanel.tsx - Browser TTS
frontend/src/hooks/useTts.ts
Identity
- Session auth
backend/src/main/java/com/gamemarket/auth/AuthController.java - User records
backend/src/main/java/com/gamemarket/auth/UserRepository.java
Store and commerce
- Game catalog
backend/src/main/java/com/gamemarket/game/GameController.java - Game records
backend/src/main/java/com/gamemarket/game/GameRepository.java - Cart operations
backend/src/main/java/com/gamemarket/cart/CartController.java - Cart records
backend/src/main/java/com/gamemarket/cart/CartRepository.java - Checkout
backend/src/main/java/com/gamemarket/order/OrderController.java - Order service
backend/src/main/java/com/gamemarket/order/OrderService.java - Game library
backend/src/main/java/com/gamemarket/order/LibraryController.java - Orders and ownership
backend/src/main/java/com/gamemarket/order/OrderRepository.java
Reviews and summaries
- Review endpoint
backend/src/main/java/com/gamemarket/review/ReviewController.java - Review sources
backend/src/main/java/com/gamemarket/review/FallbackReviewSource.java - Summary endpoint
backend/src/main/java/com/gamemarket/summary/SummaryController.java - Summary generation
backend/src/main/java/com/gamemarket/summary/SummaryService.java
Persistence and AI
- Summary cache
backend/src/main/java/com/gamemarket/summary/SummaryRepository.java - Timing logs
backend/src/main/java/com/gamemarket/summary/SummaryLogRepository.java
Other components
- Browser user
- Gemini API
- PostgreSQL
Connections 45
- Browser user → React app: uses
README.md - React app → API client: requests through
frontend/src/api.ts - React app → Auth context: provides auth
frontend/src/App.tsx - React app → Store pages: routes to
frontend/src/App.tsx - React app → Game detail: routes to
frontend/src/App.tsx - React app → Cart page: routes to
frontend/src/App.tsx - React app → Library page: routes to
frontend/src/App.tsx - Auth context → API client: calls auth
frontend/src/auth.tsx - Store pages → API client: loads catalog
frontend/src/pages/Home.tsx - Game detail → API client: loads game
frontend/src/pages/GameDetail.tsx - Game detail → Review list: renders
frontend/src/pages/GameDetail.tsx - Game detail → Summary panel: renders
frontend/src/pages/GameDetail.tsx - Review list → API client: fetches reviews
frontend/src/components/ReviewList.tsx - Summary panel → API client: fetches summary
frontend/src/components/SummaryPanel.tsx - Summary panel → Browser TTS: speaks summary
frontend/src/components/SummaryPanel.tsx - Cart page → API client: updates cart
frontend/src/pages/Cart.tsx - Library page → API client: loads library
frontend/src/api.ts - API client → Session auth: calls API
README.md - API client → Game catalog: calls API
README.md - API client → Cart operations: calls API
README.md - API client → Checkout: calls API
README.md - API client → Game library: calls API
README.md - API client → Review endpoint: calls API
README.md - API client → Summary endpoint: calls API
README.md - Session auth → User records: reads and writes
backend/src/main/java/com/gamemarket/auth/AuthController.java - Game catalog → Game records: queries catalog
backend/src/main/java/com/gamemarket/game/GameController.java - Cart operations → Game records: finds games
backend/src/main/java/com/gamemarket/cart/CartController.java - Cart operations → Cart records: manages cart
backend/src/main/java/com/gamemarket/cart/CartController.java - Cart operations → Order service: checks ownership
backend/src/main/java/com/gamemarket/cart/CartController.java - Checkout → Order service: checks out
backend/src/main/java/com/gamemarket/order/OrderController.java - Game library → Order service: loads library
backend/src/main/java/com/gamemarket/order/LibraryController.java - Order service → Cart records: reads and clears
backend/src/main/java/com/gamemarket/order/OrderService.java - Order service → Orders and ownership: saves orders
backend/src/main/java/com/gamemarket/order/OrderService.java - Review endpoint → Game records: finds game
backend/src/main/java/com/gamemarket/review/ReviewController.java - Review endpoint → Review sources: fetches reviews
backend/src/main/java/com/gamemarket/review/ReviewController.java - Summary endpoint → Summary generation: requests summary
backend/src/main/java/com/gamemarket/summary/SummaryController.java - Summary generation → Game records: loads game
backend/src/main/java/com/gamemarket/summary/SummaryService.java - Summary generation → Review sources: fetches reviews
backend/src/main/java/com/gamemarket/summary/SummaryService.java - Summary generation → Summary cache: reads and caches
backend/src/main/java/com/gamemarket/summary/SummaryService.java - Summary generation → Timing logs: records timings
backend/src/main/java/com/gamemarket/summary/SummaryService.java - Summary generation → Gemini API: requests summary
README.md - Game catalog → PostgreSQL: persists catalog
README.md - Cart operations → PostgreSQL: persists cart
README.md - Order service → PostgreSQL: persists purchases
README.md - Summary generation → PostgreSQL: persists cache and logs
README.md