# irenanguyen23/e-commerce-order-processing-system architecture

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

- Interactive diagram: https://gitdiagram.com/irenanguyen23/e-commerce-order-processing-system
- Repository: https://github.com/irenanguyen23/e-commerce-order-processing-system

## Overview

CommerceFlow is a microservices e-commerce system. Customers browse products, manage a cart, authenticate or start a guest session, and check out; the Order Service coordinates fulfillment through an orchestration saga, with inventory and payment participants replying over Kafka. Customers can then track orders and request returns, while operators manage catalog, stock, orders, and reviews. The graph also shows shared event/outbox infrastructure and the frontend’s API boundary. Saga ownership follows the README; several service implementations and their wiring are not present in the sampled source.

Main entry points: [`gateway/spring-cloud-gateway/src/main/java/com/commerceflow/gateway/ApiGatewayApplication.java`](https://github.com/irenanguyen23/e-commerce-order-processing-system/blob/main/gateway/spring-cloud-gateway/src/main/java/com/commerceflow/gateway/ApiGatewayApplication.java) (API gateway), [`frontend/src/main.tsx`](https://github.com/irenanguyen23/e-commerce-order-processing-system/blob/main/frontend/src/main.tsx) (Web application), [`frontend/src/services/api-client.ts`](https://github.com/irenanguyen23/e-commerce-order-processing-system/blob/main/frontend/src/services/api-client.ts) (API client), [`services/order-service/src/main/java/com/commerceflow/orderservice`](https://github.com/irenanguyen23/e-commerce-order-processing-system/tree/main/services/order-service/src/main/java/com/commerceflow/orderservice) (Order saga)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_storefront["Storefront"]
  node_frontend["Web application<br/>[main.tsx]"]
  node_auth_ui["Account flows<br/>[login-page.tsx]"]
  node_catalog_ui["Catalog browsing"]
  node_cart_ui["Cart and checkout<br/>[checkout-page.tsx]"]
  node_orders_ui["Orders and returns<br/>[my-orders-page.tsx]"]
  node_admin_ui["Admin console<br/>[dashboard-page.tsx]"]
  node_api_client["API client<br/>[api-client.ts]"]
end

subgraph group_commerce["Commerce services"]
  node_gateway["API gateway"]
  node_auth["Authentication<br/>[AuthService.java]"]
  node_catalog["Catalog and stock"]
  node_reviews["Product reviews"]
  node_orders["Order queries"]
  node_saga["Order saga"]
  node_returns["Returns processing<br/>[ReturnService.java]"]
  node_inventory["Inventory reservations"]
  node_payment["Payment processing"]
  node_notification["Notifications"]
end

subgraph group_platform["Shared platform"]
  node_kafka["Kafka"]
  node_events["Event contracts<br/>[DomainEvent.java]"]
  node_outbox["Outbox relay<br/>[OutboxService.java]"]
  node_postgres[("Service databases")]
end

node_customer(("Customer"))
node_operator(("Operator"))

node_customer -->|"uses"| node_frontend
node_operator -->|"uses"| node_frontend
node_frontend -->|"renders"| node_auth_ui
node_frontend -->|"renders"| node_catalog_ui
node_frontend -->|"renders"| node_cart_ui
node_frontend -->|"renders"| node_orders_ui
node_frontend -->|"renders"| node_admin_ui
node_auth_ui -->|"requests"| node_api_client
node_catalog_ui -->|"requests"| node_api_client
node_cart_ui -->|"requests"| node_api_client
node_orders_ui -->|"requests"| node_api_client
node_admin_ui -->|"requests"| node_api_client
node_api_client -->|"sends API calls"| node_gateway
node_gateway -->|"routes requests"| node_auth
node_gateway -->|"routes requests"| node_catalog
node_gateway -->|"routes requests"| node_reviews
node_gateway -->|"routes requests"| node_orders
node_gateway -->|"routes requests"| node_returns
node_gateway -->|"routes requests"| node_payment
node_auth -->|"persists accounts"| node_postgres
node_catalog -->|"persists catalog and stock"| node_postgres
node_reviews -->|"stores reviews"| node_postgres
node_orders -->|"reads order projection"| node_postgres
node_saga -->|"sends commands"| node_kafka
node_kafka -->|"delivers commands"| node_inventory
node_inventory -->|"publishes replies"| node_kafka
node_kafka -->|"delivers replies"| node_saga
node_kafka -->|"delivers commands"| node_payment
node_payment -->|"publishes replies"| node_kafka
node_saga -->|"updates order state"| node_orders
node_returns -->|"appends notice"| node_outbox
node_outbox -->|"relays events"| node_kafka
node_kafka -.->|"delivers notices"| node_notification
node_saga -->|"uses contracts"| node_events
node_inventory -->|"uses contracts"| node_events
node_payment -->|"uses contracts"| node_events

click node_frontend "https://github.com/irenanguyen23/e-commerce-order-processing-system/blob/main/frontend/src/main.tsx"
click node_auth_ui "https://github.com/irenanguyen23/e-commerce-order-processing-system/blob/main/frontend/src/features/auth/pages/login-page.tsx"
click node_catalog_ui "https://github.com/irenanguyen23/e-commerce-order-processing-system/blob/main/frontend/src/features/product/pages/product-list-page.tsx"
click node_cart_ui "https://github.com/irenanguyen23/e-commerce-order-processing-system/blob/main/frontend/src/features/order/pages/checkout-page.tsx"
click node_orders_ui "https://github.com/irenanguyen23/e-commerce-order-processing-system/blob/main/frontend/src/features/order/pages/my-orders-page.tsx"
click node_admin_ui "https://github.com/irenanguyen23/e-commerce-order-processing-system/blob/main/frontend/src/features/admin/pages/dashboard-page.tsx"
click node_api_client "https://github.com/irenanguyen23/e-commerce-order-processing-system/blob/main/frontend/src/services/api-client.ts"
click node_gateway "https://github.com/irenanguyen23/e-commerce-order-processing-system/blob/main/gateway/spring-cloud-gateway/src/main/java/com/commerceflow/gateway/ApiGatewayApplication.java"
click node_auth "https://github.com/irenanguyen23/e-commerce-order-processing-system/blob/main/services/auth-service/src/main/java/com/commerceflow/authservice/service/AuthService.java"
click node_catalog "https://github.com/irenanguyen23/e-commerce-order-processing-system/blob/main/services/inventory-service/src/main/java/com/commerceflow/inventoryservice/controller/ProductController.java"
click node_reviews "https://github.com/irenanguyen23/e-commerce-order-processing-system/blob/main/services/inventory-service/src/main/java/com/commerceflow/inventoryservice/review/ReviewController.java"
click node_orders "https://github.com/irenanguyen23/e-commerce-order-processing-system/blob/main/services/order-service/src/main/java/com/commerceflow/orderservice/service/OrderQueryService.java"
click node_saga "https://github.com/irenanguyen23/e-commerce-order-processing-system/tree/main/services/order-service/src/main/java/com/commerceflow/orderservice"
click node_returns "https://github.com/irenanguyen23/e-commerce-order-processing-system/blob/main/services/order-service/src/main/java/com/commerceflow/orderservice/returns/ReturnService.java"
click node_inventory "https://github.com/irenanguyen23/e-commerce-order-processing-system/blob/main/services/inventory-service/src/main/java/com/commerceflow/inventoryservice/service/InventoryReservationService.java"
click node_payment "https://github.com/irenanguyen23/e-commerce-order-processing-system/blob/main/services/payment-service/src/main/java/com/commerceflow/paymentservice/service/PaymentService.java"
click node_events "https://github.com/irenanguyen23/e-commerce-order-processing-system/blob/main/common/commerceflow-common/src/main/java/com/commerceflow/common/event/DomainEvent.java"
click node_outbox "https://github.com/irenanguyen23/e-commerce-order-processing-system/blob/main/common/commerceflow-common/src/main/java/com/commerceflow/common/outbox/OutboxService.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_frontend,node_auth_ui,node_catalog_ui,node_cart_ui,node_orders_ui,node_admin_ui,node_api_client toneBlue
class node_gateway,node_auth,node_catalog,node_reviews,node_orders,node_saga,node_returns,node_inventory,node_payment,node_notification toneAmber
class node_kafka,node_events,node_outbox,node_postgres toneMint
class node_customer,node_operator toneIndigo
```

## Components

### Storefront

- [Web application](https://github.com/irenanguyen23/e-commerce-order-processing-system/blob/main/frontend/src/main.tsx): `frontend/src/main.tsx`
- [Account flows](https://github.com/irenanguyen23/e-commerce-order-processing-system/blob/main/frontend/src/features/auth/pages/login-page.tsx): `frontend/src/features/auth/pages/login-page.tsx`
- [Catalog browsing](https://github.com/irenanguyen23/e-commerce-order-processing-system/blob/main/frontend/src/features/product/pages/product-list-page.tsx): `frontend/src/features/product/pages/product-list-page.tsx`
- [Cart and checkout](https://github.com/irenanguyen23/e-commerce-order-processing-system/blob/main/frontend/src/features/order/pages/checkout-page.tsx): `frontend/src/features/order/pages/checkout-page.tsx`
- [Orders and returns](https://github.com/irenanguyen23/e-commerce-order-processing-system/blob/main/frontend/src/features/order/pages/my-orders-page.tsx): `frontend/src/features/order/pages/my-orders-page.tsx`
- [Admin console](https://github.com/irenanguyen23/e-commerce-order-processing-system/blob/main/frontend/src/features/admin/pages/dashboard-page.tsx): `frontend/src/features/admin/pages/dashboard-page.tsx`
- [API client](https://github.com/irenanguyen23/e-commerce-order-processing-system/blob/main/frontend/src/services/api-client.ts): `frontend/src/services/api-client.ts`

### Commerce services

- [API gateway](https://github.com/irenanguyen23/e-commerce-order-processing-system/blob/main/gateway/spring-cloud-gateway/src/main/java/com/commerceflow/gateway/ApiGatewayApplication.java): `gateway/spring-cloud-gateway/src/main/java/com/commerceflow/gateway/ApiGatewayApplication.java`
- [Authentication](https://github.com/irenanguyen23/e-commerce-order-processing-system/blob/main/services/auth-service/src/main/java/com/commerceflow/authservice/service/AuthService.java): `services/auth-service/src/main/java/com/commerceflow/authservice/service/AuthService.java`
- [Catalog and stock](https://github.com/irenanguyen23/e-commerce-order-processing-system/blob/main/services/inventory-service/src/main/java/com/commerceflow/inventoryservice/controller/ProductController.java): `services/inventory-service/src/main/java/com/commerceflow/inventoryservice/controller/ProductController.java`
- [Product reviews](https://github.com/irenanguyen23/e-commerce-order-processing-system/blob/main/services/inventory-service/src/main/java/com/commerceflow/inventoryservice/review/ReviewController.java): `services/inventory-service/src/main/java/com/commerceflow/inventoryservice/review/ReviewController.java`
- [Order queries](https://github.com/irenanguyen23/e-commerce-order-processing-system/blob/main/services/order-service/src/main/java/com/commerceflow/orderservice/service/OrderQueryService.java): `services/order-service/src/main/java/com/commerceflow/orderservice/service/OrderQueryService.java`
- [Order saga](https://github.com/irenanguyen23/e-commerce-order-processing-system/tree/main/services/order-service/src/main/java/com/commerceflow/orderservice): `services/order-service/src/main/java/com/commerceflow/orderservice`
- [Returns processing](https://github.com/irenanguyen23/e-commerce-order-processing-system/blob/main/services/order-service/src/main/java/com/commerceflow/orderservice/returns/ReturnService.java): `services/order-service/src/main/java/com/commerceflow/orderservice/returns/ReturnService.java`
- [Inventory reservations](https://github.com/irenanguyen23/e-commerce-order-processing-system/blob/main/services/inventory-service/src/main/java/com/commerceflow/inventoryservice/service/InventoryReservationService.java): `services/inventory-service/src/main/java/com/commerceflow/inventoryservice/service/InventoryReservationService.java`
- [Payment processing](https://github.com/irenanguyen23/e-commerce-order-processing-system/blob/main/services/payment-service/src/main/java/com/commerceflow/paymentservice/service/PaymentService.java): `services/payment-service/src/main/java/com/commerceflow/paymentservice/service/PaymentService.java`
- **Notifications**

### Shared platform

- **Kafka**
- [Event contracts](https://github.com/irenanguyen23/e-commerce-order-processing-system/blob/main/common/commerceflow-common/src/main/java/com/commerceflow/common/event/DomainEvent.java): `common/commerceflow-common/src/main/java/com/commerceflow/common/event/DomainEvent.java`
- [Outbox relay](https://github.com/irenanguyen23/e-commerce-order-processing-system/blob/main/common/commerceflow-common/src/main/java/com/commerceflow/common/outbox/OutboxService.java): `common/commerceflow-common/src/main/java/com/commerceflow/common/outbox/OutboxService.java`
- **Service databases**

### Other components

- **Customer**
- **Operator**

## Connections

- Customer → Web application: uses
- Operator → Web application: uses
- Web application → Account flows: renders
- Web application → Catalog browsing: renders
- Web application → Cart and checkout: renders
- Web application → Orders and returns: renders
- Web application → Admin console: renders
- Account flows → API client: requests
- Catalog browsing → API client: requests
- Cart and checkout → API client: requests
- Orders and returns → API client: requests
- Admin console → API client: requests
- API client → API gateway: sends API calls
- API gateway → Authentication: routes requests
- API gateway → Catalog and stock: routes requests
- API gateway → Product reviews: routes requests
- API gateway → Order queries: routes requests
- API gateway → Returns processing: routes requests
- API gateway → Payment processing: routes requests
- Authentication → Service databases: persists accounts
- Catalog and stock → Service databases: persists catalog and stock
- Product reviews → Service databases: stores reviews
- Order queries → Service databases: reads order projection
- Order saga → Kafka: sends commands
- Kafka → Inventory reservations: delivers commands
- Inventory reservations → Kafka: publishes replies
- Kafka → Order saga: delivers replies
- Kafka → Payment processing: delivers commands
- Payment processing → Kafka: publishes replies
- Order saga → Order queries: updates order state
- Returns processing → Outbox relay: appends notice
- Outbox relay → Kafka: relays events
- Kafka → Notifications: delivers notices
- Order saga → Event contracts: uses contracts
- Inventory reservations → Event contracts: uses contracts
- Payment processing → Event contracts: uses contracts
