How shaorankun/mini-product-system works
This is a microservices storefront with Angular sign-in and product browsing, JWT-based identity, user administration, product catalog management (including versions and stock), and a per-user cart. The principal workflow is authentication, browsing products, then adding or removing cart items; cart changes publish events that adjust catalog stock. Sampled service code establishes the internal calls and persistence paths below. The README is empty, and gateway routing, frontend API clients, and infrastructure configuration were not sampled, so their wiring is left unspecified.
Main entry points: JwtAuthFilter.java API gateway · CartService.java Cart service · ProductService.java Product service · UserService.java User service
Components 22
Client
- Angular storefront
frontend/src/app/app.routes.ts
Identity and users
- Auth endpoints
auth-service/src/main/java/com/training/auth_service/controller/AuthController.java - Auth service
auth-service/src/main/java/com/training/auth_service/service/AuthService.java - User service client
auth-service/src/main/java/com/training/auth_service/client/UserServiceClient.java - Internal user API
user-service/src/main/java/com/training/user_service/controller/UserInternalController.java - Profile and admin APIs
user-service/src/main/java/com/training/user_service/controller/UserController.java - User service
user-service/src/main/java/com/training/user_service/service/UserService.java - User records
user-service/src/main/java/com/training/user_service/repository/UserRepository.java
Catalog and cart
- Product endpoints
product-service/src/main/java/com/training/product_service/controller/ProductController.java - Product service
product-service/src/main/java/com/training/product_service/service/ProductService.java - Product repository
product-service/src/main/java/com/training/product_service/repository/ProductRepository.java - Public product queries
product-service/src/main/java/com/training/product_service/repository/ProductQueryRepository.java - MongoDB products
product-service/src/main/java/com/training/product_service/model/Product.java - Cart endpoints
cart-service/src/main/java/com/training/cart_service/controller/CartController.java - Cart service
cart-service/src/main/java/com/training/cart_service/service/CartService.java - Cart items
cart-service/src/main/java/com/training/cart_service/repository/CartItemRepository.java - Product service client
cart-service/src/main/java/com/training/cart_service/client/ProductServiceClient.java
Gateway and messaging
- API gateway
api-gateway/src/main/java/com/training/api_gateway/filter/JwtAuthFilter.java - Cart event publisher
cart-service/src/main/java/com/training/cart_service/messaging/SqsEventPublisher.java - SQS event queue
- Cart event listener
product-service/src/main/java/com/training/product_service/messaging/CartEventListener.java
Other components
- Shopper
Connections 25
- Shopper → Angular storefront: uses
- Angular storefront → API gateway: API requests
- API gateway → Auth endpoints: routes requests
- API gateway → Product endpoints: routes requests
- API gateway → Cart endpoints: routes requests
- API gateway → Profile and admin APIs: routes requests
- Auth endpoints → Auth service: invokes
- Auth service → User service client: requests user data
- User service client → Internal user API: calls
- Internal user API → User service: invokes
- Profile and admin APIs → User service: invokes
- User service → User records: reads and writes
- Product endpoints → Product service: invokes
- Product service → Product repository: reads and writes
- Product service → Public product queries: queries public listings
- Product repository → MongoDB products: persists products
- Public product queries → MongoDB products: aggregates listings
- Cart endpoints → Cart service: invokes
- Cart service → Cart items: reads and writes
- Cart service → Product service client: checks stock and fetches details
- Product service client → Product endpoints: calls
- Cart service → Cart event publisher: publishes cart changes
- Cart event publisher → SQS event queue: sends events
- SQS event queue → Cart event listener: delivers events
- Cart event listener → Product service: adjusts stock