# raman-8688/enterprise-order-management-system architecture

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

- Interactive diagram: https://gitdiagram.com/raman-8688/enterprise-order-management-system
- Repository: https://github.com/raman-8688/enterprise-order-management-system

## Overview

OMS supports user registration and JWT login, then authenticated catalog, inventory, order, payment, and reporting workflows through an Angular client and API gateway. Order creation is a distinct saga stage: the order service coordinates product/inventory checks and event-driven payment processing, with Kafka carrying payment outcomes back to orders. Product, inventory, order, payment, and auth services own separate persistence. The README documents discovery and centralized configuration; the tree identifies their applications, but sampled source does not establish registration or configuration call wiring.

Main entry points: [`frontend/src/app/app.routes.ts`](https://github.com/raman-8688/enterprise-order-management-system/blob/main/frontend/src/app/app.routes.ts) (Angular application), [`backend/api-gateway/src/main/java/com/enterprise/oms/gateway/ApiGatewayApplication.java`](https://github.com/raman-8688/enterprise-order-management-system/blob/main/backend/api-gateway/src/main/java/com/enterprise/oms/gateway/ApiGatewayApplication.java) (API gateway), [`backend/order-service/src/main/java/com/enterprise/oms/order/controller/OrderController.java`](https://github.com/raman-8688/enterprise-order-management-system/blob/main/backend/order-service/src/main/java/com/enterprise/oms/order/controller/OrderController.java) (Order service), [`backend/product-service/src/main/java/com/enterprise/oms/product/controller/ProductController.java`](https://github.com/raman-8688/enterprise-order-management-system/blob/main/backend/product-service/src/main/java/com/enterprise/oms/product/controller/ProductController.java) (Product service)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Client application"]
  node_frontend["Angular application<br/>[app.routes.ts]"]
  node_authui["Login and registration<br/>[auth.service.ts]"]
  node_catalogui["Catalog screens<br/>[product.service.ts]"]
  node_ordersui["Order screens<br/>[order.service.ts]"]
  node_inventoryui["Inventory screens"]
  node_paymentsui["Payment screens<br/>[payment.service.ts]"]
  node_reports["Reports and settings"]
end

subgraph group_edge["Gateway and identity"]
  node_gateway["API gateway"]
  node_auth["Auth service"]
  node_usersvc["User and token logic<br/>[UserService.java]"]
  node_userdb[("Auth user store")]
end

subgraph group_commerce["Commerce services"]
  node_product["Product service"]
  node_productdb[("Product store")]
  node_inventory["Inventory service"]
  node_inventorydb[("Inventory store")]
  node_order["Order service"]
  node_saga["Order saga"]
  node_orderdb[("Order store")]
  node_payment["Payment service"]
  node_paymentdb[("Payment store")]
end

subgraph group_operations["Messaging and discovery"]
  node_orderpub["Order event publisher"]
  node_orderconsumer["Payment event consumer"]
  node_paymentconsumer["Order event consumer"]
  node_paymentpub["Payment event publisher"]
  node_kafka["Kafka broker"]
  node_discovery["Eureka discovery"]
  node_config["Config server"]
end

node_user(("OMS user"))

node_user -->|"uses"| node_frontend
node_frontend -->|"routes to"| node_authui
node_frontend -->|"routes to"| node_catalogui
node_frontend -->|"routes to"| node_ordersui
node_frontend -->|"routes to"| node_inventoryui
node_frontend -->|"routes to"| node_paymentsui
node_frontend -->|"routes to"| node_reports
node_frontend -->|"HTTP requests"| node_gateway
node_gateway -->|"routes"| node_auth
node_gateway -->|"routes"| node_product
node_gateway -->|"routes"| node_inventory
node_gateway -->|"routes"| node_order
node_gateway -->|"routes"| node_payment
node_auth -->|"calls"| node_usersvc
node_usersvc -->|"reads/writes"| node_userdb
node_product -->|"reads/writes"| node_productdb
node_product -->|"Feign queries"| node_inventory
node_inventory -->|"reads/writes"| node_inventorydb
node_order -->|"creates via"| node_saga
node_order -->|"queries"| node_orderdb
node_saga -->|"checks products"| node_product
node_saga -->|"reserves stock"| node_inventory
node_saga -->|"persists order"| node_orderdb
node_order -->|"publishes through"| node_orderpub
node_orderpub -->|"publishes events"| node_kafka
node_kafka -->|"delivers events"| node_paymentconsumer
node_paymentconsumer -->|"processes via"| node_payment
node_payment -->|"reads/writes"| node_paymentdb
node_payment -->|"publishes through"| node_paymentpub
node_paymentpub -->|"publishes events"| node_kafka
node_kafka -->|"delivers events"| node_orderconsumer
node_orderconsumer -->|"updates order"| node_orderdb
node_auth -.->|"registers"| node_discovery
node_product -.->|"registers"| node_discovery
node_inventory -.->|"registers"| node_discovery
node_order -.->|"registers"| node_discovery
node_payment -.->|"registers"| node_discovery

click node_frontend "https://github.com/raman-8688/enterprise-order-management-system/blob/main/frontend/src/app/app.routes.ts"
click node_authui "https://github.com/raman-8688/enterprise-order-management-system/blob/main/frontend/src/app/core/auth/services/auth.service.ts"
click node_catalogui "https://github.com/raman-8688/enterprise-order-management-system/blob/main/frontend/src/app/features/products/services/product.service.ts"
click node_ordersui "https://github.com/raman-8688/enterprise-order-management-system/blob/main/frontend/src/app/features/orders/services/order.service.ts"
click node_inventoryui "https://github.com/raman-8688/enterprise-order-management-system/blob/main/frontend/src/app/features/inventory/services/inventory.service.ts"
click node_paymentsui "https://github.com/raman-8688/enterprise-order-management-system/blob/main/frontend/src/app/features/payments/services/payment.service.ts"
click node_reports "https://github.com/raman-8688/enterprise-order-management-system/blob/main/frontend/src/app/features/reports/pages/reports/reports.component.ts"
click node_gateway "https://github.com/raman-8688/enterprise-order-management-system/blob/main/backend/api-gateway/src/main/java/com/enterprise/oms/gateway/ApiGatewayApplication.java"
click node_auth "https://github.com/raman-8688/enterprise-order-management-system/blob/main/backend/auth-service/src/main/java/com/enterprise/oms/auth/controller/AuthController.java"
click node_usersvc "https://github.com/raman-8688/enterprise-order-management-system/blob/main/backend/auth-service/src/main/java/com/enterprise/oms/auth/service/UserService.java"
click node_userdb "https://github.com/raman-8688/enterprise-order-management-system/blob/main/backend/auth-service/src/main/java/com/enterprise/oms/auth/repository/UserRepository.java"
click node_product "https://github.com/raman-8688/enterprise-order-management-system/blob/main/backend/product-service/src/main/java/com/enterprise/oms/product/controller/ProductController.java"
click node_productdb "https://github.com/raman-8688/enterprise-order-management-system/blob/main/backend/product-service/src/main/java/com/enterprise/oms/product/repository/ProductRepository.java"
click node_inventory "https://github.com/raman-8688/enterprise-order-management-system/blob/main/backend/inventory-service/src/main/java/com/enterprise/oms/inventory/controller/InventoryController.java"
click node_inventorydb "https://github.com/raman-8688/enterprise-order-management-system/blob/main/backend/inventory-service/src/main/java/com/enterprise/oms/inventory/repository/InventoryRepository.java"
click node_order "https://github.com/raman-8688/enterprise-order-management-system/blob/main/backend/order-service/src/main/java/com/enterprise/oms/order/controller/OrderController.java"
click node_saga "https://github.com/raman-8688/enterprise-order-management-system/blob/main/backend/order-service/src/main/java/com/enterprise/oms/order/service/saga/OrderSagaOrchestrator.java"
click node_orderdb "https://github.com/raman-8688/enterprise-order-management-system/blob/main/backend/order-service/src/main/java/com/enterprise/oms/order/repository/OrderRepository.java"
click node_payment "https://github.com/raman-8688/enterprise-order-management-system/blob/main/backend/payment-service/src/main/java/com/enterprise/oms/payment/controller/PaymentController.java"
click node_paymentdb "https://github.com/raman-8688/enterprise-order-management-system/blob/main/backend/payment-service/src/main/java/com/enterprise/oms/payment/repository/PaymentRepository.java"
click node_orderpub "https://github.com/raman-8688/enterprise-order-management-system/blob/main/backend/order-service/src/main/java/com/enterprise/oms/order/events/publisher/OrderEventPublisher.java"
click node_orderconsumer "https://github.com/raman-8688/enterprise-order-management-system/blob/main/backend/order-service/src/main/java/com/enterprise/oms/order/events/consumer/PaymentEventConsumer.java"
click node_paymentconsumer "https://github.com/raman-8688/enterprise-order-management-system/blob/main/backend/payment-service/src/main/java/com/enterprise/oms/payment/consumer/OrderEventConsumer.java"
click node_paymentpub "https://github.com/raman-8688/enterprise-order-management-system/blob/main/backend/payment-service/src/main/java/com/enterprise/oms/payment/publisher/PaymentEventPublisher.java"
click node_discovery "https://github.com/raman-8688/enterprise-order-management-system/blob/main/backend/discovery-server/src/main/java/com/enterprise/oms/discovery/DiscoveryServerApplication.java"
click node_config "https://github.com/raman-8688/enterprise-order-management-system/blob/main/backend/config-server/src/main/java/com/enterprise/oms/config/ConfigServerApplication.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_authui,node_catalogui,node_ordersui,node_inventoryui,node_paymentsui,node_reports,node_user toneBlue
class node_gateway,node_auth,node_usersvc,node_userdb toneAmber
class node_product,node_productdb,node_inventory,node_inventorydb,node_order,node_saga,node_orderdb,node_payment,node_paymentdb toneMint
class node_orderpub,node_orderconsumer,node_paymentconsumer,node_paymentpub,node_kafka,node_discovery,node_config toneRose
```

## Components

### Client application

- [Angular application](https://github.com/raman-8688/enterprise-order-management-system/blob/main/frontend/src/app/app.routes.ts): `frontend/src/app/app.routes.ts`
- [Login and registration](https://github.com/raman-8688/enterprise-order-management-system/blob/main/frontend/src/app/core/auth/services/auth.service.ts): `frontend/src/app/core/auth/services/auth.service.ts`
- [Catalog screens](https://github.com/raman-8688/enterprise-order-management-system/blob/main/frontend/src/app/features/products/services/product.service.ts): `frontend/src/app/features/products/services/product.service.ts`
- [Order screens](https://github.com/raman-8688/enterprise-order-management-system/blob/main/frontend/src/app/features/orders/services/order.service.ts): `frontend/src/app/features/orders/services/order.service.ts`
- [Inventory screens](https://github.com/raman-8688/enterprise-order-management-system/blob/main/frontend/src/app/features/inventory/services/inventory.service.ts): `frontend/src/app/features/inventory/services/inventory.service.ts`
- [Payment screens](https://github.com/raman-8688/enterprise-order-management-system/blob/main/frontend/src/app/features/payments/services/payment.service.ts): `frontend/src/app/features/payments/services/payment.service.ts`
- [Reports and settings](https://github.com/raman-8688/enterprise-order-management-system/blob/main/frontend/src/app/features/reports/pages/reports/reports.component.ts): `frontend/src/app/features/reports/pages/reports/reports.component.ts`

### Gateway and identity

- [API gateway](https://github.com/raman-8688/enterprise-order-management-system/blob/main/backend/api-gateway/src/main/java/com/enterprise/oms/gateway/ApiGatewayApplication.java): `backend/api-gateway/src/main/java/com/enterprise/oms/gateway/ApiGatewayApplication.java`
- [Auth service](https://github.com/raman-8688/enterprise-order-management-system/blob/main/backend/auth-service/src/main/java/com/enterprise/oms/auth/controller/AuthController.java): `backend/auth-service/src/main/java/com/enterprise/oms/auth/controller/AuthController.java`
- [User and token logic](https://github.com/raman-8688/enterprise-order-management-system/blob/main/backend/auth-service/src/main/java/com/enterprise/oms/auth/service/UserService.java): `backend/auth-service/src/main/java/com/enterprise/oms/auth/service/UserService.java`
- [Auth user store](https://github.com/raman-8688/enterprise-order-management-system/blob/main/backend/auth-service/src/main/java/com/enterprise/oms/auth/repository/UserRepository.java): `backend/auth-service/src/main/java/com/enterprise/oms/auth/repository/UserRepository.java`

### Commerce services

- [Product service](https://github.com/raman-8688/enterprise-order-management-system/blob/main/backend/product-service/src/main/java/com/enterprise/oms/product/controller/ProductController.java): `backend/product-service/src/main/java/com/enterprise/oms/product/controller/ProductController.java`
- [Product store](https://github.com/raman-8688/enterprise-order-management-system/blob/main/backend/product-service/src/main/java/com/enterprise/oms/product/repository/ProductRepository.java): `backend/product-service/src/main/java/com/enterprise/oms/product/repository/ProductRepository.java`
- [Inventory service](https://github.com/raman-8688/enterprise-order-management-system/blob/main/backend/inventory-service/src/main/java/com/enterprise/oms/inventory/controller/InventoryController.java): `backend/inventory-service/src/main/java/com/enterprise/oms/inventory/controller/InventoryController.java`
- [Inventory store](https://github.com/raman-8688/enterprise-order-management-system/blob/main/backend/inventory-service/src/main/java/com/enterprise/oms/inventory/repository/InventoryRepository.java): `backend/inventory-service/src/main/java/com/enterprise/oms/inventory/repository/InventoryRepository.java`
- [Order service](https://github.com/raman-8688/enterprise-order-management-system/blob/main/backend/order-service/src/main/java/com/enterprise/oms/order/controller/OrderController.java): `backend/order-service/src/main/java/com/enterprise/oms/order/controller/OrderController.java`
- [Order saga](https://github.com/raman-8688/enterprise-order-management-system/blob/main/backend/order-service/src/main/java/com/enterprise/oms/order/service/saga/OrderSagaOrchestrator.java): `backend/order-service/src/main/java/com/enterprise/oms/order/service/saga/OrderSagaOrchestrator.java`
- [Order store](https://github.com/raman-8688/enterprise-order-management-system/blob/main/backend/order-service/src/main/java/com/enterprise/oms/order/repository/OrderRepository.java): `backend/order-service/src/main/java/com/enterprise/oms/order/repository/OrderRepository.java`
- [Payment service](https://github.com/raman-8688/enterprise-order-management-system/blob/main/backend/payment-service/src/main/java/com/enterprise/oms/payment/controller/PaymentController.java): `backend/payment-service/src/main/java/com/enterprise/oms/payment/controller/PaymentController.java`
- [Payment store](https://github.com/raman-8688/enterprise-order-management-system/blob/main/backend/payment-service/src/main/java/com/enterprise/oms/payment/repository/PaymentRepository.java): `backend/payment-service/src/main/java/com/enterprise/oms/payment/repository/PaymentRepository.java`

### Messaging and discovery

- [Order event publisher](https://github.com/raman-8688/enterprise-order-management-system/blob/main/backend/order-service/src/main/java/com/enterprise/oms/order/events/publisher/OrderEventPublisher.java): `backend/order-service/src/main/java/com/enterprise/oms/order/events/publisher/OrderEventPublisher.java`
- [Payment event consumer](https://github.com/raman-8688/enterprise-order-management-system/blob/main/backend/order-service/src/main/java/com/enterprise/oms/order/events/consumer/PaymentEventConsumer.java): `backend/order-service/src/main/java/com/enterprise/oms/order/events/consumer/PaymentEventConsumer.java`
- [Order event consumer](https://github.com/raman-8688/enterprise-order-management-system/blob/main/backend/payment-service/src/main/java/com/enterprise/oms/payment/consumer/OrderEventConsumer.java): `backend/payment-service/src/main/java/com/enterprise/oms/payment/consumer/OrderEventConsumer.java`
- [Payment event publisher](https://github.com/raman-8688/enterprise-order-management-system/blob/main/backend/payment-service/src/main/java/com/enterprise/oms/payment/publisher/PaymentEventPublisher.java): `backend/payment-service/src/main/java/com/enterprise/oms/payment/publisher/PaymentEventPublisher.java`
- **Kafka broker**
- [Eureka discovery](https://github.com/raman-8688/enterprise-order-management-system/blob/main/backend/discovery-server/src/main/java/com/enterprise/oms/discovery/DiscoveryServerApplication.java): `backend/discovery-server/src/main/java/com/enterprise/oms/discovery/DiscoveryServerApplication.java`
- [Config server](https://github.com/raman-8688/enterprise-order-management-system/blob/main/backend/config-server/src/main/java/com/enterprise/oms/config/ConfigServerApplication.java): `backend/config-server/src/main/java/com/enterprise/oms/config/ConfigServerApplication.java`

### Other components

- **OMS user**

## Connections

- OMS user → Angular application: uses
- Angular application → Login and registration: routes to
- Angular application → Catalog screens: routes to
- Angular application → Order screens: routes to
- Angular application → Inventory screens: routes to
- Angular application → Payment screens: routes to
- Angular application → Reports and settings: routes to
- Angular application → API gateway: HTTP requests
- API gateway → Auth service: routes
- API gateway → Product service: routes
- API gateway → Inventory service: routes
- API gateway → Order service: routes
- API gateway → Payment service: routes
- Auth service → User and token logic: calls
- User and token logic → Auth user store: reads/writes
- Product service → Product store: reads/writes
- Product service → Inventory service: Feign queries
- Inventory service → Inventory store: reads/writes
- Order service → Order saga: creates via
- Order service → Order store: queries
- Order saga → Product service: checks products
- Order saga → Inventory service: reserves stock
- Order saga → Order store: persists order
- Order service → Order event publisher: publishes through
- Order event publisher → Kafka broker: publishes events
- Kafka broker → Order event consumer: delivers events
- Order event consumer → Payment service: processes via
- Payment service → Payment store: reads/writes
- Payment service → Payment event publisher: publishes through
- Payment event publisher → Kafka broker: publishes events
- Kafka broker → Payment event consumer: delivers events
- Payment event consumer → Order store: updates order
- Auth service → Eureka discovery: registers
- Product service → Eureka discovery: registers
- Inventory service → Eureka discovery: registers
- Order service → Eureka discovery: registers
- Payment service → Eureka discovery: registers
