# ivanpopovicsiii/order-reservation-platform architecture

> Architecture diagram of the GitHub repository ivanpopovicsiii/order-reservation-platform, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-12). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/ivanpopovicsiii/order-reservation-platform
- Repository: https://github.com/ivanpopovicsiii/order-reservation-platform

## Overview

This is a single Spring Boot order-reservation backend. The documented primary workflow is an API client requesting orders, with the order service retrieving and shaping persisted orders; the tree and sampled code also show product-catalog and inventory-stock capabilities. The map separates API, domain services, persistence-facing repositories, and shared runtime concerns. Product and inventory routes are present in the tree, but their endpoint contracts and most controller behavior were not sampled; unsampled links are omitted.

Main entry points: [`src/main/java/com/ivanp/orderreservation/inventory/service/InventoryStockService.java`](https://github.com/ivanpopovicsiii/order-reservation-platform/blob/main/src/main/java/com/ivanp/orderreservation/inventory/service/InventoryStockService.java) (Inventory service), [`src/main/java/com/ivanp/orderreservation/order/service/OrderService.java`](https://github.com/ivanpopovicsiii/order-reservation-platform/blob/main/src/main/java/com/ivanp/orderreservation/order/service/OrderService.java) (Order service), [`src/main/java/com/ivanp/orderreservation/product/service/ProductService.java`](https://github.com/ivanpopovicsiii/order-reservation-platform/blob/main/src/main/java/com/ivanp/orderreservation/product/service/ProductService.java) (Product service), [`src/main/java/com/ivanp/orderreservation/product/repository/ProductRepository.java`](https://github.com/ivanpopovicsiii/order-reservation-platform/blob/main/src/main/java/com/ivanp/orderreservation/product/repository/ProductRepository.java) (Product repository)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["REST API"]
  node_order_controller["Order API"]
  node_product_controller["Product API"]
  node_inventory_controller["Inventory API"]
end

subgraph group_orders["Order Management"]
  node_order_service["Order service<br/>[OrderService.java]"]
  node_order_model["Orders and items<br/>[Order.java]"]
  node_order_contracts["Order contracts"]
  node_order_responses["Order responses<br/>[OrderResponse.java]"]
end

subgraph group_catalog["Catalog and Inventory"]
  node_product_service["Product service"]
  node_product_model["Product catalog<br/>[Product.java]"]
  node_product_contracts["Product contracts"]
  node_product_response["Product response"]
  node_inventory_service["Inventory service"]
  node_inventory_model["Stock records"]
  node_inventory_contracts["Stock contracts"]
  node_inventory_response["Stock response"]
end

subgraph group_runtime["Persistence and Runtime"]
  node_order_repository["Order repository"]
  node_product_repository["Product repository"]
  node_inventory_repository["Inventory repository"]
  node_database[("PostgreSQL")]
  node_migrations["Flyway migrations"]
  node_application["Spring Boot app"]
end

node_client(("API client"))

node_client -->|"requests orders"| node_order_controller
node_order_controller -->|"delegates to"| node_order_service
node_order_service -->|"queries and saves"| node_order_repository
node_order_service -->|"builds and maps"| node_order_model
node_order_service -->|"accepts"| node_order_contracts
node_order_service -->|"creates"| node_order_responses
node_order_repository -->|"persists"| node_order_model
node_product_controller -->|"delegates to"| node_product_service
node_product_service -->|"queries and saves"| node_product_repository
node_product_service -->|"builds and maps"| node_product_model
node_product_service -->|"accepts"| node_product_contracts
node_product_service -->|"creates"| node_product_response
node_product_repository -->|"persists"| node_product_model
node_inventory_controller -->|"delegates to"| node_inventory_service
node_inventory_service -->|"queries and saves"| node_inventory_repository
node_inventory_service -->|"checks product"| node_product_repository
node_inventory_service -->|"builds and maps"| node_inventory_model
node_inventory_service -->|"accepts"| node_inventory_contracts
node_inventory_service -->|"creates"| node_inventory_response
node_inventory_repository -->|"persists"| node_inventory_model
node_application -->|"runs with"| node_database
node_migrations -->|"changes schema"| node_database
node_order_repository -.->|"persists through JPA"| node_database
node_product_repository -.->|"persists through JPA"| node_database
node_inventory_repository -.->|"persists through JPA"| node_database

click node_order_controller "https://github.com/ivanpopovicsiii/order-reservation-platform/blob/main/src/main/java/com/ivanp/orderreservation/order/controller/OrderController.java"
click node_product_controller "https://github.com/ivanpopovicsiii/order-reservation-platform/blob/main/src/main/java/com/ivanp/orderreservation/product/controller/ProductController.java"
click node_inventory_controller "https://github.com/ivanpopovicsiii/order-reservation-platform/blob/main/src/main/java/com/ivanp/orderreservation/inventory/controller/InventoryStockController.java"
click node_order_service "https://github.com/ivanpopovicsiii/order-reservation-platform/blob/main/src/main/java/com/ivanp/orderreservation/order/service/OrderService.java"
click node_order_model "https://github.com/ivanpopovicsiii/order-reservation-platform/blob/main/src/main/java/com/ivanp/orderreservation/order/entity/Order.java"
click node_order_repository "https://github.com/ivanpopovicsiii/order-reservation-platform/blob/main/src/main/java/com/ivanp/orderreservation/order/repository/OrderRepository.java"
click node_order_contracts "https://github.com/ivanpopovicsiii/order-reservation-platform/blob/main/src/main/java/com/ivanp/orderreservation/order/request/CreateOrderRequest.java"
click node_order_responses "https://github.com/ivanpopovicsiii/order-reservation-platform/blob/main/src/main/java/com/ivanp/orderreservation/order/response/OrderResponse.java"
click node_product_service "https://github.com/ivanpopovicsiii/order-reservation-platform/blob/main/src/main/java/com/ivanp/orderreservation/product/service/ProductService.java"
click node_product_model "https://github.com/ivanpopovicsiii/order-reservation-platform/blob/main/src/main/java/com/ivanp/orderreservation/product/entity/Product.java"
click node_product_repository "https://github.com/ivanpopovicsiii/order-reservation-platform/blob/main/src/main/java/com/ivanp/orderreservation/product/repository/ProductRepository.java"
click node_product_contracts "https://github.com/ivanpopovicsiii/order-reservation-platform/blob/main/src/main/java/com/ivanp/orderreservation/product/request/CreateProductRequest.java"
click node_product_response "https://github.com/ivanpopovicsiii/order-reservation-platform/blob/main/src/main/java/com/ivanp/orderreservation/product/response/ProductResponse.java"
click node_inventory_service "https://github.com/ivanpopovicsiii/order-reservation-platform/blob/main/src/main/java/com/ivanp/orderreservation/inventory/service/InventoryStockService.java"
click node_inventory_model "https://github.com/ivanpopovicsiii/order-reservation-platform/blob/main/src/main/java/com/ivanp/orderreservation/inventory/entity/InventoryStock.java"
click node_inventory_repository "https://github.com/ivanpopovicsiii/order-reservation-platform/blob/main/src/main/java/com/ivanp/orderreservation/inventory/repository/InventoryRepository.java"
click node_inventory_contracts "https://github.com/ivanpopovicsiii/order-reservation-platform/blob/main/src/main/java/com/ivanp/orderreservation/inventory/request/CreateInventoryStockRequest.java"
click node_inventory_response "https://github.com/ivanpopovicsiii/order-reservation-platform/blob/main/src/main/java/com/ivanp/orderreservation/inventory/response/InventoryStockResponse.java"
click node_migrations "https://github.com/ivanpopovicsiii/order-reservation-platform/tree/main/src/main/resources/db/migration"
click node_application "https://github.com/ivanpopovicsiii/order-reservation-platform/blob/main/src/main/java/com/ivanp/orderreservation/OrderReservationPlatformApplication.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_product_controller,node_inventory_controller,node_client toneBlue
class node_order_service,node_order_model,node_order_contracts,node_order_responses toneAmber
class node_product_service,node_product_model,node_product_contracts,node_product_response,node_inventory_service,node_inventory_model,node_inventory_contracts,node_inventory_response toneMint
class node_order_repository,node_product_repository,node_inventory_repository,node_database,node_migrations,node_application toneRose
```

## Components

### REST API

- [Order API](https://github.com/ivanpopovicsiii/order-reservation-platform/blob/main/src/main/java/com/ivanp/orderreservation/order/controller/OrderController.java): `src/main/java/com/ivanp/orderreservation/order/controller/OrderController.java`
- [Product API](https://github.com/ivanpopovicsiii/order-reservation-platform/blob/main/src/main/java/com/ivanp/orderreservation/product/controller/ProductController.java): `src/main/java/com/ivanp/orderreservation/product/controller/ProductController.java`
- [Inventory API](https://github.com/ivanpopovicsiii/order-reservation-platform/blob/main/src/main/java/com/ivanp/orderreservation/inventory/controller/InventoryStockController.java): `src/main/java/com/ivanp/orderreservation/inventory/controller/InventoryStockController.java`

### Order Management

- [Order service](https://github.com/ivanpopovicsiii/order-reservation-platform/blob/main/src/main/java/com/ivanp/orderreservation/order/service/OrderService.java): `src/main/java/com/ivanp/orderreservation/order/service/OrderService.java`
- [Orders and items](https://github.com/ivanpopovicsiii/order-reservation-platform/blob/main/src/main/java/com/ivanp/orderreservation/order/entity/Order.java): `src/main/java/com/ivanp/orderreservation/order/entity/Order.java`
- [Order contracts](https://github.com/ivanpopovicsiii/order-reservation-platform/blob/main/src/main/java/com/ivanp/orderreservation/order/request/CreateOrderRequest.java): `src/main/java/com/ivanp/orderreservation/order/request/CreateOrderRequest.java`
- [Order responses](https://github.com/ivanpopovicsiii/order-reservation-platform/blob/main/src/main/java/com/ivanp/orderreservation/order/response/OrderResponse.java): `src/main/java/com/ivanp/orderreservation/order/response/OrderResponse.java`

### Catalog and Inventory

- [Product service](https://github.com/ivanpopovicsiii/order-reservation-platform/blob/main/src/main/java/com/ivanp/orderreservation/product/service/ProductService.java): `src/main/java/com/ivanp/orderreservation/product/service/ProductService.java`
- [Product catalog](https://github.com/ivanpopovicsiii/order-reservation-platform/blob/main/src/main/java/com/ivanp/orderreservation/product/entity/Product.java): `src/main/java/com/ivanp/orderreservation/product/entity/Product.java`
- [Product contracts](https://github.com/ivanpopovicsiii/order-reservation-platform/blob/main/src/main/java/com/ivanp/orderreservation/product/request/CreateProductRequest.java): `src/main/java/com/ivanp/orderreservation/product/request/CreateProductRequest.java`
- [Product response](https://github.com/ivanpopovicsiii/order-reservation-platform/blob/main/src/main/java/com/ivanp/orderreservation/product/response/ProductResponse.java): `src/main/java/com/ivanp/orderreservation/product/response/ProductResponse.java`
- [Inventory service](https://github.com/ivanpopovicsiii/order-reservation-platform/blob/main/src/main/java/com/ivanp/orderreservation/inventory/service/InventoryStockService.java): `src/main/java/com/ivanp/orderreservation/inventory/service/InventoryStockService.java`
- [Stock records](https://github.com/ivanpopovicsiii/order-reservation-platform/blob/main/src/main/java/com/ivanp/orderreservation/inventory/entity/InventoryStock.java): `src/main/java/com/ivanp/orderreservation/inventory/entity/InventoryStock.java`
- [Stock contracts](https://github.com/ivanpopovicsiii/order-reservation-platform/blob/main/src/main/java/com/ivanp/orderreservation/inventory/request/CreateInventoryStockRequest.java): `src/main/java/com/ivanp/orderreservation/inventory/request/CreateInventoryStockRequest.java`
- [Stock response](https://github.com/ivanpopovicsiii/order-reservation-platform/blob/main/src/main/java/com/ivanp/orderreservation/inventory/response/InventoryStockResponse.java): `src/main/java/com/ivanp/orderreservation/inventory/response/InventoryStockResponse.java`

### Persistence and Runtime

- [Order repository](https://github.com/ivanpopovicsiii/order-reservation-platform/blob/main/src/main/java/com/ivanp/orderreservation/order/repository/OrderRepository.java): `src/main/java/com/ivanp/orderreservation/order/repository/OrderRepository.java`
- [Product repository](https://github.com/ivanpopovicsiii/order-reservation-platform/blob/main/src/main/java/com/ivanp/orderreservation/product/repository/ProductRepository.java): `src/main/java/com/ivanp/orderreservation/product/repository/ProductRepository.java`
- [Inventory repository](https://github.com/ivanpopovicsiii/order-reservation-platform/blob/main/src/main/java/com/ivanp/orderreservation/inventory/repository/InventoryRepository.java): `src/main/java/com/ivanp/orderreservation/inventory/repository/InventoryRepository.java`
- **PostgreSQL**
- [Flyway migrations](https://github.com/ivanpopovicsiii/order-reservation-platform/tree/main/src/main/resources/db/migration): `src/main/resources/db/migration`
- [Spring Boot app](https://github.com/ivanpopovicsiii/order-reservation-platform/blob/main/src/main/java/com/ivanp/orderreservation/OrderReservationPlatformApplication.java): `src/main/java/com/ivanp/orderreservation/OrderReservationPlatformApplication.java`

### Other components

- **API client**

## Connections

- API client → Order API: requests orders (evidence: `README.md`)
- Order API → Order service: delegates to (evidence: `src/main/java/com/ivanp/orderreservation/order/controller/OrderController.java`)
- Order service → Order repository: queries and saves (evidence: `src/main/java/com/ivanp/orderreservation/order/service/OrderService.java`)
- Order service → Orders and items: builds and maps (evidence: `src/main/java/com/ivanp/orderreservation/order/service/OrderService.java`)
- Order service → Order contracts: accepts (evidence: `src/main/java/com/ivanp/orderreservation/order/service/OrderService.java`)
- Order service → Order responses: creates (evidence: `src/main/java/com/ivanp/orderreservation/order/service/OrderService.java`)
- Order repository → Orders and items: persists (evidence: `src/main/java/com/ivanp/orderreservation/order/repository/OrderRepository.java`)
- Product API → Product service: delegates to (evidence: `src/main/java/com/ivanp/orderreservation/product/controller/ProductController.java`)
- Product service → Product repository: queries and saves (evidence: `src/main/java/com/ivanp/orderreservation/product/service/ProductService.java`)
- Product service → Product catalog: builds and maps (evidence: `src/main/java/com/ivanp/orderreservation/product/service/ProductService.java`)
- Product service → Product contracts: accepts (evidence: `src/main/java/com/ivanp/orderreservation/product/service/ProductService.java`)
- Product service → Product response: creates (evidence: `src/main/java/com/ivanp/orderreservation/product/service/ProductService.java`)
- Product repository → Product catalog: persists (evidence: `src/main/java/com/ivanp/orderreservation/product/repository/ProductRepository.java`)
- Inventory API → Inventory service: delegates to (evidence: `src/main/java/com/ivanp/orderreservation/inventory/controller/InventoryStockController.java`)
- Inventory service → Inventory repository: queries and saves (evidence: `src/main/java/com/ivanp/orderreservation/inventory/service/InventoryStockService.java`)
- Inventory service → Product repository: checks product (evidence: `src/main/java/com/ivanp/orderreservation/inventory/service/InventoryStockService.java`)
- Inventory service → Stock records: builds and maps (evidence: `src/main/java/com/ivanp/orderreservation/inventory/service/InventoryStockService.java`)
- Inventory service → Stock contracts: accepts (evidence: `src/main/java/com/ivanp/orderreservation/inventory/service/InventoryStockService.java`)
- Inventory service → Stock response: creates (evidence: `src/main/java/com/ivanp/orderreservation/inventory/service/InventoryStockService.java`)
- Inventory repository → Stock records: persists (evidence: `src/main/java/com/ivanp/orderreservation/inventory/repository/InventoryRepository.java`)
- Spring Boot app → PostgreSQL: runs with (evidence: `README.md`)
- Flyway migrations → PostgreSQL: changes schema (evidence: `README.md`)
- Order repository → PostgreSQL: persists through JPA
- Product repository → PostgreSQL: persists through JPA
- Inventory repository → PostgreSQL: persists through JPA
