# duy18nd/-e-commerce-platform architecture

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

- Interactive diagram: https://gitdiagram.com/duy18nd/-e-commerce-platform
- Repository: https://github.com/duy18nd/-e-commerce-platform

## Overview

ShopMart is a microservices e-commerce platform. A customer browses products, manages a cart, checks out, pays, and tracks the resulting order; administrators manage catalog, inventory, promotions, orders, customers, and reviews. The React SPA calls the backend through the API Gateway, while order/payment coordination uses Kafka and stock operations use synchronous service calls. The README documents the system topology; sampled excerpts confirm checkout responsibilities and review-to-order validation, but most service internals were not sampled.

Main entry points: [`backend/order-service/src/main/java/com/ecommerce/order/service/OrderService.java`](https://github.com/duy18nd/-e-commerce-platform/blob/master/backend/order-service/src/main/java/com/ecommerce/order/service/OrderService.java) (Checkout & Orders), [`backend/api-gateway/src/main/java/com/ecommerce/gateway`](https://github.com/duy18nd/-e-commerce-platform/tree/master/backend/api-gateway/src/main/java/com/ecommerce/gateway) (API Gateway), [`backend/product-service/src/main/java/com/ecommerce/product`](https://github.com/duy18nd/-e-commerce-platform/tree/master/backend/product-service/src/main/java/com/ecommerce/product) (Catalog & Search), [`backend/auth-service/src/main/java/com/ecommerce/auth`](https://github.com/duy18nd/-e-commerce-platform/tree/master/backend/auth-service/src/main/java/com/ecommerce/auth) (Authentication)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Storefront"]
  node_routes["SPA Routes<br/>[AppRoutes.jsx]"]
  node_storefront["Storefront Pages"]
  node_api["API Services"]
end

subgraph group_edge["Request Routing"]
  node_gateway["API Gateway"]
end

subgraph group_identity["Identity"]
  node_auth["Authentication"]
  node_users["Profiles &amp; Addresses<br/>[UserService.java]"]
end

subgraph group_commerce["Commerce Services"]
  node_catalog["Catalog &amp; Search"]
  node_inventory["Stock Management"]
  node_flash["Flash Sales"]
  node_reviews["Product Reviews"]
  node_cart["Shopping Cart"]
  node_vouchers["Vouchers"]
  node_orders["Checkout &amp; Orders<br/>[OrderService.java]"]
  node_payments["Mock Payments"]
end

subgraph group_platform["Shared Infrastructure"]
  node_discovery["Service Registry"]
  node_kafka["Event Broker"]
  node_authdb[("Auth Database")]
  node_productdb[("Product Database")]
  node_orderdb[("Order Database")]
  node_paymentdb[("Payment Database")]
  node_redis[("Redis")]
end

node_shopper(("Shopper / Admin"))

node_shopper -->|"uses"| node_routes
node_routes -->|"routes to"| node_storefront
node_storefront -.->|"requests data"| node_api
node_api -->|"calls"| node_gateway
node_gateway -->|"discovers services"| node_discovery
node_gateway -->|"routes requests"| node_auth
node_gateway -->|"routes requests"| node_catalog
node_gateway -->|"routes requests"| node_orders
node_gateway -->|"routes requests"| node_payments
node_auth -.->|"manages accounts"| node_users
node_auth -->|"persists identity"| node_authdb
node_auth -->|"blacklists tokens"| node_redis
node_catalog -->|"persists catalog"| node_productdb
node_catalog -.->|"manages stock"| node_inventory
node_catalog -.->|"offers campaigns"| node_flash
node_catalog -->|"supports reviews"| node_reviews
node_reviews -->|"validates purchase"| node_orders
node_orders -.->|"reserves stock"| node_productdb
node_orders -->|"reserves stock"| node_inventory
node_cart -.->|"checks out"| node_orders
node_vouchers -.->|"discounts checkout"| node_orders
node_orders -->|"persists orders"| node_orderdb
node_orders -->|"publishes order-created"| node_kafka
node_kafka -->|"delivers events"| node_payments
node_payments -->|"persists payments"| node_paymentdb
node_payments -->|"publishes payment result"| node_kafka
node_kafka -->|"delivers payment result"| node_orders
node_catalog -->|"caches products"| node_redis

click node_routes "https://github.com/duy18nd/-e-commerce-platform/blob/master/frontend/src/routes/AppRoutes.jsx"
click node_storefront "https://github.com/duy18nd/-e-commerce-platform/tree/master/frontend/src/pages"
click node_api "https://github.com/duy18nd/-e-commerce-platform/tree/master/frontend/src/services"
click node_gateway "https://github.com/duy18nd/-e-commerce-platform/tree/master/backend/api-gateway/src/main/java/com/ecommerce/gateway"
click node_discovery "https://github.com/duy18nd/-e-commerce-platform/tree/master/backend/discovery-server/src/main/java/com/ecommerce/discovery"
click node_auth "https://github.com/duy18nd/-e-commerce-platform/tree/master/backend/auth-service/src/main/java/com/ecommerce/auth"
click node_users "https://github.com/duy18nd/-e-commerce-platform/blob/master/backend/auth-service/src/main/java/com/ecommerce/auth/service/UserService.java"
click node_catalog "https://github.com/duy18nd/-e-commerce-platform/tree/master/backend/product-service/src/main/java/com/ecommerce/product"
click node_inventory "https://github.com/duy18nd/-e-commerce-platform/tree/master/backend/product-service/src/main/java/com/ecommerce/product/service"
click node_flash "https://github.com/duy18nd/-e-commerce-platform/tree/master/backend/product-service/src/main/java/com/ecommerce/product/service"
click node_reviews "https://github.com/duy18nd/-e-commerce-platform/blob/master/backend/product-service/src/main/java/com/ecommerce/product/service/impl/ReviewServiceImpl.java"
click node_cart "https://github.com/duy18nd/-e-commerce-platform/blob/master/backend/order-service/src/main/java/com/ecommerce/order/service/impl/CartServiceImpl.java"
click node_vouchers "https://github.com/duy18nd/-e-commerce-platform/blob/master/backend/order-service/src/main/java/com/ecommerce/order/service/impl/VoucherServiceImpl.java"
click node_orders "https://github.com/duy18nd/-e-commerce-platform/blob/master/backend/order-service/src/main/java/com/ecommerce/order/service/OrderService.java"
click node_payments "https://github.com/duy18nd/-e-commerce-platform/tree/master/backend/payment-service/src/main/java/com/ecommerce/payment"

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_routes,node_storefront,node_api toneBlue
class node_gateway toneAmber
class node_auth,node_users toneMint
class node_catalog,node_inventory,node_flash,node_reviews,node_cart,node_vouchers,node_orders,node_payments toneRose
class node_discovery,node_kafka,node_authdb,node_productdb,node_orderdb,node_paymentdb,node_redis,node_shopper toneIndigo
```

## Components

### Storefront

- [SPA Routes](https://github.com/duy18nd/-e-commerce-platform/blob/master/frontend/src/routes/AppRoutes.jsx): `frontend/src/routes/AppRoutes.jsx`
- [Storefront Pages](https://github.com/duy18nd/-e-commerce-platform/tree/master/frontend/src/pages): `frontend/src/pages`
- [API Services](https://github.com/duy18nd/-e-commerce-platform/tree/master/frontend/src/services): `frontend/src/services`

### Request Routing

- [API Gateway](https://github.com/duy18nd/-e-commerce-platform/tree/master/backend/api-gateway/src/main/java/com/ecommerce/gateway): `backend/api-gateway/src/main/java/com/ecommerce/gateway`

### Identity

- [Authentication](https://github.com/duy18nd/-e-commerce-platform/tree/master/backend/auth-service/src/main/java/com/ecommerce/auth): `backend/auth-service/src/main/java/com/ecommerce/auth`
- [Profiles & Addresses](https://github.com/duy18nd/-e-commerce-platform/blob/master/backend/auth-service/src/main/java/com/ecommerce/auth/service/UserService.java): `backend/auth-service/src/main/java/com/ecommerce/auth/service/UserService.java`

### Commerce Services

- [Catalog & Search](https://github.com/duy18nd/-e-commerce-platform/tree/master/backend/product-service/src/main/java/com/ecommerce/product): `backend/product-service/src/main/java/com/ecommerce/product`
- [Stock Management](https://github.com/duy18nd/-e-commerce-platform/tree/master/backend/product-service/src/main/java/com/ecommerce/product/service): `backend/product-service/src/main/java/com/ecommerce/product/service`
- [Flash Sales](https://github.com/duy18nd/-e-commerce-platform/tree/master/backend/product-service/src/main/java/com/ecommerce/product/service): `backend/product-service/src/main/java/com/ecommerce/product/service`
- [Product Reviews](https://github.com/duy18nd/-e-commerce-platform/blob/master/backend/product-service/src/main/java/com/ecommerce/product/service/impl/ReviewServiceImpl.java): `backend/product-service/src/main/java/com/ecommerce/product/service/impl/ReviewServiceImpl.java`
- [Shopping Cart](https://github.com/duy18nd/-e-commerce-platform/blob/master/backend/order-service/src/main/java/com/ecommerce/order/service/impl/CartServiceImpl.java): `backend/order-service/src/main/java/com/ecommerce/order/service/impl/CartServiceImpl.java`
- [Vouchers](https://github.com/duy18nd/-e-commerce-platform/blob/master/backend/order-service/src/main/java/com/ecommerce/order/service/impl/VoucherServiceImpl.java): `backend/order-service/src/main/java/com/ecommerce/order/service/impl/VoucherServiceImpl.java`
- [Checkout & Orders](https://github.com/duy18nd/-e-commerce-platform/blob/master/backend/order-service/src/main/java/com/ecommerce/order/service/OrderService.java): `backend/order-service/src/main/java/com/ecommerce/order/service/OrderService.java`
- [Mock Payments](https://github.com/duy18nd/-e-commerce-platform/tree/master/backend/payment-service/src/main/java/com/ecommerce/payment): `backend/payment-service/src/main/java/com/ecommerce/payment`

### Shared Infrastructure

- [Service Registry](https://github.com/duy18nd/-e-commerce-platform/tree/master/backend/discovery-server/src/main/java/com/ecommerce/discovery): `backend/discovery-server/src/main/java/com/ecommerce/discovery`
- **Event Broker**
- **Auth Database**
- **Product Database**
- **Order Database**
- **Payment Database**
- **Redis**

### Other components

- **Shopper / Admin**

## Connections

- Shopper / Admin → SPA Routes: uses
- SPA Routes → Storefront Pages: routes to (evidence: `frontend/src/routes/AppRoutes.jsx`)
- Storefront Pages → API Services: requests data
- API Services → API Gateway: calls
- API Gateway → Service Registry: discovers services
- API Gateway → Authentication: routes requests
- API Gateway → Catalog & Search: routes requests (evidence: `backend/api-gateway/src/main/java/com/ecommerce/gateway/controller/FallbackController.java`)
- API Gateway → Checkout & Orders: routes requests
- API Gateway → Mock Payments: routes requests (evidence: `backend/api-gateway/src/main/java/com/ecommerce/gateway/controller/FallbackController.java`)
- Authentication → Profiles & Addresses: manages accounts (evidence: `backend/auth-service/src/main/java/com/ecommerce/auth/controller/AdminCustomerController.java`)
- Authentication → Auth Database: persists identity
- Authentication → Redis: blacklists tokens
- Catalog & Search → Product Database: persists catalog
- Catalog & Search → Stock Management: manages stock (evidence: `backend/product-service/src/main/java/com/ecommerce/product/controller/ReviewController.java`)
- Catalog & Search → Flash Sales: offers campaigns (evidence: `backend/product-service/src/main/java/com/ecommerce/product/controller/ReviewController.java`)
- Catalog & Search → Product Reviews: supports reviews (evidence: `backend/product-service/src/main/java/com/ecommerce/product/controller/ReviewController.java`)
- Product Reviews → Checkout & Orders: validates purchase (evidence: `backend/product-service/src/main/java/com/ecommerce/product/service/impl/ReviewServiceImpl.java`)
- Checkout & Orders → Product Database: reserves stock (evidence: `backend/order-service/src/main/java/com/ecommerce/order/service/OrderService.java`)
- Checkout & Orders → Stock Management: reserves stock (evidence: `backend/order-service/src/main/java/com/ecommerce/order/service/OrderService.java`)
- Shopping Cart → Checkout & Orders: checks out
- Vouchers → Checkout & Orders: discounts checkout
- Checkout & Orders → Order Database: persists orders
- Checkout & Orders → Event Broker: publishes order-created
- Event Broker → Mock Payments: delivers events
- Mock Payments → Payment Database: persists payments
- Mock Payments → Event Broker: publishes payment result
- Event Broker → Checkout & Orders: delivers payment result
- Catalog & Search → Redis: caches products
