# tushar-96/order-processing-system architecture

> Architecture diagram of the GitHub repository tushar-96/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/tushar-96/order-processing-system
- Repository: https://github.com/tushar-96/order-processing-system

## Overview

This is a full-stack e-commerce application: customers register, browse products, manage carts, place orders, and track or cancel them. The React app sends API requests through the gateway to authentication, order, and inventory services. Order creation and cancellation trigger asynchronous Kafka events; inventory reserves or releases stock and returns results that update order status. The README documents the services, databases, topics, and major capabilities; some frontend and gateway internals were not sampled, so their wiring is shown only where documented or evident from the tree.

Main entry points: [`frontend/src/routes/AppRoutes.jsx`](https://github.com/tushar-96/order-processing-system/blob/main/frontend/src/routes/AppRoutes.jsx) (App routes), [`backend/api-gateway/src/main/java/com/ecommerce/gateway/ApiGatewayApplication.java`](https://github.com/tushar-96/order-processing-system/blob/main/backend/api-gateway/src/main/java/com/ecommerce/gateway/ApiGatewayApplication.java) (API gateway), [`backend/auth-service/src/main/java/com/ecommerce/auth/service/AuthService.java`](https://github.com/tushar-96/order-processing-system/blob/main/backend/auth-service/src/main/java/com/ecommerce/auth/service/AuthService.java) (Auth service), [`backend/order-service/src/main/java/com/orderservice/service/impl/OrderServiceImpl.java`](https://github.com/tushar-96/order-processing-system/blob/main/backend/order-service/src/main/java/com/orderservice/service/impl/OrderServiceImpl.java) (Order service)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Customer app"]
  node_react_app["React app<br/>[App.jsx]"]
  node_routes["App routes<br/>[AppRoutes.jsx]"]
  node_auth_ui["Auth pages<br/>[LoginPage.jsx]"]
  node_cart_ui["Cart<br/>[CartContext.jsx]"]
  node_products_ui["Product catalog"]
  node_orders_ui["Order history"]
  node_http_client["HTTP client<br/>[axiosInstance.js]"]
end

subgraph group_gateway["API gateway"]
  node_api_gateway["API gateway"]
  node_fallback["Service fallbacks"]
end

subgraph group_auth["Identity"]
  node_auth_controller["Auth API"]
  node_auth_service["Auth service<br/>[AuthService.java]"]
  node_users_db[("Auth PostgreSQL")]
  node_auth_jwt["JWT security<br/>[JwtService.java]"]
end

subgraph group_orders["Orders"]
  node_order_controller["Order API"]
  node_order_service["Order service"]
  node_orders_db[("Order PostgreSQL")]
  node_order_producers["Order event producers"]
  node_inventory_result["Inventory result handler"]
end

subgraph group_inventory["Catalog and stock"]
  node_inventory_consumers["Order event consumers"]
  node_reservation["Reservation service"]
  node_inventory_db[("Inventory PostgreSQL")]
  node_result_producer["Inventory result producer"]
  node_product_api["Product API"]
  node_product_service["Product service"]
end

node_customer(("Customer"))
node_kafka["Apache Kafka"]

node_customer -->|"uses"| node_react_app
node_react_app -->|"renders"| node_routes
node_routes -->|"routes to"| node_auth_ui
node_routes -->|"routes to"| node_cart_ui
node_routes -->|"routes to"| node_products_ui
node_routes -->|"routes to"| node_orders_ui
node_http_client -->|"sends requests"| node_api_gateway
node_api_gateway -->|"routes requests"| node_auth_controller
node_api_gateway -->|"routes requests"| node_order_controller
node_api_gateway -->|"routes requests"| node_product_api
node_auth_controller -->|"invokes"| node_auth_service
node_auth_service -->|"reads and writes"| node_users_db
node_auth_service -->|"creates tokens"| node_auth_jwt
node_order_controller -->|"invokes"| node_order_service
node_order_service -->|"reads and writes"| node_orders_db
node_order_service -->|"publishes events"| node_order_producers
node_order_producers -->|"publishes"| node_kafka
node_kafka -->|"dispatches events"| node_inventory_consumers
node_inventory_consumers -->|"processes events"| node_reservation
node_reservation -->|"reads and writes"| node_inventory_db
node_reservation -->|"creates result"| node_result_producer
node_result_producer -->|"publishes result"| node_kafka
node_kafka -->|"dispatches result"| node_inventory_result
node_inventory_result -->|"updates order"| node_orders_db
node_product_api -->|"invokes"| node_product_service
node_product_service -->|"reads and writes"| node_inventory_db
node_api_gateway -.->|"uses fallback"| node_fallback

click node_react_app "https://github.com/tushar-96/order-processing-system/blob/main/frontend/src/App.jsx"
click node_routes "https://github.com/tushar-96/order-processing-system/blob/main/frontend/src/routes/AppRoutes.jsx"
click node_auth_ui "https://github.com/tushar-96/order-processing-system/blob/main/frontend/src/features/auth/LoginPage.jsx"
click node_cart_ui "https://github.com/tushar-96/order-processing-system/blob/main/frontend/src/features/cart/CartContext.jsx"
click node_products_ui "https://github.com/tushar-96/order-processing-system/blob/main/frontend/src/features/products/ProductCatalogPage.jsx"
click node_orders_ui "https://github.com/tushar-96/order-processing-system/blob/main/frontend/src/features/orders/OrderHistoryPage.jsx"
click node_http_client "https://github.com/tushar-96/order-processing-system/blob/main/frontend/src/api/axiosInstance.js"
click node_api_gateway "https://github.com/tushar-96/order-processing-system/blob/main/backend/api-gateway/src/main/java/com/ecommerce/gateway/ApiGatewayApplication.java"
click node_fallback "https://github.com/tushar-96/order-processing-system/blob/main/backend/api-gateway/src/main/java/com/ecommerce/gateway/controller/ServiceFallbackController.java"
click node_auth_controller "https://github.com/tushar-96/order-processing-system/blob/main/backend/auth-service/src/main/java/com/ecommerce/auth/controller/AuthController.java"
click node_auth_service "https://github.com/tushar-96/order-processing-system/blob/main/backend/auth-service/src/main/java/com/ecommerce/auth/service/AuthService.java"
click node_auth_jwt "https://github.com/tushar-96/order-processing-system/blob/main/backend/auth-service/src/main/java/com/ecommerce/auth/security/JwtService.java"
click node_order_controller "https://github.com/tushar-96/order-processing-system/blob/main/backend/order-service/src/main/java/com/orderservice/controller/OrderController.java"
click node_order_service "https://github.com/tushar-96/order-processing-system/blob/main/backend/order-service/src/main/java/com/orderservice/service/impl/OrderServiceImpl.java"
click node_order_producers "https://github.com/tushar-96/order-processing-system/blob/main/backend/order-service/src/main/java/com/orderservice/kafka/OrderCreatedEventProducer.java"
click node_inventory_result "https://github.com/tushar-96/order-processing-system/blob/main/backend/order-service/src/main/java/com/orderservice/service/InventoryResultService.java"
click node_inventory_consumers "https://github.com/tushar-96/order-processing-system/blob/main/backend/inventory-service/src/main/java/com/ecommerce/inventory/kafka/OrderCreatedEventConsumer.java"
click node_reservation "https://github.com/tushar-96/order-processing-system/blob/main/backend/inventory-service/src/main/java/com/ecommerce/inventory/service/InventoryReservationService.java"
click node_result_producer "https://github.com/tushar-96/order-processing-system/blob/main/backend/inventory-service/src/main/java/com/ecommerce/inventory/kafka/InventoryResultProducer.java"
click node_product_api "https://github.com/tushar-96/order-processing-system/blob/main/backend/inventory-service/src/main/java/com/ecommerce/inventory/controller/ProductController.java"
click node_product_service "https://github.com/tushar-96/order-processing-system/blob/main/backend/inventory-service/src/main/java/com/ecommerce/inventory/service/ProductService.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_react_app,node_routes,node_auth_ui,node_cart_ui,node_products_ui,node_orders_ui,node_http_client toneBlue
class node_api_gateway,node_fallback toneAmber
class node_auth_controller,node_auth_service,node_users_db,node_auth_jwt toneMint
class node_order_controller,node_order_service,node_orders_db,node_order_producers,node_inventory_result toneRose
class node_inventory_consumers,node_reservation,node_inventory_db,node_result_producer,node_product_api,node_product_service,node_customer,node_kafka toneIndigo
```

## Components

### Customer app

- [React app](https://github.com/tushar-96/order-processing-system/blob/main/frontend/src/App.jsx): `frontend/src/App.jsx`
- [App routes](https://github.com/tushar-96/order-processing-system/blob/main/frontend/src/routes/AppRoutes.jsx): `frontend/src/routes/AppRoutes.jsx`
- [Auth pages](https://github.com/tushar-96/order-processing-system/blob/main/frontend/src/features/auth/LoginPage.jsx): `frontend/src/features/auth/LoginPage.jsx`
- [Cart](https://github.com/tushar-96/order-processing-system/blob/main/frontend/src/features/cart/CartContext.jsx): `frontend/src/features/cart/CartContext.jsx`
- [Product catalog](https://github.com/tushar-96/order-processing-system/blob/main/frontend/src/features/products/ProductCatalogPage.jsx): `frontend/src/features/products/ProductCatalogPage.jsx`
- [Order history](https://github.com/tushar-96/order-processing-system/blob/main/frontend/src/features/orders/OrderHistoryPage.jsx): `frontend/src/features/orders/OrderHistoryPage.jsx`
- [HTTP client](https://github.com/tushar-96/order-processing-system/blob/main/frontend/src/api/axiosInstance.js): `frontend/src/api/axiosInstance.js`

### API gateway

- [API gateway](https://github.com/tushar-96/order-processing-system/blob/main/backend/api-gateway/src/main/java/com/ecommerce/gateway/ApiGatewayApplication.java): `backend/api-gateway/src/main/java/com/ecommerce/gateway/ApiGatewayApplication.java`
- [Service fallbacks](https://github.com/tushar-96/order-processing-system/blob/main/backend/api-gateway/src/main/java/com/ecommerce/gateway/controller/ServiceFallbackController.java): `backend/api-gateway/src/main/java/com/ecommerce/gateway/controller/ServiceFallbackController.java`

### Identity

- [Auth API](https://github.com/tushar-96/order-processing-system/blob/main/backend/auth-service/src/main/java/com/ecommerce/auth/controller/AuthController.java): `backend/auth-service/src/main/java/com/ecommerce/auth/controller/AuthController.java`
- [Auth service](https://github.com/tushar-96/order-processing-system/blob/main/backend/auth-service/src/main/java/com/ecommerce/auth/service/AuthService.java): `backend/auth-service/src/main/java/com/ecommerce/auth/service/AuthService.java`
- **Auth PostgreSQL**
- [JWT security](https://github.com/tushar-96/order-processing-system/blob/main/backend/auth-service/src/main/java/com/ecommerce/auth/security/JwtService.java): `backend/auth-service/src/main/java/com/ecommerce/auth/security/JwtService.java`

### Orders

- [Order API](https://github.com/tushar-96/order-processing-system/blob/main/backend/order-service/src/main/java/com/orderservice/controller/OrderController.java): `backend/order-service/src/main/java/com/orderservice/controller/OrderController.java`
- [Order service](https://github.com/tushar-96/order-processing-system/blob/main/backend/order-service/src/main/java/com/orderservice/service/impl/OrderServiceImpl.java): `backend/order-service/src/main/java/com/orderservice/service/impl/OrderServiceImpl.java`
- **Order PostgreSQL**
- [Order event producers](https://github.com/tushar-96/order-processing-system/blob/main/backend/order-service/src/main/java/com/orderservice/kafka/OrderCreatedEventProducer.java): `backend/order-service/src/main/java/com/orderservice/kafka/OrderCreatedEventProducer.java`
- [Inventory result handler](https://github.com/tushar-96/order-processing-system/blob/main/backend/order-service/src/main/java/com/orderservice/service/InventoryResultService.java): `backend/order-service/src/main/java/com/orderservice/service/InventoryResultService.java`

### Catalog and stock

- [Order event consumers](https://github.com/tushar-96/order-processing-system/blob/main/backend/inventory-service/src/main/java/com/ecommerce/inventory/kafka/OrderCreatedEventConsumer.java): `backend/inventory-service/src/main/java/com/ecommerce/inventory/kafka/OrderCreatedEventConsumer.java`
- [Reservation service](https://github.com/tushar-96/order-processing-system/blob/main/backend/inventory-service/src/main/java/com/ecommerce/inventory/service/InventoryReservationService.java): `backend/inventory-service/src/main/java/com/ecommerce/inventory/service/InventoryReservationService.java`
- **Inventory PostgreSQL**
- [Inventory result producer](https://github.com/tushar-96/order-processing-system/blob/main/backend/inventory-service/src/main/java/com/ecommerce/inventory/kafka/InventoryResultProducer.java): `backend/inventory-service/src/main/java/com/ecommerce/inventory/kafka/InventoryResultProducer.java`
- [Product API](https://github.com/tushar-96/order-processing-system/blob/main/backend/inventory-service/src/main/java/com/ecommerce/inventory/controller/ProductController.java): `backend/inventory-service/src/main/java/com/ecommerce/inventory/controller/ProductController.java`
- [Product service](https://github.com/tushar-96/order-processing-system/blob/main/backend/inventory-service/src/main/java/com/ecommerce/inventory/service/ProductService.java): `backend/inventory-service/src/main/java/com/ecommerce/inventory/service/ProductService.java`

### Other components

- **Customer**
- **Apache Kafka**

## Connections

- Customer → React app: uses
- React app → App routes: renders
- App routes → Auth pages: routes to
- App routes → Cart: routes to
- App routes → Product catalog: routes to
- App routes → Order history: routes to
- HTTP client → API gateway: sends requests
- API gateway → Auth API: routes requests
- API gateway → Order API: routes requests
- API gateway → Product API: routes requests
- Auth API → Auth service: invokes
- Auth service → Auth PostgreSQL: reads and writes
- Auth service → JWT security: creates tokens
- Order API → Order service: invokes
- Order service → Order PostgreSQL: reads and writes
- Order service → Order event producers: publishes events
- Order event producers → Apache Kafka: publishes
- Apache Kafka → Order event consumers: dispatches events
- Order event consumers → Reservation service: processes events
- Reservation service → Inventory PostgreSQL: reads and writes
- Reservation service → Inventory result producer: creates result
- Inventory result producer → Apache Kafka: publishes result
- Apache Kafka → Inventory result handler: dispatches result
- Inventory result handler → Order PostgreSQL: updates order
- Product API → Product service: invokes
- Product service → Inventory PostgreSQL: reads and writes
- API gateway → Service fallbacks: uses fallback
