# saksham2283/order-platform architecture

> Architecture diagram of the GitHub repository saksham2283/order-platform, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-09). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/saksham2283/order-platform
- Repository: https://github.com/saksham2283/order-platform

## Overview

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/src/main/java/com/kukusha/api_gateway`](https://github.com/saksham2283/order-platform/tree/main/api-gateway/src/main/java/com/kukusha/api_gateway) (API gateway), [`product-service/src/main/java/com/kukusha/product_service/controller/ProductsController.java`](https://github.com/saksham2283/order-platform/blob/main/product-service/src/main/java/com/kukusha/product_service/controller/ProductsController.java) (Product API), [`users-shared-lib/src/main/java/com/kukusha/users_shared_lib/service/UsersService.java`](https://github.com/saksham2283/order-platform/blob/main/users-shared-lib/src/main/java/com/kukusha/users_shared_lib/service/UsersService.java) (User persistence), [`payment-service/src/main/java/com/kukusha/payment_service/service/PaymentService.java`](https://github.com/saksham2283/order-platform/blob/main/payment-service/src/main/java/com/kukusha/payment_service/service/PaymentService.java) (Payment processing)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_access["API access"]
  node_gateway["API gateway"]
end

subgraph group_identity["Identity and users"]
  node_auth["Authentication"]
  node_authlogic["Auth service<br/>[AuthService.java]"]
  node_usersapi["User API"]
  node_userslogic["User persistence<br/>[UsersService.java]"]
  node_userdb[("User records<br/>[User.java]")]
end

subgraph group_commerce["Commerce services"]
  node_products["Product API"]
  node_productlogic["Product persistence"]
  node_productdb[("Product records<br/>[Product.java]")]
  node_orders["Order API"]
  node_orderlogic["Order persistence<br/>[OrdersService.java]"]
  node_orderdb[("Order records<br/>[Order.java]")]
  node_payments["Payment API"]
  node_paymentlogic["Payment processing"]
  node_paymentdb[("Payment records<br/>[PaymentInfo.java]")]
end

subgraph group_events["Events and email"]
  node_emailconsumer["Email consumer"]
  node_mail["Mail delivery<br/>[MailService.java]"]
end

subgraph group_shared["Shared foundations"]
  node_contracts["Kafka contracts"]
  node_tokens["Token processing"]
end

node_buyer(("Client"))
node_stripe["Stripe"]
node_kafka["Kafka"]
node_postgres[("PostgreSQL")]
node_redis[("Redis")]

node_buyer -->|"sends requests"| node_gateway
node_gateway -->|"routes auth"| node_auth
node_gateway -->|"routes products"| node_products
node_gateway -->|"routes payments"| node_payments
node_gateway -->|"routes users"| node_usersapi
node_gateway -->|"routes orders"| node_orders
node_auth -->|"delegates to"| node_authlogic
node_authlogic -->|"registers users"| node_userslogic
node_authlogic -->|"creates tokens"| node_tokens
node_usersapi -->|"reads and updates"| node_userslogic
node_userslogic -->|"reads and saves"| node_userdb
node_products -->|"manages listings"| node_productlogic
node_productlogic -->|"persists products"| node_productdb
node_products -->|"looks up buyer"| node_userslogic
node_products -->|"requests payment"| node_payments
node_products -->|"publishes events"| node_contracts
node_orders -->|"handles lifecycle"| node_orderlogic
node_orderlogic -->|"reads and saves"| node_orderdb
node_payments -->|"delegates to"| node_paymentlogic
node_paymentlogic -->|"processes intents"| node_stripe
node_paymentlogic -->|"stores payment info"| node_paymentdb
node_products -.->|"publishes messages"| node_kafka
node_auth -->|"publishes registration"| node_kafka
node_contracts -.->|"sends messages"| node_kafka
node_kafka -->|"delivers events"| node_emailconsumer
node_emailconsumer -.->|"sends email"| node_mail
node_gateway -->|"rate limits"| node_redis
node_userslogic -.->|"stores user data"| node_postgres
node_productlogic -.->|"stores product data"| node_postgres
node_orderlogic -.->|"stores order data"| node_postgres
node_paymentlogic -.->|"stores payment data"| node_postgres

click node_gateway "https://github.com/saksham2283/order-platform/tree/main/api-gateway/src/main/java/com/kukusha/api_gateway"
click node_auth "https://github.com/saksham2283/order-platform/blob/main/auth-service/src/main/java/com/kukusha/auth_service/controller/AuthController.java"
click node_authlogic "https://github.com/saksham2283/order-platform/blob/main/auth-service/src/main/java/com/kukusha/auth_service/service/AuthService.java"
click node_usersapi "https://github.com/saksham2283/order-platform/blob/main/users-service/src/main/java/com/kukusha/users_service/controller/UsersController.java"
click node_userslogic "https://github.com/saksham2283/order-platform/blob/main/users-shared-lib/src/main/java/com/kukusha/users_shared_lib/service/UsersService.java"
click node_userdb "https://github.com/saksham2283/order-platform/blob/main/users-shared-lib/src/main/java/com/kukusha/users_shared_lib/model/User.java"
click node_products "https://github.com/saksham2283/order-platform/blob/main/product-service/src/main/java/com/kukusha/product_service/controller/ProductsController.java"
click node_productlogic "https://github.com/saksham2283/order-platform/blob/main/product-service/src/main/java/com/kukusha/product_service/database/service/ProductsService.java"
click node_productdb "https://github.com/saksham2283/order-platform/blob/main/product-service/src/main/java/com/kukusha/product_service/database/model/Product.java"
click node_orders "https://github.com/saksham2283/order-platform/blob/main/orders-service/src/main/java/com/kukusha/orders_service/controller/OrdersController.java"
click node_orderlogic "https://github.com/saksham2283/order-platform/blob/main/orders-service/src/main/java/com/kukusha/orders_service/database/service/OrdersService.java"
click node_orderdb "https://github.com/saksham2283/order-platform/blob/main/orders-service/src/main/java/com/kukusha/orders_service/database/model/Order.java"
click node_payments "https://github.com/saksham2283/order-platform/blob/main/payment-service/src/main/java/com/kukusha/payment_service/controller/PaymentsController.java"
click node_paymentlogic "https://github.com/saksham2283/order-platform/blob/main/payment-service/src/main/java/com/kukusha/payment_service/service/PaymentService.java"
click node_paymentdb "https://github.com/saksham2283/order-platform/blob/main/payment-service/src/main/java/com/kukusha/payment_service/database/model/PaymentInfo.java"
click node_contracts "https://github.com/saksham2283/order-platform/blob/main/kafka-messages-sender-api/src/main/java/com/kukusha/kafka_messages_sender/api/KafkaMessagesSenderAPI.java"
click node_emailconsumer "https://github.com/saksham2283/order-platform/blob/main/email-sender-service/src/main/java/com/kukusha/email_service/kafka/KafkaMailSenderComponent.java"
click node_mail "https://github.com/saksham2283/order-platform/blob/main/email-sender-service/src/main/java/com/kukusha/email_service/service/MailService.java"
click node_tokens "https://github.com/saksham2283/order-platform/blob/main/token-service/src/main/java/com/kukusha/token_service/service/TokenProcessorDriver.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_gateway,node_buyer toneBlue
class node_auth,node_authlogic,node_usersapi,node_userslogic,node_userdb,node_postgres,node_redis toneAmber
class node_products,node_productlogic,node_productdb,node_orders,node_orderlogic,node_orderdb,node_payments,node_paymentlogic,node_paymentdb toneMint
class node_emailconsumer,node_mail toneRose
class node_contracts,node_tokens,node_stripe,node_kafka toneIndigo
```

