How erkutoguz/ecommerce works
This is an event-driven e-commerce backend. Customers enter through the API Gateway; registration provisions a customer asynchronously, while commerce requests validate customer and product state before cart checkout creates an order. The Order Workflow Service coordinates stock reservation and payment, then confirms or rejects the order and compensates failures. Kafka carries commands and events; services use transactional outboxes and inbox deduplication, and each business service owns its database. README documents the service topology and Stripe flows; sampled source verifies selected registration, cart, saga, stock, and payment behavior, not every listener or route.
Main entry points: ApiGatewayApplication.java API Gateway · PaymentService.java Payment Service · OrderService.java Order Service · AuthService.java Auth Service
Components 20
Entry and Identity
- API Gateway
api-gateway/src/main/java/dev/erkut/apigateway/ApiGatewayApplication.java - Auth Service
auth-service/src/main/java/dev/erkut/authservice/authentication/AuthService.java - JWT Issuance
auth-service/src/main/java/dev/erkut/authservice/token/AccessTokenService.java
Commerce Services
- Customer Service
customer-service/src/main/java/dev/erkut/customerservice/customer/application/CustomerService.java - Product Catalog
product-service/src/main/java/dev/erkut/productservice/product/application/ProductService.java - Cart Service
order-service/src/main/java/dev/erkut/orderservice/cart/application/CartService.java - Checkout Service
order-service/src/main/java/dev/erkut/orderservice/checkout/application/CheckoutService.java - Order Service
order-service/src/main/java/dev/erkut/orderservice/order/application/OrderService.java
Order Coordination
- Order Saga
order-workflow-service/src/main/java/dev/erkut/orderworkflowservice/saga/application/OrderSagaService.java
Stock and Payments
- Stock Service
stock-service/src/main/java/dev/erkut/stockservice/reservation/application/ReservationService.java - Payment Service
payment-service/src/main/java/dev/erkut/paymentservice/payment/application/PaymentService.java
Messaging Backbone
- Kafka
- Auth Database
auth-service/src/main/java/dev/erkut/authservice/user/AuthUserRepository.java - Customer Database
customer-service/src/main/java/dev/erkut/customerservice/customer/persistence/CustomerRepository.java - Order Database
order-service/src/main/java/dev/erkut/orderservice/order/persistence/OrderRepository.java - Saga Database
order-workflow-service/src/main/java/dev/erkut/orderworkflowservice/saga/persistence/OrderSagaRepository.java - Stock Database
stock-service/src/main/java/dev/erkut/stockservice/stock/application/StockService.java - Payment Database
payment-service/src/main/java/dev/erkut/paymentservice/payment/application/PaymentService.java
Other components
- Client
- Stripe
Connections 31
- Client → API Gateway: HTTP requests
- API Gateway → Auth Service: routes auth
- API Gateway → Customer Service: routes customer
- API Gateway → Product Catalog: routes products
- API Gateway → Cart Service: routes carts
- API Gateway → Checkout Service: routes checkout
- API Gateway → Order Service: routes orders
- API Gateway → Payment Service: routes payments
- Auth Service → JWT Issuance: issues access JWT
- Auth Service → Auth Database: reads/writes users
- Auth Service → Kafka: publishes customer command
- Kafka → Customer Service: delivers customer command
- Customer Service → Customer Database: persists customers
- Cart Service → Customer Service: validates customer
- Cart Service → Product Catalog: validates products
- Checkout Service → Order Service: creates order
- Order Service → Order Database: reads/writes orders
- Order Service → Kafka: publishes order events
- Kafka → Order Saga: delivers order events
- Order Saga → Saga Database: persists saga state
- Order Saga → Kafka: publishes stock/payment/order commands
- Kafka → Stock Service: delivers stock commands
- Kafka → Payment Service: delivers payment commands
- Stock Service → Stock Database: updates inventory/reservations
- Stock Service → Kafka: publishes stock events
- Payment Service → Payment Database: reads/writes payments
- Payment Service → Stripe: creates checkout session
- Stripe → API Gateway: forwards webhook
- Payment Service → Kafka: publishes payment events
- Kafka → Order Saga: delivers stock/payment results
- Kafka → Order Service: delivers order commands