# hardikjain3012/order-inventory-microservices-assignment architecture

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

- Interactive diagram: https://gitdiagram.com/hardikjain3012/order-inventory-microservices-assignment
- Repository: https://github.com/hardikjain3012/order-inventory-microservices-assignment

## Overview

This is a Spring Boot order-and-inventory system: a customer submits an order, the Order Service processes it and checks availability through the Inventory Service REST API, while inventory endpoints expose product and batch management. The inventory API also supports strategy-selected stock queries and updates. The graph includes the repository’s service, repository, and entity layers, but source excerpts for their internal calls were not provided, so those links are omitted where wiring cannot be verified.

Main entry points: [`inventory-service/src/main/java/com/korber/inventory/controller/InventoryController.java`](https://github.com/hardikjain3012/order-inventory-microservices-assignment/blob/main/inventory-service/src/main/java/com/korber/inventory/controller/InventoryController.java) (Inventory API), [`order-service/src/main/java/com/korber/order/controller/OrderController.java`](https://github.com/hardikjain3012/order-inventory-microservices-assignment/blob/main/order-service/src/main/java/com/korber/order/controller/OrderController.java) (Order API), [`order-service/src/main/java/com/korber/order/service/OrderServiceImpl.java`](https://github.com/hardikjain3012/order-inventory-microservices-assignment/blob/main/order-service/src/main/java/com/korber/order/service/OrderServiceImpl.java) (Order processing), [`order-service/src/main/java/com/korber/order/service/InventoryServiceImpl.java`](https://github.com/hardikjain3012/order-inventory-microservices-assignment/blob/main/order-service/src/main/java/com/korber/order/service/InventoryServiceImpl.java) (Inventory adapter)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_order["Order service"]
  node_order_controller["Order API"]
  node_order_service["Order processing"]
  node_order_inventory_service["Inventory adapter"]
  node_inventory_client["REST client"]
  node_order_repository["Order repositories"]
  node_order_items_repository["Order-item repository"]
  node_order_entities["Order records<br/>[Order.java]"]
end

subgraph group_inventory["Inventory service"]
  node_inventory_controller["Inventory API"]
  node_inventory_factory["Strategy factory"]
  node_inventory_service["Inventory operations"]
  node_product_controller["Product API"]
  node_product_service["Product operations"]
  node_batch_controller["Batch API"]
  node_batch_service["Batch operations"]
end

subgraph group_persistence["Persistence"]
  node_product_repository["Product repository"]
  node_batch_repository["Batch repository"]
  node_inventory_entities["Product and batch<br/>[Product.java]"]
  node_order_db[("Order H2 database")]
  node_inventory_db[("Inventory H2 database")]
end

subgraph group_support["API support"]
  node_exception_handlers["Error mapping"]
  node_inventory_errors["Inventory errors"]
end

node_customer(("Customer"))
node_inventory_api_service(("Inventory REST API"))

node_customer -->|"submits order"| node_order_controller
node_order_controller -->|"places order"| node_order_service
node_order_service -->|"checks stock"| node_order_inventory_service
node_order_inventory_service -->|"uses client"| node_inventory_client
node_inventory_client -->|"REST request"| node_inventory_api_service
node_inventory_api_service -->|"reaches endpoint"| node_inventory_controller
node_inventory_controller -->|"selects strategy"| node_inventory_factory
node_inventory_controller -->|"runs operation"| node_inventory_service
node_inventory_controller -->|"returns inventory data"| node_customer
node_customer -->|"manages inventory"| node_inventory_controller
node_customer -->|"manages products"| node_product_controller
node_product_controller -->|"runs product operation"| node_product_service
node_customer -->|"manages batches"| node_batch_controller
node_batch_controller -->|"runs batch operation"| node_batch_service

click node_order_controller "https://github.com/hardikjain3012/order-inventory-microservices-assignment/blob/main/order-service/src/main/java/com/korber/order/controller/OrderController.java"
click node_order_service "https://github.com/hardikjain3012/order-inventory-microservices-assignment/blob/main/order-service/src/main/java/com/korber/order/service/OrderServiceImpl.java"
click node_order_inventory_service "https://github.com/hardikjain3012/order-inventory-microservices-assignment/blob/main/order-service/src/main/java/com/korber/order/service/InventoryServiceImpl.java"
click node_inventory_client "https://github.com/hardikjain3012/order-inventory-microservices-assignment/blob/main/order-service/src/main/java/com/korber/order/configuration/InventoryClient.java"
click node_order_repository "https://github.com/hardikjain3012/order-inventory-microservices-assignment/blob/main/order-service/src/main/java/com/korber/order/repository/OrderRepository.java"
click node_order_items_repository "https://github.com/hardikjain3012/order-inventory-microservices-assignment/blob/main/order-service/src/main/java/com/korber/order/repository/OrderItemRepository.java"
click node_order_entities "https://github.com/hardikjain3012/order-inventory-microservices-assignment/blob/main/order-service/src/main/java/com/korber/order/entity/Order.java"
click node_inventory_controller "https://github.com/hardikjain3012/order-inventory-microservices-assignment/blob/main/inventory-service/src/main/java/com/korber/inventory/controller/InventoryController.java"
click node_inventory_factory "https://github.com/hardikjain3012/order-inventory-microservices-assignment/blob/main/inventory-service/src/main/java/com/korber/inventory/factory/InventoryServiceFactory.java"
click node_inventory_service "https://github.com/hardikjain3012/order-inventory-microservices-assignment/blob/main/inventory-service/src/main/java/com/korber/inventory/service/InventoryServiceImpl.java"
click node_product_controller "https://github.com/hardikjain3012/order-inventory-microservices-assignment/blob/main/inventory-service/src/main/java/com/korber/inventory/controller/ProductController.java"
click node_product_service "https://github.com/hardikjain3012/order-inventory-microservices-assignment/blob/main/inventory-service/src/main/java/com/korber/inventory/service/ProductServiceImpl.java"
click node_batch_controller "https://github.com/hardikjain3012/order-inventory-microservices-assignment/blob/main/inventory-service/src/main/java/com/korber/inventory/controller/BatchController.java"
click node_batch_service "https://github.com/hardikjain3012/order-inventory-microservices-assignment/blob/main/inventory-service/src/main/java/com/korber/inventory/service/BatchServiceImpl.java"
click node_product_repository "https://github.com/hardikjain3012/order-inventory-microservices-assignment/blob/main/inventory-service/src/main/java/com/korber/inventory/repository/ProductRepository.java"
click node_batch_repository "https://github.com/hardikjain3012/order-inventory-microservices-assignment/blob/main/inventory-service/src/main/java/com/korber/inventory/repository/BatchRepository.java"
click node_inventory_entities "https://github.com/hardikjain3012/order-inventory-microservices-assignment/blob/main/inventory-service/src/main/java/com/korber/inventory/entity/Product.java"
click node_order_db "https://github.com/hardikjain3012/order-inventory-microservices-assignment/blob/main/order-service/src/main/resources/application.properties"
click node_inventory_db "https://github.com/hardikjain3012/order-inventory-microservices-assignment/blob/main/inventory-service/src/main/resources/application.properties"
click node_exception_handlers "https://github.com/hardikjain3012/order-inventory-microservices-assignment/blob/main/order-service/src/main/java/com/korber/order/exceptions/OrderExceptionHandler.java"
click node_inventory_errors "https://github.com/hardikjain3012/order-inventory-microservices-assignment/blob/main/inventory-service/src/main/java/com/korber/inventory/exceptions/InventoryExceptionHandler.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_order_controller,node_order_service,node_order_inventory_service,node_inventory_client,node_order_repository,node_order_items_repository,node_order_entities toneBlue
class node_inventory_controller,node_inventory_factory,node_inventory_service,node_product_controller,node_product_service,node_batch_controller,node_batch_service toneAmber
class node_product_repository,node_batch_repository,node_inventory_entities,node_order_db,node_inventory_db,node_inventory_api_service toneMint
class node_exception_handlers,node_inventory_errors toneRose
class node_customer toneIndigo
```

## Components

### Order service

- [Order API](https://github.com/hardikjain3012/order-inventory-microservices-assignment/blob/main/order-service/src/main/java/com/korber/order/controller/OrderController.java): `order-service/src/main/java/com/korber/order/controller/OrderController.java`
- [Order processing](https://github.com/hardikjain3012/order-inventory-microservices-assignment/blob/main/order-service/src/main/java/com/korber/order/service/OrderServiceImpl.java): `order-service/src/main/java/com/korber/order/service/OrderServiceImpl.java`
- [Inventory adapter](https://github.com/hardikjain3012/order-inventory-microservices-assignment/blob/main/order-service/src/main/java/com/korber/order/service/InventoryServiceImpl.java): `order-service/src/main/java/com/korber/order/service/InventoryServiceImpl.java`
- [REST client](https://github.com/hardikjain3012/order-inventory-microservices-assignment/blob/main/order-service/src/main/java/com/korber/order/configuration/InventoryClient.java): `order-service/src/main/java/com/korber/order/configuration/InventoryClient.java`
- [Order repositories](https://github.com/hardikjain3012/order-inventory-microservices-assignment/blob/main/order-service/src/main/java/com/korber/order/repository/OrderRepository.java): `order-service/src/main/java/com/korber/order/repository/OrderRepository.java`
- [Order-item repository](https://github.com/hardikjain3012/order-inventory-microservices-assignment/blob/main/order-service/src/main/java/com/korber/order/repository/OrderItemRepository.java): `order-service/src/main/java/com/korber/order/repository/OrderItemRepository.java`
- [Order records](https://github.com/hardikjain3012/order-inventory-microservices-assignment/blob/main/order-service/src/main/java/com/korber/order/entity/Order.java): `order-service/src/main/java/com/korber/order/entity/Order.java`

### Inventory service

- [Inventory API](https://github.com/hardikjain3012/order-inventory-microservices-assignment/blob/main/inventory-service/src/main/java/com/korber/inventory/controller/InventoryController.java): `inventory-service/src/main/java/com/korber/inventory/controller/InventoryController.java`
- [Strategy factory](https://github.com/hardikjain3012/order-inventory-microservices-assignment/blob/main/inventory-service/src/main/java/com/korber/inventory/factory/InventoryServiceFactory.java): `inventory-service/src/main/java/com/korber/inventory/factory/InventoryServiceFactory.java`
- [Inventory operations](https://github.com/hardikjain3012/order-inventory-microservices-assignment/blob/main/inventory-service/src/main/java/com/korber/inventory/service/InventoryServiceImpl.java): `inventory-service/src/main/java/com/korber/inventory/service/InventoryServiceImpl.java`
- [Product API](https://github.com/hardikjain3012/order-inventory-microservices-assignment/blob/main/inventory-service/src/main/java/com/korber/inventory/controller/ProductController.java): `inventory-service/src/main/java/com/korber/inventory/controller/ProductController.java`
- [Product operations](https://github.com/hardikjain3012/order-inventory-microservices-assignment/blob/main/inventory-service/src/main/java/com/korber/inventory/service/ProductServiceImpl.java): `inventory-service/src/main/java/com/korber/inventory/service/ProductServiceImpl.java`
- [Batch API](https://github.com/hardikjain3012/order-inventory-microservices-assignment/blob/main/inventory-service/src/main/java/com/korber/inventory/controller/BatchController.java): `inventory-service/src/main/java/com/korber/inventory/controller/BatchController.java`
- [Batch operations](https://github.com/hardikjain3012/order-inventory-microservices-assignment/blob/main/inventory-service/src/main/java/com/korber/inventory/service/BatchServiceImpl.java): `inventory-service/src/main/java/com/korber/inventory/service/BatchServiceImpl.java`

### Persistence

- [Product repository](https://github.com/hardikjain3012/order-inventory-microservices-assignment/blob/main/inventory-service/src/main/java/com/korber/inventory/repository/ProductRepository.java): `inventory-service/src/main/java/com/korber/inventory/repository/ProductRepository.java`
- [Batch repository](https://github.com/hardikjain3012/order-inventory-microservices-assignment/blob/main/inventory-service/src/main/java/com/korber/inventory/repository/BatchRepository.java): `inventory-service/src/main/java/com/korber/inventory/repository/BatchRepository.java`
- [Product and batch](https://github.com/hardikjain3012/order-inventory-microservices-assignment/blob/main/inventory-service/src/main/java/com/korber/inventory/entity/Product.java): `inventory-service/src/main/java/com/korber/inventory/entity/Product.java`
- [Order H2 database](https://github.com/hardikjain3012/order-inventory-microservices-assignment/blob/main/order-service/src/main/resources/application.properties): `order-service/src/main/resources/application.properties`
- [Inventory H2 database](https://github.com/hardikjain3012/order-inventory-microservices-assignment/blob/main/inventory-service/src/main/resources/application.properties): `inventory-service/src/main/resources/application.properties`

### API support

- [Error mapping](https://github.com/hardikjain3012/order-inventory-microservices-assignment/blob/main/order-service/src/main/java/com/korber/order/exceptions/OrderExceptionHandler.java): `order-service/src/main/java/com/korber/order/exceptions/OrderExceptionHandler.java`
- [Inventory errors](https://github.com/hardikjain3012/order-inventory-microservices-assignment/blob/main/inventory-service/src/main/java/com/korber/inventory/exceptions/InventoryExceptionHandler.java): `inventory-service/src/main/java/com/korber/inventory/exceptions/InventoryExceptionHandler.java`

### Other components

- **Customer**
- **Inventory REST API**

## Connections

- Customer → Order API: submits order
- Order API → Order processing: places order
- Order processing → Inventory adapter: checks stock
- Inventory adapter → REST client: uses client
- REST client → Inventory REST API: REST request
- Inventory REST API → Inventory API: reaches endpoint
- Inventory API → Strategy factory: selects strategy
- Inventory API → Inventory operations: runs operation
- Inventory API → Customer: returns inventory data
- Customer → Inventory API: manages inventory
- Customer → Product API: manages products
- Product API → Product operations: runs product operation
- Customer → Batch API: manages batches
- Batch API → Batch operations: runs batch operation
