# helena141/frozeenfood-api architecture

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

- Interactive diagram: https://gitdiagram.com/helena141/frozeenfood-api
- Repository: https://github.com/helena141/frozeenfood-api

## Overview

This is a Spring-based frozen-food B2B/B2C sales and operations API. Customers and staff use REST endpoints to authenticate, browse products, manage inventory and orders, arrange deliveries, and access payments, invoices, and reports. The sampled order service uses FEFO stock deduction; delivery planning is a distinct operational stage. Product, order, and delivery records are represented by JPA entities and repositories. Several listed capabilities are represented from the tree but their wiring was not sampled, so those links are marked unverified.

Main entry points: [`src/main/java/com/lezzat/b2b2c/frozenfood/repository`](https://github.com/helena141/frozeenfood-api/tree/main/src/main/java/com/lezzat/b2b2c/frozenfood/repository) (JPA repositories), [`src/main/java/com/lezzat/b2b2c/frozenfood/service/OrderB2CService.java`](https://github.com/helena141/frozeenfood-api/blob/main/src/main/java/com/lezzat/b2b2c/frozenfood/service/OrderB2CService.java) (B2C ordering), [`src/main/java/com/lezzat/b2b2c/frozenfood/service/ProductService.java`](https://github.com/helena141/frozeenfood-api/blob/main/src/main/java/com/lezzat/b2b2c/frozenfood/service/ProductService.java) (Product service), [`src/main/java/com/lezzat/b2b2c/frozenfood/service/DeliveryService.java`](https://github.com/helena141/frozeenfood-api/blob/main/src/main/java/com/lezzat/b2b2c/frozenfood/service/DeliveryService.java) (Delivery planning)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_access["API and identity"]
  node_catalog_api["Product API"]
  node_customer_api["Customer API"]
  node_auth_api["Authentication API"]
  node_security["JWT security"]
end

subgraph group_commerce["Catalog and sales"]
  node_product_service["Product service"]
  node_order_service["B2C ordering"]
  node_b2b_orders["B2B orders<br/>[OrderService.java]"]
  node_pricing["Tiered pricing"]
  node_domain["Domain records"]
  node_repositories["JPA repositories"]
end

subgraph group_operations["Inventory and delivery"]
  node_inventory_api["Inventory API"]
  node_fefo["FEFO stock"]
  node_batch_service["Batch management"]
  node_delivery_api["Delivery API"]
  node_delivery_service["Delivery planning"]
  node_delivery_planner["Delivery planner"]
  node_smart_delivery["Route distance"]
  node_route_client["Route client"]
end

subgraph group_backoffice["Payments and reporting"]
  node_payment["Payment processing"]
  node_invoice["Invoice PDF"]
  node_reports["Sales reports<br/>[ReportService.java]"]
end

node_users(("Customers and staff"))

node_users -.->|"requests"| node_catalog_api
node_users -.->|"requests"| node_customer_api
node_users -.->|"authenticates"| node_auth_api
node_users -.->|"manages delivery"| node_delivery_api
node_catalog_api -->|"delegates to"| node_product_service
node_customer_api -->|"maps customer data"| node_domain
node_auth_api -.->|"uses identity"| node_security
node_product_service -->|"reads and writes"| node_repositories
node_product_service -.->|"manages tier prices"| node_pricing
node_order_service -->|"deducts stock"| node_fefo
node_order_service -->|"reads and writes"| node_repositories
node_order_service -->|"builds order records"| node_domain
node_b2b_orders -.->|"persists orders"| node_repositories
node_inventory_api -->|"uses stock service"| node_fefo
node_fefo -->|"loads batches"| node_repositories
node_batch_service -.->|"manages batches"| node_repositories
node_delivery_api -.->|"delegates to"| node_delivery_service
node_delivery_service -->|"plans delivery"| node_delivery_planner
node_delivery_service -->|"reads and writes"| node_repositories
node_smart_delivery -->|"requests distance"| node_route_client
node_delivery_planner -.->|"uses route estimate"| node_smart_delivery
node_payment -.->|"stores payments"| node_repositories
node_invoice -.->|"reads order data"| node_repositories
node_reports -.->|"queries sales"| node_repositories

click node_catalog_api "https://github.com/helena141/frozeenfood-api/blob/main/src/main/java/com/lezzat/b2b2c/frozenfood/controller/ProductController.java"
click node_customer_api "https://github.com/helena141/frozeenfood-api/blob/main/src/main/java/com/lezzat/b2b2c/frozenfood/controller/CustomerController.java"
click node_auth_api "https://github.com/helena141/frozeenfood-api/blob/main/src/main/java/com/lezzat/b2b2c/frozenfood/controller/AuthController.java"
click node_security "https://github.com/helena141/frozeenfood-api/tree/main/src/main/java/com/lezzat/b2b2c/frozenfood/security"
click node_product_service "https://github.com/helena141/frozeenfood-api/blob/main/src/main/java/com/lezzat/b2b2c/frozenfood/service/ProductService.java"
click node_order_service "https://github.com/helena141/frozeenfood-api/blob/main/src/main/java/com/lezzat/b2b2c/frozenfood/service/OrderB2CService.java"
click node_b2b_orders "https://github.com/helena141/frozeenfood-api/blob/main/src/main/java/com/lezzat/b2b2c/frozenfood/service/OrderService.java"
click node_pricing "https://github.com/helena141/frozeenfood-api/blob/main/src/main/java/com/lezzat/b2b2c/frozenfood/service/TieringPriceService.java"
click node_inventory_api "https://github.com/helena141/frozeenfood-api/blob/main/src/main/java/com/lezzat/b2b2c/frozenfood/controller/InventoryController.java"
click node_fefo "https://github.com/helena141/frozeenfood-api/blob/main/src/main/java/com/lezzat/b2b2c/frozenfood/service/core/FefoInventoryService.java"
click node_batch_service "https://github.com/helena141/frozeenfood-api/blob/main/src/main/java/com/lezzat/b2b2c/frozenfood/service/ProductBatchService.java"
click node_delivery_api "https://github.com/helena141/frozeenfood-api/blob/main/src/main/java/com/lezzat/b2b2c/frozenfood/controller/DeliveryController.java"
click node_delivery_service "https://github.com/helena141/frozeenfood-api/blob/main/src/main/java/com/lezzat/b2b2c/frozenfood/service/DeliveryService.java"
click node_delivery_planner "https://github.com/helena141/frozeenfood-api/blob/main/src/main/java/com/lezzat/b2b2c/frozenfood/service/core/DeliveryPlanner.java"
click node_smart_delivery "https://github.com/helena141/frozeenfood-api/blob/main/src/main/java/com/lezzat/b2b2c/frozenfood/service/core/SmartDeliveryService.java"
click node_route_client "https://github.com/helena141/frozeenfood-api/blob/main/src/main/java/com/lezzat/b2b2c/frozenfood/service/core/RouteDistanceClient.java"
click node_payment "https://github.com/helena141/frozeenfood-api/blob/main/src/main/java/com/lezzat/b2b2c/frozenfood/service/PaymentService.java"
click node_invoice "https://github.com/helena141/frozeenfood-api/blob/main/src/main/java/com/lezzat/b2b2c/frozenfood/service/NotaPdfService.java"
click node_reports "https://github.com/helena141/frozeenfood-api/blob/main/src/main/java/com/lezzat/b2b2c/frozenfood/service/ReportService.java"
click node_domain "https://github.com/helena141/frozeenfood-api/tree/main/src/main/java/com/lezzat/b2b2c/frozenfood/entity"
click node_repositories "https://github.com/helena141/frozeenfood-api/tree/main/src/main/java/com/lezzat/b2b2c/frozenfood/repository"

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_catalog_api,node_customer_api,node_auth_api,node_security toneBlue
class node_product_service,node_order_service,node_b2b_orders,node_pricing,node_domain,node_repositories toneAmber
class node_inventory_api,node_fefo,node_batch_service,node_delivery_api,node_delivery_service,node_delivery_planner,node_smart_delivery,node_route_client toneMint
class node_payment,node_invoice,node_reports toneRose
class node_users toneIndigo
```

## Components

### API and identity

- [Product API](https://github.com/helena141/frozeenfood-api/blob/main/src/main/java/com/lezzat/b2b2c/frozenfood/controller/ProductController.java): `src/main/java/com/lezzat/b2b2c/frozenfood/controller/ProductController.java`
- [Customer API](https://github.com/helena141/frozeenfood-api/blob/main/src/main/java/com/lezzat/b2b2c/frozenfood/controller/CustomerController.java): `src/main/java/com/lezzat/b2b2c/frozenfood/controller/CustomerController.java`
- [Authentication API](https://github.com/helena141/frozeenfood-api/blob/main/src/main/java/com/lezzat/b2b2c/frozenfood/controller/AuthController.java): `src/main/java/com/lezzat/b2b2c/frozenfood/controller/AuthController.java`
- [JWT security](https://github.com/helena141/frozeenfood-api/tree/main/src/main/java/com/lezzat/b2b2c/frozenfood/security): `src/main/java/com/lezzat/b2b2c/frozenfood/security`

### Catalog and sales

- [Product service](https://github.com/helena141/frozeenfood-api/blob/main/src/main/java/com/lezzat/b2b2c/frozenfood/service/ProductService.java): `src/main/java/com/lezzat/b2b2c/frozenfood/service/ProductService.java`
- [B2C ordering](https://github.com/helena141/frozeenfood-api/blob/main/src/main/java/com/lezzat/b2b2c/frozenfood/service/OrderB2CService.java): `src/main/java/com/lezzat/b2b2c/frozenfood/service/OrderB2CService.java`
- [B2B orders](https://github.com/helena141/frozeenfood-api/blob/main/src/main/java/com/lezzat/b2b2c/frozenfood/service/OrderService.java): `src/main/java/com/lezzat/b2b2c/frozenfood/service/OrderService.java`
- [Tiered pricing](https://github.com/helena141/frozeenfood-api/blob/main/src/main/java/com/lezzat/b2b2c/frozenfood/service/TieringPriceService.java): `src/main/java/com/lezzat/b2b2c/frozenfood/service/TieringPriceService.java`
- [Domain records](https://github.com/helena141/frozeenfood-api/tree/main/src/main/java/com/lezzat/b2b2c/frozenfood/entity): `src/main/java/com/lezzat/b2b2c/frozenfood/entity`
- [JPA repositories](https://github.com/helena141/frozeenfood-api/tree/main/src/main/java/com/lezzat/b2b2c/frozenfood/repository): `src/main/java/com/lezzat/b2b2c/frozenfood/repository`

### Inventory and delivery

- [Inventory API](https://github.com/helena141/frozeenfood-api/blob/main/src/main/java/com/lezzat/b2b2c/frozenfood/controller/InventoryController.java): `src/main/java/com/lezzat/b2b2c/frozenfood/controller/InventoryController.java`
- [FEFO stock](https://github.com/helena141/frozeenfood-api/blob/main/src/main/java/com/lezzat/b2b2c/frozenfood/service/core/FefoInventoryService.java): `src/main/java/com/lezzat/b2b2c/frozenfood/service/core/FefoInventoryService.java`
- [Batch management](https://github.com/helena141/frozeenfood-api/blob/main/src/main/java/com/lezzat/b2b2c/frozenfood/service/ProductBatchService.java): `src/main/java/com/lezzat/b2b2c/frozenfood/service/ProductBatchService.java`
- [Delivery API](https://github.com/helena141/frozeenfood-api/blob/main/src/main/java/com/lezzat/b2b2c/frozenfood/controller/DeliveryController.java): `src/main/java/com/lezzat/b2b2c/frozenfood/controller/DeliveryController.java`
- [Delivery planning](https://github.com/helena141/frozeenfood-api/blob/main/src/main/java/com/lezzat/b2b2c/frozenfood/service/DeliveryService.java): `src/main/java/com/lezzat/b2b2c/frozenfood/service/DeliveryService.java`
- [Delivery planner](https://github.com/helena141/frozeenfood-api/blob/main/src/main/java/com/lezzat/b2b2c/frozenfood/service/core/DeliveryPlanner.java): `src/main/java/com/lezzat/b2b2c/frozenfood/service/core/DeliveryPlanner.java`
- [Route distance](https://github.com/helena141/frozeenfood-api/blob/main/src/main/java/com/lezzat/b2b2c/frozenfood/service/core/SmartDeliveryService.java): `src/main/java/com/lezzat/b2b2c/frozenfood/service/core/SmartDeliveryService.java`
- [Route client](https://github.com/helena141/frozeenfood-api/blob/main/src/main/java/com/lezzat/b2b2c/frozenfood/service/core/RouteDistanceClient.java): `src/main/java/com/lezzat/b2b2c/frozenfood/service/core/RouteDistanceClient.java`

### Payments and reporting

- [Payment processing](https://github.com/helena141/frozeenfood-api/blob/main/src/main/java/com/lezzat/b2b2c/frozenfood/service/PaymentService.java): `src/main/java/com/lezzat/b2b2c/frozenfood/service/PaymentService.java`
- [Invoice PDF](https://github.com/helena141/frozeenfood-api/blob/main/src/main/java/com/lezzat/b2b2c/frozenfood/service/NotaPdfService.java): `src/main/java/com/lezzat/b2b2c/frozenfood/service/NotaPdfService.java`
- [Sales reports](https://github.com/helena141/frozeenfood-api/blob/main/src/main/java/com/lezzat/b2b2c/frozenfood/service/ReportService.java): `src/main/java/com/lezzat/b2b2c/frozenfood/service/ReportService.java`

### Other components

- **Customers and staff**

## Connections

- Customers and staff → Product API: requests
- Customers and staff → Customer API: requests
- Customers and staff → Authentication API: authenticates
- Customers and staff → Delivery API: manages delivery
- Product API → Product service: delegates to (evidence: `src/main/java/com/lezzat/b2b2c/frozenfood/controller/ProductController.java`)
- Customer API → Domain records: maps customer data (evidence: `src/main/java/com/lezzat/b2b2c/frozenfood/controller/CustomerController.java`)
- Authentication API → JWT security: uses identity
- Product service → JPA repositories: reads and writes (evidence: `src/main/java/com/lezzat/b2b2c/frozenfood/service/ProductService.java`)
- Product service → Tiered pricing: manages tier prices
- B2C ordering → FEFO stock: deducts stock (evidence: `src/main/java/com/lezzat/b2b2c/frozenfood/service/OrderB2CService.java`)
- B2C ordering → JPA repositories: reads and writes (evidence: `src/main/java/com/lezzat/b2b2c/frozenfood/service/OrderB2CService.java`)
- B2C ordering → Domain records: builds order records (evidence: `src/main/java/com/lezzat/b2b2c/frozenfood/service/OrderB2CService.java`)
- B2B orders → JPA repositories: persists orders
- Inventory API → FEFO stock: uses stock service (evidence: `src/main/java/com/lezzat/b2b2c/frozenfood/controller/InventoryController.java`)
- FEFO stock → JPA repositories: loads batches (evidence: `src/main/java/com/lezzat/b2b2c/frozenfood/service/core/FefoInventoryService.java`)
- Batch management → JPA repositories: manages batches (evidence: `src/main/java/com/lezzat/b2b2c/frozenfood/service/ProductBatchService.java`)
- Delivery API → Delivery planning: delegates to (evidence: `src/main/java/com/lezzat/b2b2c/frozenfood/controller/DeliveryController.java`)
- Delivery planning → Delivery planner: plans delivery (evidence: `src/main/java/com/lezzat/b2b2c/frozenfood/service/DeliveryService.java`)
- Delivery planning → JPA repositories: reads and writes (evidence: `src/main/java/com/lezzat/b2b2c/frozenfood/service/DeliveryService.java`)
- Route distance → Route client: requests distance (evidence: `src/main/java/com/lezzat/b2b2c/frozenfood/service/core/SmartDeliveryService.java`)
- Delivery planner → Route distance: uses route estimate
- Payment processing → JPA repositories: stores payments
- Invoice PDF → JPA repositories: reads order data (evidence: `src/main/java/com/lezzat/b2b2c/frozenfood/service/NotaPdfService.java`)
- Sales reports → JPA repositories: queries sales (evidence: `src/main/java/com/lezzat/b2b2c/frozenfood/service/ReportService.java`)
