# disconnect821/orderserviceplatform architecture

> Architecture diagram of the GitHub repository disconnect821/orderserviceplatform, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-10-06). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/disconnect821/orderserviceplatform
- Repository: https://github.com/disconnect821/orderserviceplatform

## Overview

This is a Spring-based order platform for managing products and orders backed by PostgreSQL. The documented order workflow accepts a create request, validates and records an idempotency key when supplied, then processes the order while locking products to prevent stock overselling; clients can subsequently retrieve orders. Product creation and order retrieval are also documented API operations. The README is the only relationship evidence provided, so the graph omits undocumented controller/service calls and does not infer a payment workflow from the tree.

Main entry points: [`src/main/java/com/example/orderplatform/order/OrderController.java`](https://github.com/disconnect821/orderserviceplatform/blob/main/src/main/java/com/example/orderplatform/order/OrderController.java) (Order API), [`src/main/java/com/example/orderplatform/order/OrderService.java`](https://github.com/disconnect821/orderserviceplatform/blob/main/src/main/java/com/example/orderplatform/order/OrderService.java) (Order processing), [`src/main/java/com/example/orderplatform/product/ProductController.java`](https://github.com/disconnect821/orderserviceplatform/blob/main/src/main/java/com/example/orderplatform/product/ProductController.java) (Product API), [`src/main/resources/db/migration/V1__init.sql`](https://github.com/disconnect821/orderserviceplatform/blob/main/src/main/resources/db/migration/V1__init.sql) (Flyway schema)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["Client API"]
  node_product_api["Product API"]
  node_order_api["Order API"]
end

subgraph group_commerce["Order and Inventory"]
  node_product_service["Product management"]
  node_product_repository["Product locking"]
  node_order_service["Order processing<br/>[OrderService.java]"]
  node_order_repository["Order storage"]
  node_order_model["Order model<br/>[Order.java]"]
  node_order_items["Order items<br/>[OrderItem.java]"]
end

subgraph group_reliability["Idempotency"]
  node_idempotency_service["Key validation<br/>[OrderService.java]"]
  node_idempotency_repository["Key repository"]
  node_idempotency_model["Key record"]
end

subgraph group_persistence["Persistence"]
  node_postgres[("PostgreSQL")]
  node_schema["Flyway schema<br/>[V1__init.sql]"]
end

node_client(("API client"))

node_client -->|"creates products"| node_product_api
node_client -->|"submits orders"| node_order_api
node_client -->|"retrieves orders"| node_order_api
node_order_service -->|"stores keys"| node_idempotency_repository
node_order_service -->|"locks products"| node_product_repository
node_product_api -.->|"persists products"| node_postgres
node_order_api -.->|"persists orders"| node_postgres
node_schema -->|"defines schema"| node_postgres

click node_product_api "https://github.com/disconnect821/orderserviceplatform/blob/main/src/main/java/com/example/orderplatform/product/ProductController.java"
click node_order_api "https://github.com/disconnect821/orderserviceplatform/blob/main/src/main/java/com/example/orderplatform/order/OrderController.java"
click node_product_service "https://github.com/disconnect821/orderserviceplatform/blob/main/src/main/java/com/example/orderplatform/product/ProductService.java"
click node_product_repository "https://github.com/disconnect821/orderserviceplatform/blob/main/src/main/java/com/example/orderplatform/product/ProductRepository.java"
click node_order_service "https://github.com/disconnect821/orderserviceplatform/blob/main/src/main/java/com/example/orderplatform/order/OrderService.java"
click node_order_repository "https://github.com/disconnect821/orderserviceplatform/blob/main/src/main/java/com/example/orderplatform/order/OrderRepository.java"
click node_order_model "https://github.com/disconnect821/orderserviceplatform/blob/main/src/main/java/com/example/orderplatform/order/Order.java"
click node_order_items "https://github.com/disconnect821/orderserviceplatform/blob/main/src/main/java/com/example/orderplatform/order/OrderItem.java"
click node_idempotency_service "https://github.com/disconnect821/orderserviceplatform/blob/main/src/main/java/com/example/orderplatform/order/OrderService.java"
click node_idempotency_repository "https://github.com/disconnect821/orderserviceplatform/blob/main/src/main/java/com/example/orderplatform/idempotency/IdempotencyKeyRepository.java"
click node_idempotency_model "https://github.com/disconnect821/orderserviceplatform/blob/main/src/main/java/com/example/orderplatform/idempotency/IdempotencyKey.java"
click node_schema "https://github.com/disconnect821/orderserviceplatform/blob/main/src/main/resources/db/migration/V1__init.sql"

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_product_api,node_order_api,node_client toneBlue
class node_product_service,node_product_repository,node_order_service,node_order_repository,node_order_model,node_order_items toneAmber
class node_idempotency_service,node_idempotency_repository,node_idempotency_model toneMint
class node_postgres,node_schema toneRose
```

## Components

### Client API

- [Product API](https://github.com/disconnect821/orderserviceplatform/blob/main/src/main/java/com/example/orderplatform/product/ProductController.java): `src/main/java/com/example/orderplatform/product/ProductController.java`
- [Order API](https://github.com/disconnect821/orderserviceplatform/blob/main/src/main/java/com/example/orderplatform/order/OrderController.java): `src/main/java/com/example/orderplatform/order/OrderController.java`

### Order and Inventory

- [Product management](https://github.com/disconnect821/orderserviceplatform/blob/main/src/main/java/com/example/orderplatform/product/ProductService.java): `src/main/java/com/example/orderplatform/product/ProductService.java`
- [Product locking](https://github.com/disconnect821/orderserviceplatform/blob/main/src/main/java/com/example/orderplatform/product/ProductRepository.java): `src/main/java/com/example/orderplatform/product/ProductRepository.java`
- [Order processing](https://github.com/disconnect821/orderserviceplatform/blob/main/src/main/java/com/example/orderplatform/order/OrderService.java): `src/main/java/com/example/orderplatform/order/OrderService.java`
- [Order storage](https://github.com/disconnect821/orderserviceplatform/blob/main/src/main/java/com/example/orderplatform/order/OrderRepository.java): `src/main/java/com/example/orderplatform/order/OrderRepository.java`
- [Order model](https://github.com/disconnect821/orderserviceplatform/blob/main/src/main/java/com/example/orderplatform/order/Order.java): `src/main/java/com/example/orderplatform/order/Order.java`
- [Order items](https://github.com/disconnect821/orderserviceplatform/blob/main/src/main/java/com/example/orderplatform/order/OrderItem.java): `src/main/java/com/example/orderplatform/order/OrderItem.java`

### Idempotency

- [Key validation](https://github.com/disconnect821/orderserviceplatform/blob/main/src/main/java/com/example/orderplatform/order/OrderService.java): `src/main/java/com/example/orderplatform/order/OrderService.java`
- [Key repository](https://github.com/disconnect821/orderserviceplatform/blob/main/src/main/java/com/example/orderplatform/idempotency/IdempotencyKeyRepository.java): `src/main/java/com/example/orderplatform/idempotency/IdempotencyKeyRepository.java`
- [Key record](https://github.com/disconnect821/orderserviceplatform/blob/main/src/main/java/com/example/orderplatform/idempotency/IdempotencyKey.java): `src/main/java/com/example/orderplatform/idempotency/IdempotencyKey.java`

### Persistence

- **PostgreSQL**
- [Flyway schema](https://github.com/disconnect821/orderserviceplatform/blob/main/src/main/resources/db/migration/V1__init.sql): `src/main/resources/db/migration/V1__init.sql`

### Other components

- **API client**

## Connections

- API client → Product API: creates products (evidence: `README.md`)
- API client → Order API: submits orders (evidence: `README.md`)
- API client → Order API: retrieves orders (evidence: `README.md`)
- Order processing → Key repository: stores keys (evidence: `README.md`)
- Order processing → Product locking: locks products (evidence: `README.md`)
- Product API → PostgreSQL: persists products
- Order API → PostgreSQL: persists orders
- Flyway schema → PostgreSQL: defines schema (evidence: `README.md`)
