How th7mo/trackshop-api works
This is a Spring-based music-store backend: clients authenticate, browse track and genre catalogs, manage customer accounts, and add or remove tracks in a shopping cart. The main domain stages are authentication, catalog access, customer management, and cart operations, with repository interfaces and JPA entities forming the persistence layer. The README only notes a Docker Compose requirement and documents no product behavior; the workflow and links here rely on the indexed source references and sampled code, so unsampled details are omitted.
Main entry points: CustomerService.java Customer Service · ShoppingCart.java Cart Model · DatabaseSeeder.java Database Seeder · ShoppingCartService.java Cart Service
Components 25
Authentication
- Auth API
src/main/java/com/th7mo/auth/AuthController.java - JWT Utilities
src/main/java/com/th7mo/auth/JwtUtil.java - Security Configuration
src/main/java/com/th7mo/auth/WebSecurityConfig.java - Token Filter
src/main/java/com/th7mo/auth/AuthTokenFilter.java - Auth Entry Point
src/main/java/com/th7mo/auth/AuthEntryPointJwt.java - User Details Service
src/main/java/com/th7mo/customer/CustomUserDetailsService.java
Customer Accounts
- Customer API
src/main/java/com/th7mo/customer/CustomerController.java - Customer Service
src/main/java/com/th7mo/customer/CustomerService.java - Customer Repository
src/main/java/com/th7mo/customer/CustomerRepository.java - Customer Model
src/main/java/com/th7mo/customer/Customer.java - Customer Roles
src/main/java/com/th7mo/customer/Role.java
Music Catalog
- Track API
src/main/java/com/th7mo/track/TrackController.java - Track Service
src/main/java/com/th7mo/track/TrackService.java - Track Repository
src/main/java/com/th7mo/track/TrackRepository.java - Track Model
src/main/java/com/th7mo/track/Track.java - Genre API
src/main/java/com/th7mo/genre/GenreController.java - Genre Service
src/main/java/com/th7mo/genre/GenreService.java - Genre Repository
src/main/java/com/th7mo/genre/GenreRepository.java - Genre Model
src/main/java/com/th7mo/genre/Genre.java
Shopping Cart
- Cart API
src/main/java/com/th7mo/shopping_cart/ShoppingCartController.java - Cart Service
src/main/java/com/th7mo/shopping_cart/ShoppingCartService.java - Cart Model
src/main/java/com/th7mo/shopping_cart/ShoppingCart.java - Cart Item
src/main/java/com/th7mo/shopping_cart/ShoppingCartItem.java
Other components
- API Client
- Database Seeder
src/main/java/com/th7mo/auth/DatabaseSeeder.java
Connections 32
- API Client → Auth API: requests auth
src/main/java/com/th7mo/auth/AuthController.java - Auth API → Customer Service: manages accounts
src/main/java/com/th7mo/auth/AuthController.java - Auth API → JWT Utilities: creates tokens
src/main/java/com/th7mo/auth/AuthController.java - Security Configuration → Token Filter: registers filter
src/main/java/com/th7mo/auth/WebSecurityConfig.java - Security Configuration → Auth Entry Point: configures entry
src/main/java/com/th7mo/auth/WebSecurityConfig.java - Security Configuration → User Details Service: configures lookup
src/main/java/com/th7mo/auth/WebSecurityConfig.java - Token Filter → JWT Utilities: validates tokens
src/main/java/com/th7mo/auth/AuthTokenFilter.java - Token Filter → User Details Service: loads user
src/main/java/com/th7mo/auth/AuthTokenFilter.java - User Details Service → Customer Repository: finds customer
src/main/java/com/th7mo/customer/CustomUserDetailsService.java - Customer API → Customer Service: delegates requests
src/main/java/com/th7mo/customer/CustomerController.java - Customer Service → Customer Repository: reads and saves
src/main/java/com/th7mo/customer/CustomerService.java - Customer Service → Customer Model: creates customer
src/main/java/com/th7mo/customer/CustomerService.java - Customer Service → Cart Model: initializes cart
src/main/java/com/th7mo/customer/CustomerService.java - Customer Model → Customer Roles: stores role
src/main/java/com/th7mo/customer/Customer.java - Customer Model → Cart Model: owns cart
src/main/java/com/th7mo/customer/Customer.java - Track API → Track Service: delegates requests
src/main/java/com/th7mo/track/TrackController.java - Track Service → Track Repository: reads and writes
src/main/java/com/th7mo/track/TrackService.java - Track Repository → Track Model: persists tracks
src/main/java/com/th7mo/track/TrackRepository.java - Genre API → Genre Service: delegates requests
src/main/java/com/th7mo/genre/GenreController.java - Genre Service → Genre Repository: reads and writes
src/main/java/com/th7mo/genre/GenreService.java - Genre Repository → Genre Model: persists genres
src/main/java/com/th7mo/genre/GenreRepository.java - Cart API → Cart Service: delegates requests
src/main/java/com/th7mo/shopping_cart/ShoppingCartController.java - Cart API → Customer Service: resolves customer
src/main/java/com/th7mo/shopping_cart/ShoppingCartController.java - Cart Service → Customer Repository: loads and saves
src/main/java/com/th7mo/shopping_cart/ShoppingCartService.java - Cart Service → Track Repository: loads track
src/main/java/com/th7mo/shopping_cart/ShoppingCartService.java - Cart Service → Cart Model: updates items
src/main/java/com/th7mo/shopping_cart/ShoppingCartService.java - Cart Model → Cart Item: contains items
src/main/java/com/th7mo/shopping_cart/ShoppingCart.java - Cart Item → Track Model: references track
src/main/java/com/th7mo/shopping_cart/ShoppingCartItem.java - Database Seeder → Customer Repository: seeds customers
src/main/java/com/th7mo/auth/DatabaseSeeder.java - Database Seeder → Track Repository: seeds tracks
src/main/java/com/th7mo/auth/DatabaseSeeder.java - Database Seeder → Customer Model: creates customer data
src/main/java/com/th7mo/auth/DatabaseSeeder.java - Database Seeder → Cart Model: creates cart data
src/main/java/com/th7mo/auth/DatabaseSeeder.java