## Components

### API access

- [API gateway](https://github.com/saksham2283/order-platform/tree/main/api-gateway/src/main/java/com/kukusha/api_gateway): `api-gateway/src/main/java/com/kukusha/api_gateway`

### Identity and users

- [Authentication](https://github.com/saksham2283/order-platform/blob/main/auth-service/src/main/java/com/kukusha/auth_service/controller/AuthController.java): `auth-service/src/main/java/com/kukusha/auth_service/controller/AuthController.java`
- [Auth service](https://github.com/saksham2283/order-platform/blob/main/auth-service/src/main/java/com/kukusha/auth_service/service/AuthService.java): `auth-service/src/main/java/com/kukusha/auth_service/service/AuthService.java`
- [User API](https://github.com/saksham2283/order-platform/blob/main/users-service/src/main/java/com/kukusha/users_service/controller/UsersController.java): `users-service/src/main/java/com/kukusha/users_service/controller/UsersController.java`
- [User persistence](https://github.com/saksham2283/order-platform/blob/main/users-shared-lib/src/main/java/com/kukusha/users_shared_lib/service/UsersService.java): `users-shared-lib/src/main/java/com/kukusha/users_shared_lib/service/UsersService.java`
- [User records](https://github.com/saksham2283/order-platform/blob/main/users-shared-lib/src/main/java/com/kukusha/users_shared_lib/model/User.java): `users-shared-lib/src/main/java/com/kukusha/users_shared_lib/model/User.java`

### Commerce services

- [Product API](https://github.com/saksham2283/order-platform/blob/main/product-service/src/main/java/com/kukusha/product_service/controller/ProductsController.java): `product-service/src/main/java/com/kukusha/product_service/controller/ProductsController.java`
- [Product persistence](https://github.com/saksham2283/order-platform/blob/main/product-service/src/main/java/com/kukusha/product_service/database/service/ProductsService.java): `product-service/src/main/java/com/kukusha/product_service/database/service/ProductsService.java`
- [Product records](https://github.com/saksham2283/order-platform/blob/main/product-service/src/main/java/com/kukusha/product_service/database/model/Product.java): `product-service/src/main/java/com/kukusha/product_service/database/model/Product.java`
- [Order API](https://github.com/saksham2283/order-platform/blob/main/orders-service/src/main/java/com/kukusha/orders_service/controller/OrdersController.java): `orders-service/src/main/java/com/kukusha/orders_service/controller/OrdersController.java`
- [Order persistence](https://github.com/saksham2283/order-platform/blob/main/orders-service/src/main/java/com/kukusha/orders_service/database/service/OrdersService.java): `orders-service/src/main/java/com/kukusha/orders_service/database/service/OrdersService.java`
- [Order records](https://github.com/saksham2283/order-platform/blob/main/orders-service/src/main/java/com/kukusha/orders_service/database/model/Order.java): `orders-service/src/main/java/com/kukusha/orders_service/database/model/Order.java`
- [Payment API](https://github.com/saksham2283/order-platform/blob/main/payment-service/src/main/java/com/kukusha/payment_service/controller/PaymentsController.java): `payment-service/src/main/java/com/kukusha/payment_service/controller/PaymentsController.java`
- [Payment processing](https://github.com/saksham2283/order-platform/blob/main/payment-service/src/main/java/com/kukusha/payment_service/service/PaymentService.java): `payment-service/src/main/java/com/kukusha/payment_service/service/PaymentService.java`
- [Payment records](https://github.com/saksham2283/order-platform/blob/main/payment-service/src/main/java/com/kukusha/payment_service/database/model/PaymentInfo.java): `payment-service/src/main/java/com/kukusha/payment_service/database/model/PaymentInfo.java`

### Events and email

- [Email consumer](https://github.com/saksham2283/order-platform/blob/main/email-sender-service/src/main/java/com/kukusha/email_service/kafka/KafkaMailSenderComponent.java): `email-sender-service/src/main/java/com/kukusha/email_service/kafka/KafkaMailSenderComponent.java`
- [Mail delivery](https://github.com/saksham2283/order-platform/blob/main/email-sender-service/src/main/java/com/kukusha/email_service/service/MailService.java): `email-sender-service/src/main/java/com/kukusha/email_service/service/MailService.java`

### Shared foundations

- [Kafka contracts](https://github.com/saksham2283/order-platform/blob/main/kafka-messages-sender-api/src/main/java/com/kukusha/kafka_messages_sender/api/KafkaMessagesSenderAPI.java): `kafka-messages-sender-api/src/main/java/com/kukusha/kafka_messages_sender/api/KafkaMessagesSenderAPI.java`
- [Token processing](https://github.com/saksham2283/order-platform/blob/main/token-service/src/main/java/com/kukusha/token_service/service/TokenProcessorDriver.java): `token-service/src/main/java/com/kukusha/token_service/service/TokenProcessorDriver.java`

### Other components

- **Client**
- **Stripe**
- **Kafka**
- **PostgreSQL**
- **Redis**

## Connections

- 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 (evidence: `auth-service/src/main/java/com/kukusha/auth_service/controller/AuthController.java`)
- Auth service → User persistence: registers users (evidence: `auth-service/src/main/java/com/kukusha/auth_service/service/AuthService.java`)
- Auth service → Token processing: creates tokens (evidence: `auth-service/src/main/java/com/kukusha/auth_service/service/AuthService.java`)
- User API → User persistence: reads and updates (evidence: `users-service/src/main/java/com/kukusha/users_service/controller/UsersController.java`)
- User persistence → User records: reads and saves (evidence: `users-shared-lib/src/main/java/com/kukusha/users_shared_lib/service/UsersService.java`)
- Product API → Product persistence: manages listings (evidence: `product-service/src/main/java/com/kukusha/product_service/controller/ProductsController.java`)
- Product persistence → Product records: persists products (evidence: `product-service/src/main/java/com/kukusha/product_service/database/service/ProductsService.java`)
- Product API → User persistence: looks up buyer (evidence: `product-service/src/main/java/com/kukusha/product_service/controller/ProductsController.java`)
- Product API → Payment API: requests payment (evidence: `product-service/src/main/java/com/kukusha/product_service/controller/ProductsController.java`)
- Product API → Kafka contracts: publishes events (evidence: `product-service/src/main/java/com/kukusha/product_service/controller/ProductsController.java`)
- Order API → Order persistence: handles lifecycle (evidence: `orders-service/src/main/java/com/kukusha/orders_service/controller/OrdersController.java`)
- Order persistence → Order records: reads and saves (evidence: `orders-service/src/main/java/com/kukusha/orders_service/database/service/OrdersService.java`)
- Payment API → Payment processing: delegates to (evidence: `payment-service/src/main/java/com/kukusha/payment_service/controller/PaymentsController.java`)
- Payment processing → Stripe: processes intents (evidence: `payment-service/src/main/java/com/kukusha/payment_service/service/PaymentService.java`)
- Payment processing → Payment records: stores payment info (evidence: `payment-service/src/main/java/com/kukusha/payment_service/service/PaymentService.java`)
- Product API → Kafka: publishes messages
- Authentication → Kafka: publishes registration (evidence: `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
