How saksham2283/order-platform works
Order Platform is a Spring Boot microservices application for authenticated product listings and purchases, with order, payment, user, and email capabilities. The principal flow is a buyer entering through the gateway, purchasing through the product API, which requests payment and emits an order event; payment handling integrates with Stripe. Authentication and user management support the APIs, while Kafka-based notifications form a separate branch. Edges use the sampled source, SOURCE INDEX references, or README; unsampled routing and event details are represented only where documented.
Main entry points: api_gateway API gateway · ProductsController.java Product API · UsersService.java User persistence · PaymentService.java Payment processing
Components 24
API access
- API gateway
api-gateway/src/main/java/com/kukusha/api_gateway
Identity and users
- Authentication
auth-service/src/main/java/com/kukusha/auth_service/controller/AuthController.java - Auth service
auth-service/src/main/java/com/kukusha/auth_service/service/AuthService.java - User API
users-service/src/main/java/com/kukusha/users_service/controller/UsersController.java - User persistence
users-shared-lib/src/main/java/com/kukusha/users_shared_lib/service/UsersService.java - User records
users-shared-lib/src/main/java/com/kukusha/users_shared_lib/model/User.java
Commerce services
- Product API
product-service/src/main/java/com/kukusha/product_service/controller/ProductsController.java - Product persistence
product-service/src/main/java/com/kukusha/product_service/database/service/ProductsService.java - Product records
product-service/src/main/java/com/kukusha/product_service/database/model/Product.java - Order API
orders-service/src/main/java/com/kukusha/orders_service/controller/OrdersController.java - Order persistence
orders-service/src/main/java/com/kukusha/orders_service/database/service/OrdersService.java - Order records
orders-service/src/main/java/com/kukusha/orders_service/database/model/Order.java - Payment API
payment-service/src/main/java/com/kukusha/payment_service/controller/PaymentsController.java - Payment processing
payment-service/src/main/java/com/kukusha/payment_service/service/PaymentService.java - Payment records
payment-service/src/main/java/com/kukusha/payment_service/database/model/PaymentInfo.java
Events and email
- Email consumer
email-sender-service/src/main/java/com/kukusha/email_service/kafka/KafkaMailSenderComponent.java - Mail delivery
email-sender-service/src/main/java/com/kukusha/email_service/service/MailService.java
Shared foundations
- Kafka contracts
kafka-messages-sender-api/src/main/java/com/kukusha/kafka_messages_sender/api/KafkaMessagesSenderAPI.java - Token processing
token-service/src/main/java/com/kukusha/token_service/service/TokenProcessorDriver.java
Other components
- Client
- Stripe
- Kafka
- PostgreSQL
- Redis
Connections 31
- Client → API gateway: sends requests
- API gateway → Authentication: routes auth
- API gateway → Product API: routes products
- API gateway → Payment API: routes payments
- API gateway → User API: routes users
- API gateway → Order API: routes orders
- Authentication → Auth service: delegates to
auth-service/src/main/java/com/kukusha/auth_service/controller/AuthController.java - Auth service → User persistence: registers users
auth-service/src/main/java/com/kukusha/auth_service/service/AuthService.java - Auth service → Token processing: creates tokens
auth-service/src/main/java/com/kukusha/auth_service/service/AuthService.java - User API → User persistence: reads and updates
users-service/src/main/java/com/kukusha/users_service/controller/UsersController.java - User persistence → User records: reads and saves
users-shared-lib/src/main/java/com/kukusha/users_shared_lib/service/UsersService.java - Product API → Product persistence: manages listings
product-service/src/main/java/com/kukusha/product_service/controller/ProductsController.java - Product persistence → Product records: persists products
product-service/src/main/java/com/kukusha/product_service/database/service/ProductsService.java - Product API → User persistence: looks up buyer
product-service/src/main/java/com/kukusha/product_service/controller/ProductsController.java - Product API → Payment API: requests payment
product-service/src/main/java/com/kukusha/product_service/controller/ProductsController.java - Product API → Kafka contracts: publishes events
product-service/src/main/java/com/kukusha/product_service/controller/ProductsController.java - Order API → Order persistence: handles lifecycle
orders-service/src/main/java/com/kukusha/orders_service/controller/OrdersController.java - Order persistence → Order records: reads and saves
orders-service/src/main/java/com/kukusha/orders_service/database/service/OrdersService.java - Payment API → Payment processing: delegates to
payment-service/src/main/java/com/kukusha/payment_service/controller/PaymentsController.java - Payment processing → Stripe: processes intents
payment-service/src/main/java/com/kukusha/payment_service/service/PaymentService.java - Payment processing → Payment records: stores payment info
payment-service/src/main/java/com/kukusha/payment_service/service/PaymentService.java - Product API → Kafka: publishes messages
- Authentication → Kafka: publishes registration
auth-service/src/main/java/com/kukusha/auth_service/controller/AuthController.java - Kafka contracts → Kafka: sends messages
- Kafka → Email consumer: delivers events
- Email consumer → Mail delivery: sends email
- API gateway → Redis: rate limits
- User persistence → PostgreSQL: stores user data
- Product persistence → PostgreSQL: stores product data
- Order persistence → PostgreSQL: stores order data
- Payment processing → PostgreSQL: stores payment data