How mosh-hamedani/spring-api-finished works
This is a Spring Boot e-commerce REST API. The documented customer journey is browsing products, creating and filling a cart, registering and logging in, checking out through Stripe, then receiving an order-status update through a webhook and viewing order history. The graph also shows the user, product, cart, and order service/repository layers. Relationships are limited to those shown in excerpts, the source index, or README; some controller and security implementation details were not sampled.
Main entry points: CheckoutService.java Checkout service · AuthService.java Auth service · CheckoutController.java Checkout API · ProductController.java Product API
Components 20
Product catalog
- Product API
src/main/java/com/codewithmosh/store/products/ProductController.java - Product repository
src/main/java/com/codewithmosh/store/products/ProductRepository.java - Category repository
src/main/java/com/codewithmosh/store/products/CategoryRepository.java
Users and auth
- User API
src/main/java/com/codewithmosh/store/users/UserController.java - User service
src/main/java/com/codewithmosh/store/users/UserService.java - User repository
src/main/java/com/codewithmosh/store/users/UserRepository.java - Auth API
src/main/java/com/codewithmosh/store/auth/AuthController.java - Auth service
src/main/java/com/codewithmosh/store/auth/AuthService.java - JWT service
src/main/java/com/codewithmosh/store/auth/JwtService.java
Cart and orders
- Cart API
src/main/java/com/codewithmosh/store/carts/CartController.java - Cart service
src/main/java/com/codewithmosh/store/carts/CartService.java - Cart repository
src/main/java/com/codewithmosh/store/carts/CartRepository.java - Order API
src/main/java/com/codewithmosh/store/orders/OrderController.java - Order service
src/main/java/com/codewithmosh/store/orders/OrderService.java - Order repository
src/main/java/com/codewithmosh/store/orders/OrderRepository.java
Checkout and payment
- Checkout API
src/main/java/com/codewithmosh/store/payments/CheckoutController.java - Checkout service
src/main/java/com/codewithmosh/store/payments/CheckoutService.java - Payment gateway
src/main/java/com/codewithmosh/store/payments/StripePaymentGateway.java
Other components
- Customer
- Stripe
Connections 29
- Customer → Product API: browse products
- Product API → Product repository: queries
src/main/java/com/codewithmosh/store/products/ProductController.java - Product API → Category repository: queries
src/main/java/com/codewithmosh/store/products/ProductController.java - Customer → Cart API: manage cart
- Cart API → Cart service: delegates
src/main/java/com/codewithmosh/store/carts/CartController.java - Cart service → Cart repository: loads and saves
src/main/java/com/codewithmosh/store/carts/CartService.java - Cart service → Product repository: looks up products
src/main/java/com/codewithmosh/store/carts/CartService.java - Customer → User API: registers
- User API → User service: delegates
src/main/java/com/codewithmosh/store/users/UserController.java - User service → User repository: reads and writes
src/main/java/com/codewithmosh/store/users/UserService.java - Customer → Auth API: logs in
- Auth API → Auth service: delegates
src/main/java/com/codewithmosh/store/auth/AuthController.java - Auth service → User repository: loads account
src/main/java/com/codewithmosh/store/auth/AuthService.java - Auth service → JWT service: creates tokens
src/main/java/com/codewithmosh/store/auth/AuthService.java - Customer → Checkout API: checks out
- Checkout API → Checkout service: delegates
src/main/java/com/codewithmosh/store/payments/CheckoutController.java - Checkout service → Cart repository: loads cart
src/main/java/com/codewithmosh/store/payments/CheckoutService.java - Checkout service → Order repository: saves order
src/main/java/com/codewithmosh/store/payments/CheckoutService.java - Checkout service → Auth service: gets current user
src/main/java/com/codewithmosh/store/payments/CheckoutService.java - Checkout service → Payment gateway: creates session
src/main/java/com/codewithmosh/store/payments/CheckoutService.java - Payment gateway → Stripe: starts payment
- Stripe → Checkout API: sends webhook
- Checkout API → Checkout service: forwards webhook
src/main/java/com/codewithmosh/store/payments/CheckoutController.java - Checkout service → Payment gateway: parses event
src/main/java/com/codewithmosh/store/payments/CheckoutService.java - Checkout service → Order repository: updates status
src/main/java/com/codewithmosh/store/payments/CheckoutService.java - Customer → Order API: views history
- Order API → Order service: delegates
src/main/java/com/codewithmosh/store/orders/OrderController.java - Order service → Auth service: gets current user
src/main/java/com/codewithmosh/store/orders/OrderService.java - Order service → Order repository: loads orders
src/main/java/com/codewithmosh/store/orders/OrderService.java