# bootforge-dev/e-com-app architecture

> Architecture diagram of the GitHub repository bootforge-dev/e-com-app, 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/bootforge-dev/e-com-app
- Repository: https://github.com/bootforge-dev/e-com-app

## Overview

This repository implements a microservice-based commerce backend: clients reach product, inventory, order, and payment APIs, with order operations coordinating product lookup and stock reservation or release. Product catalog maintenance/search, inventory availability and reservation lifecycle, and payment processing/refund/cancellation are distinct domain capabilities. Repositories persist each service’s domain state. The tree also includes API gateway, configuration-server, and discovery-server applications. Wiring beyond the sampled controllers and service excerpts is shown only where service roles or source evidence support it; no README was provided.

Main entry points: [`order-service/src/main/java/com/bootforge/order/service/OrderService.java`](https://github.com/bootforge-dev/e-com-app/blob/main/order-service/src/main/java/com/bootforge/order/service/OrderService.java) (Order service), [`inventory-service/src/main/java/com/bootforge/inventory/service/InventoryService.java`](https://github.com/bootforge-dev/e-com-app/blob/main/inventory-service/src/main/java/com/bootforge/inventory/service/InventoryService.java) (Inventory service), [`product-service/src/main/java/com/bootforge/productservice/controller/ProductController.java`](https://github.com/bootforge-dev/e-com-app/blob/main/product-service/src/main/java/com/bootforge/productservice/controller/ProductController.java) (Product API), [`inventory-service/src/main/java/com/bootforge/inventory/controller/InventoryController.java`](https://github.com/bootforge-dev/e-com-app/blob/main/inventory-service/src/main/java/com/bootforge/inventory/controller/InventoryController.java) (Inventory API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_edge["Entry and platform"]
  node_gateway["API gateway"]
  node_config["Configuration server"]
  node_discovery["Service discovery"]
end

subgraph group_catalog["Product catalog"]
  node_product_api["Product API"]
  node_product_service["Product service"]
  node_product_repo["Product repository"]
  node_product_db[("Product data")]
end

subgraph group_stock["Inventory control"]
  node_inventory_api["Inventory API"]
  node_inventory_service["Inventory service"]
  node_inventory_repo["Inventory repositories"]
  node_reservation_repo["Reservation repository"]
  node_inventory_db[("Inventory data")]
end

subgraph group_orders["Order management"]
  node_order_api["Order API"]
  node_order_service["Order service<br/>[OrderService.java]"]
  node_product_client["Product client<br/>[ProductClient.java]"]
  node_inventory_client["Inventory client"]
  node_order_repo["Order repository"]
  node_order_db[("Order data")]
end

subgraph group_payments["Payment management"]
  node_payment_api["Payment API"]
  node_payment_service["Payment service"]
  node_payment_repo["Payment repository"]
  node_payment_db[("Payment data")]
end

node_consumer(("API client"))

node_consumer -->|"sends requests"| node_gateway
node_consumer -->|"calls API"| node_product_api
node_consumer -->|"calls API"| node_inventory_api
node_consumer -->|"calls API"| node_order_api
node_consumer -->|"calls API"| node_payment_api
node_product_api -->|"delegates"| node_product_service
node_product_service -->|"reads and writes"| node_product_repo
node_product_repo -->|"persists"| node_product_db
node_inventory_api -->|"delegates"| node_inventory_service
node_inventory_service -->|"reads and writes"| node_inventory_repo
node_inventory_service -->|"tracks reservations"| node_reservation_repo
node_inventory_repo -->|"persists"| node_inventory_db
node_reservation_repo -->|"persists"| node_inventory_db
node_order_api -->|"delegates"| node_order_service
node_order_service -->|"reads and writes"| node_order_repo
node_order_repo -->|"persists"| node_order_db
node_order_service -->|"validates products"| node_product_client
node_product_client -->|"requests product"| node_product_api
node_order_service -->|"releases stock"| node_inventory_client
node_inventory_client -->|"requests stock action"| node_inventory_api
node_payment_api -->|"delegates"| node_payment_service
node_payment_service -->|"reads and writes"| node_payment_repo
node_payment_repo -->|"persists"| node_payment_db

click node_gateway "https://github.com/bootforge-dev/e-com-app/blob/main/api-gateway/src/main/java/com/bootforge/apigateway/ApiGatewayApplication.java"
click node_config "https://github.com/bootforge-dev/e-com-app/blob/main/config-server/src/main/java/com/bootforge/configserver/ConfigServerApplication.java"
click node_discovery "https://github.com/bootforge-dev/e-com-app/blob/main/discovery-server/src/main/java/com/bootforge/discovery_server/DiscoveryServerApplication.java"
click node_product_api "https://github.com/bootforge-dev/e-com-app/blob/main/product-service/src/main/java/com/bootforge/productservice/controller/ProductController.java"
click node_product_service "https://github.com/bootforge-dev/e-com-app/blob/main/product-service/src/main/java/com/bootforge/productservice/service/ProductService.java"
click node_product_repo "https://github.com/bootforge-dev/e-com-app/blob/main/product-service/src/main/java/com/bootforge/productservice/repository/ProductRepository.java"
click node_inventory_api "https://github.com/bootforge-dev/e-com-app/blob/main/inventory-service/src/main/java/com/bootforge/inventory/controller/InventoryController.java"
click node_inventory_service "https://github.com/bootforge-dev/e-com-app/blob/main/inventory-service/src/main/java/com/bootforge/inventory/service/InventoryService.java"
click node_inventory_repo "https://github.com/bootforge-dev/e-com-app/blob/main/inventory-service/src/main/java/com/bootforge/inventory/repository/InventoryRepository.java"
click node_reservation_repo "https://github.com/bootforge-dev/e-com-app/blob/main/inventory-service/src/main/java/com/bootforge/inventory/repository/InventoryReservationRepository.java"
click node_order_api "https://github.com/bootforge-dev/e-com-app/blob/main/order-service/src/main/java/com/bootforge/order/controller/OrderController.java"
click node_order_service "https://github.com/bootforge-dev/e-com-app/blob/main/order-service/src/main/java/com/bootforge/order/service/OrderService.java"
click node_product_client "https://github.com/bootforge-dev/e-com-app/blob/main/order-service/src/main/java/com/bootforge/order/client/ProductClient.java"
click node_inventory_client "https://github.com/bootforge-dev/e-com-app/blob/main/order-service/src/main/java/com/bootforge/order/client/InventoryClient.java"
click node_order_repo "https://github.com/bootforge-dev/e-com-app/blob/main/order-service/src/main/java/com/bootforge/order/repository/OrderRepository.java"
click node_payment_api "https://github.com/bootforge-dev/e-com-app/blob/main/payment-service/src/main/java/com/bootforge/payment/controller/PaymentController.java"
click node_payment_service "https://github.com/bootforge-dev/e-com-app/blob/main/payment-service/src/main/java/com/bootforge/payment/service/PaymentService.java"
click node_payment_repo "https://github.com/bootforge-dev/e-com-app/blob/main/payment-service/src/main/java/com/bootforge/payment/repository/PaymentRepository.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_gateway,node_config,node_discovery,node_consumer toneBlue
class node_product_api,node_product_service,node_product_repo,node_product_db toneAmber
class node_inventory_api,node_inventory_service,node_inventory_repo,node_reservation_repo,node_inventory_db toneMint
class node_order_api,node_order_service,node_product_client,node_inventory_client,node_order_repo,node_order_db toneRose
class node_payment_api,node_payment_service,node_payment_repo,node_payment_db toneIndigo
```

## Components

### Entry and platform

- [API gateway](https://github.com/bootforge-dev/e-com-app/blob/main/api-gateway/src/main/java/com/bootforge/apigateway/ApiGatewayApplication.java): `api-gateway/src/main/java/com/bootforge/apigateway/ApiGatewayApplication.java`
- [Configuration server](https://github.com/bootforge-dev/e-com-app/blob/main/config-server/src/main/java/com/bootforge/configserver/ConfigServerApplication.java): `config-server/src/main/java/com/bootforge/configserver/ConfigServerApplication.java`
- [Service discovery](https://github.com/bootforge-dev/e-com-app/blob/main/discovery-server/src/main/java/com/bootforge/discovery_server/DiscoveryServerApplication.java): `discovery-server/src/main/java/com/bootforge/discovery_server/DiscoveryServerApplication.java`

### Product catalog

- [Product API](https://github.com/bootforge-dev/e-com-app/blob/main/product-service/src/main/java/com/bootforge/productservice/controller/ProductController.java): `product-service/src/main/java/com/bootforge/productservice/controller/ProductController.java`
- [Product service](https://github.com/bootforge-dev/e-com-app/blob/main/product-service/src/main/java/com/bootforge/productservice/service/ProductService.java): `product-service/src/main/java/com/bootforge/productservice/service/ProductService.java`
- [Product repository](https://github.com/bootforge-dev/e-com-app/blob/main/product-service/src/main/java/com/bootforge/productservice/repository/ProductRepository.java): `product-service/src/main/java/com/bootforge/productservice/repository/ProductRepository.java`
- **Product data**

### Inventory control

- [Inventory API](https://github.com/bootforge-dev/e-com-app/blob/main/inventory-service/src/main/java/com/bootforge/inventory/controller/InventoryController.java): `inventory-service/src/main/java/com/bootforge/inventory/controller/InventoryController.java`
- [Inventory service](https://github.com/bootforge-dev/e-com-app/blob/main/inventory-service/src/main/java/com/bootforge/inventory/service/InventoryService.java): `inventory-service/src/main/java/com/bootforge/inventory/service/InventoryService.java`
- [Inventory repositories](https://github.com/bootforge-dev/e-com-app/blob/main/inventory-service/src/main/java/com/bootforge/inventory/repository/InventoryRepository.java): `inventory-service/src/main/java/com/bootforge/inventory/repository/InventoryRepository.java`
- [Reservation repository](https://github.com/bootforge-dev/e-com-app/blob/main/inventory-service/src/main/java/com/bootforge/inventory/repository/InventoryReservationRepository.java): `inventory-service/src/main/java/com/bootforge/inventory/repository/InventoryReservationRepository.java`
- **Inventory data**

### Order management

- [Order API](https://github.com/bootforge-dev/e-com-app/blob/main/order-service/src/main/java/com/bootforge/order/controller/OrderController.java): `order-service/src/main/java/com/bootforge/order/controller/OrderController.java`
- [Order service](https://github.com/bootforge-dev/e-com-app/blob/main/order-service/src/main/java/com/bootforge/order/service/OrderService.java): `order-service/src/main/java/com/bootforge/order/service/OrderService.java`
- [Product client](https://github.com/bootforge-dev/e-com-app/blob/main/order-service/src/main/java/com/bootforge/order/client/ProductClient.java): `order-service/src/main/java/com/bootforge/order/client/ProductClient.java`
- [Inventory client](https://github.com/bootforge-dev/e-com-app/blob/main/order-service/src/main/java/com/bootforge/order/client/InventoryClient.java): `order-service/src/main/java/com/bootforge/order/client/InventoryClient.java`
- [Order repository](https://github.com/bootforge-dev/e-com-app/blob/main/order-service/src/main/java/com/bootforge/order/repository/OrderRepository.java): `order-service/src/main/java/com/bootforge/order/repository/OrderRepository.java`
- **Order data**

### Payment management

- [Payment API](https://github.com/bootforge-dev/e-com-app/blob/main/payment-service/src/main/java/com/bootforge/payment/controller/PaymentController.java): `payment-service/src/main/java/com/bootforge/payment/controller/PaymentController.java`
- [Payment service](https://github.com/bootforge-dev/e-com-app/blob/main/payment-service/src/main/java/com/bootforge/payment/service/PaymentService.java): `payment-service/src/main/java/com/bootforge/payment/service/PaymentService.java`
- [Payment repository](https://github.com/bootforge-dev/e-com-app/blob/main/payment-service/src/main/java/com/bootforge/payment/repository/PaymentRepository.java): `payment-service/src/main/java/com/bootforge/payment/repository/PaymentRepository.java`
- **Payment data**

### Other components

- **API client**

## Connections

- API client → API gateway: sends requests
- API client → Product API: calls API
- API client → Inventory API: calls API
- API client → Order API: calls API
- API client → Payment API: calls API
- Product API → Product service: delegates
- Product service → Product repository: reads and writes
- Product repository → Product data: persists
- Inventory API → Inventory service: delegates
- Inventory service → Inventory repositories: reads and writes
- Inventory service → Reservation repository: tracks reservations
- Inventory repositories → Inventory data: persists
- Reservation repository → Inventory data: persists
- Order API → Order service: delegates
- Order service → Order repository: reads and writes
- Order repository → Order data: persists
- Order service → Product client: validates products
- Product client → Product API: requests product
- Order service → Inventory client: releases stock
- Inventory client → Inventory API: requests stock action
- Payment API → Payment service: delegates
- Payment service → Payment repository: reads and writes
- Payment repository → Payment data: persists
