# demoner21/fat_delivery architecture

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

- Interactive diagram: https://gitdiagram.com/demoner21/fat_delivery
- Repository: https://github.com/demoner21/fat_delivery

## Overview

Delivery Tech API is a Spring Boot delivery backend. Clients use REST endpoints to authenticate and manage customers, restaurants, products, and orders; order operations include calculating totals and changing order status. Controllers delegate to service contracts and implementations, with repositories and JPA models providing persistence. Restaurant endpoints also delegate product listing to the product service. The README identifies H2 as the database; most controller and implementation sources were not excerpted, so their internal calls are shown only where the source index or excerpts support them.

Main entry points: [`src/main/java/com/deliverytech/delivery_api/service/impl/PedidoServiceImpl.java`](https://github.com/demoner21/fat_delivery/blob/main/src/main/java/com/deliverytech/delivery_api/service/impl/PedidoServiceImpl.java) (Order service), [`src/main/java/com/deliverytech/delivery_api/controller/AuthController.java`](https://github.com/demoner21/fat_delivery/blob/main/src/main/java/com/deliverytech/delivery_api/controller/AuthController.java) (Authentication API), [`src/main/java/com/deliverytech/delivery_api/controller/RestauranteController.java`](https://github.com/demoner21/fat_delivery/blob/main/src/main/java/com/deliverytech/delivery_api/controller/RestauranteController.java) (Restaurant API), [`src/main/java/com/deliverytech/delivery_api/controller/PedidoController.java`](https://github.com/demoner21/fat_delivery/blob/main/src/main/java/com/deliverytech/delivery_api/controller/PedidoController.java) (Order API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["REST API"]
  node_auth_api["Authentication API"]
  node_customer_api["Customer API"]
  node_restaurant_api["Restaurant API"]
  node_product_api["Product API"]
  node_order_api["Order API"]
  node_health_api["Health endpoint"]
  node_api_dtos["Request and response DTOs"]
end

subgraph group_domain["Delivery domains"]
  node_customer_service["Customer service"]
  node_restaurant_service["Restaurant service"]
  node_product_service["Product service"]
  node_order_service["Order service"]
  node_delivery_features["Delivery lookup and fees"]
  node_domain_models["Delivery entities"]
end

subgraph group_security["Identity and security"]
  node_auth_service["Authentication service<br/>[AuthService.java]"]
  node_jwt["JWT utilities<br/>[JwtUtil.java]"]
  node_jwt_filter["JWT request filter"]
end

subgraph group_persistence["Persistence"]
  node_customer_repo["Customer repository"]
  node_restaurant_repo["Restaurant repository"]
  node_product_repo["Product repository"]
  node_order_repo["Order repository"]
  node_user_repo["User repository"]
  node_h2[("H2 database")]
end

node_clients(("API clients"))

node_clients -->|"calls"| node_auth_api
node_clients -->|"calls"| node_customer_api
node_clients -->|"calls"| node_restaurant_api
node_clients -->|"calls"| node_product_api
node_clients -->|"calls"| node_order_api
node_clients -->|"checks"| node_health_api
node_auth_api -->|"delegates to"| node_auth_service
node_auth_api -->|"uses"| node_jwt
node_auth_api -->|"accepts and returns"| node_api_dtos
node_customer_api -->|"delegates to"| node_customer_service
node_restaurant_api -->|"delegates to"| node_restaurant_service
node_restaurant_api -->|"lists products via"| node_product_service
node_restaurant_api -->|"accepts and returns"| node_api_dtos
node_product_api -->|"delegates to"| node_product_service
node_order_api -->|"delegates to"| node_order_service
node_order_api -->|"accepts and returns"| node_api_dtos
node_auth_service -->|"reads and saves"| node_user_repo
node_auth_service -->|"creates user"| node_domain_models
node_order_service -->|"reads and writes"| node_order_repo
node_order_service -->|"looks up customer"| node_customer_repo
node_order_service -->|"looks up products"| node_product_repo
node_order_service -->|"looks up restaurant"| node_restaurant_repo
node_restaurant_service -->|"persists restaurants"| node_restaurant_repo
node_order_repo -.->|"persists through JPA"| node_h2
node_customer_repo -.->|"persists through JPA"| node_h2
node_restaurant_repo -.->|"persists through JPA"| node_h2
node_product_repo -.->|"persists through JPA"| node_h2
node_user_repo -.->|"persists through JPA"| node_h2
node_jwt_filter -.->|"validates tokens"| node_jwt
node_restaurant_service -->|"provides fee and nearby lookup"| node_delivery_features

click node_auth_api "https://github.com/demoner21/fat_delivery/blob/main/src/main/java/com/deliverytech/delivery_api/controller/AuthController.java"
click node_customer_api "https://github.com/demoner21/fat_delivery/blob/main/src/main/java/com/deliverytech/delivery_api/controller/ClienteController.java"
click node_restaurant_api "https://github.com/demoner21/fat_delivery/blob/main/src/main/java/com/deliverytech/delivery_api/controller/RestauranteController.java"
click node_product_api "https://github.com/demoner21/fat_delivery/blob/main/src/main/java/com/deliverytech/delivery_api/controller/ProdutoController.java"
click node_order_api "https://github.com/demoner21/fat_delivery/blob/main/src/main/java/com/deliverytech/delivery_api/controller/PedidoController.java"
click node_health_api "https://github.com/demoner21/fat_delivery/blob/main/src/main/java/com/deliverytech/delivery_api/controller/HealthController.java"
click node_auth_service "https://github.com/demoner21/fat_delivery/blob/main/src/main/java/com/deliverytech/delivery_api/service/AuthService.java"
click node_jwt "https://github.com/demoner21/fat_delivery/blob/main/src/main/java/com/deliverytech/delivery_api/security/JwtUtil.java"
click node_jwt_filter "https://github.com/demoner21/fat_delivery/blob/main/src/main/java/com/deliverytech/delivery_api/security/JwtAuthenticationFilter.java"
click node_customer_service "https://github.com/demoner21/fat_delivery/tree/main/src/main/java/com/deliverytech/delivery_api/service"
click node_restaurant_service "https://github.com/demoner21/fat_delivery/blob/main/src/main/java/com/deliverytech/delivery_api/service/impl/RestauranteServiceImpl.java"
click node_product_service "https://github.com/demoner21/fat_delivery/blob/main/src/main/java/com/deliverytech/delivery_api/service/ProdutoService.java"
click node_order_service "https://github.com/demoner21/fat_delivery/blob/main/src/main/java/com/deliverytech/delivery_api/service/impl/PedidoServiceImpl.java"
click node_delivery_features "https://github.com/demoner21/fat_delivery/blob/main/src/main/java/com/deliverytech/delivery_api/service/RestauranteService.java"
click node_domain_models "https://github.com/demoner21/fat_delivery/tree/main/src/main/java/com/deliverytech/delivery_api/model"
click node_api_dtos "https://github.com/demoner21/fat_delivery/tree/main/src/main/java/com/deliverytech/delivery_api/dto"
click node_customer_repo "https://github.com/demoner21/fat_delivery/blob/main/src/main/java/com/deliverytech/delivery_api/repository/ClienteRepository.java"
click node_restaurant_repo "https://github.com/demoner21/fat_delivery/blob/main/src/main/java/com/deliverytech/delivery_api/repository/RestauranteRepository.java"
click node_product_repo "https://github.com/demoner21/fat_delivery/blob/main/src/main/java/com/deliverytech/delivery_api/repository/ProdutoRepository.java"
click node_order_repo "https://github.com/demoner21/fat_delivery/blob/main/src/main/java/com/deliverytech/delivery_api/repository/PedidoRepository.java"
click node_user_repo "https://github.com/demoner21/fat_delivery/blob/main/src/main/java/com/deliverytech/delivery_api/repository/UsuarioRepository.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_auth_api,node_customer_api,node_restaurant_api,node_product_api,node_order_api,node_health_api,node_api_dtos,node_clients toneBlue
class node_customer_service,node_restaurant_service,node_product_service,node_order_service,node_delivery_features,node_domain_models toneAmber
class node_auth_service,node_jwt,node_jwt_filter toneMint
class node_customer_repo,node_restaurant_repo,node_product_repo,node_order_repo,node_user_repo,node_h2 toneRose
```

## Components

### REST API

- [Authentication API](https://github.com/demoner21/fat_delivery/blob/main/src/main/java/com/deliverytech/delivery_api/controller/AuthController.java): `src/main/java/com/deliverytech/delivery_api/controller/AuthController.java`
- [Customer API](https://github.com/demoner21/fat_delivery/blob/main/src/main/java/com/deliverytech/delivery_api/controller/ClienteController.java): `src/main/java/com/deliverytech/delivery_api/controller/ClienteController.java`
- [Restaurant API](https://github.com/demoner21/fat_delivery/blob/main/src/main/java/com/deliverytech/delivery_api/controller/RestauranteController.java): `src/main/java/com/deliverytech/delivery_api/controller/RestauranteController.java`
- [Product API](https://github.com/demoner21/fat_delivery/blob/main/src/main/java/com/deliverytech/delivery_api/controller/ProdutoController.java): `src/main/java/com/deliverytech/delivery_api/controller/ProdutoController.java`
- [Order API](https://github.com/demoner21/fat_delivery/blob/main/src/main/java/com/deliverytech/delivery_api/controller/PedidoController.java): `src/main/java/com/deliverytech/delivery_api/controller/PedidoController.java`
- [Health endpoint](https://github.com/demoner21/fat_delivery/blob/main/src/main/java/com/deliverytech/delivery_api/controller/HealthController.java): `src/main/java/com/deliverytech/delivery_api/controller/HealthController.java`
- [Request and response DTOs](https://github.com/demoner21/fat_delivery/tree/main/src/main/java/com/deliverytech/delivery_api/dto): `src/main/java/com/deliverytech/delivery_api/dto`

### Delivery domains

- [Customer service](https://github.com/demoner21/fat_delivery/tree/main/src/main/java/com/deliverytech/delivery_api/service): `src/main/java/com/deliverytech/delivery_api/service`
- [Restaurant service](https://github.com/demoner21/fat_delivery/blob/main/src/main/java/com/deliverytech/delivery_api/service/impl/RestauranteServiceImpl.java): `src/main/java/com/deliverytech/delivery_api/service/impl/RestauranteServiceImpl.java`
- [Product service](https://github.com/demoner21/fat_delivery/blob/main/src/main/java/com/deliverytech/delivery_api/service/ProdutoService.java): `src/main/java/com/deliverytech/delivery_api/service/ProdutoService.java`
- [Order service](https://github.com/demoner21/fat_delivery/blob/main/src/main/java/com/deliverytech/delivery_api/service/impl/PedidoServiceImpl.java): `src/main/java/com/deliverytech/delivery_api/service/impl/PedidoServiceImpl.java`
- [Delivery lookup and fees](https://github.com/demoner21/fat_delivery/blob/main/src/main/java/com/deliverytech/delivery_api/service/RestauranteService.java): `src/main/java/com/deliverytech/delivery_api/service/RestauranteService.java`
- [Delivery entities](https://github.com/demoner21/fat_delivery/tree/main/src/main/java/com/deliverytech/delivery_api/model): `src/main/java/com/deliverytech/delivery_api/model`

### Identity and security

- [Authentication service](https://github.com/demoner21/fat_delivery/blob/main/src/main/java/com/deliverytech/delivery_api/service/AuthService.java): `src/main/java/com/deliverytech/delivery_api/service/AuthService.java`
- [JWT utilities](https://github.com/demoner21/fat_delivery/blob/main/src/main/java/com/deliverytech/delivery_api/security/JwtUtil.java): `src/main/java/com/deliverytech/delivery_api/security/JwtUtil.java`
- [JWT request filter](https://github.com/demoner21/fat_delivery/blob/main/src/main/java/com/deliverytech/delivery_api/security/JwtAuthenticationFilter.java): `src/main/java/com/deliverytech/delivery_api/security/JwtAuthenticationFilter.java`

### Persistence

- [Customer repository](https://github.com/demoner21/fat_delivery/blob/main/src/main/java/com/deliverytech/delivery_api/repository/ClienteRepository.java): `src/main/java/com/deliverytech/delivery_api/repository/ClienteRepository.java`
- [Restaurant repository](https://github.com/demoner21/fat_delivery/blob/main/src/main/java/com/deliverytech/delivery_api/repository/RestauranteRepository.java): `src/main/java/com/deliverytech/delivery_api/repository/RestauranteRepository.java`
- [Product repository](https://github.com/demoner21/fat_delivery/blob/main/src/main/java/com/deliverytech/delivery_api/repository/ProdutoRepository.java): `src/main/java/com/deliverytech/delivery_api/repository/ProdutoRepository.java`
- [Order repository](https://github.com/demoner21/fat_delivery/blob/main/src/main/java/com/deliverytech/delivery_api/repository/PedidoRepository.java): `src/main/java/com/deliverytech/delivery_api/repository/PedidoRepository.java`
- [User repository](https://github.com/demoner21/fat_delivery/blob/main/src/main/java/com/deliverytech/delivery_api/repository/UsuarioRepository.java): `src/main/java/com/deliverytech/delivery_api/repository/UsuarioRepository.java`
- **H2 database**

### Other components

- **API clients**

## Connections

- API clients → Authentication API: calls (evidence: `src/main/java/com/deliverytech/delivery_api/controller/AuthController.java`)
- API clients → Customer API: calls (evidence: `src/main/java/com/deliverytech/delivery_api/controller/ClienteController.java`)
- API clients → Restaurant API: calls (evidence: `src/main/java/com/deliverytech/delivery_api/controller/RestauranteController.java`)
- API clients → Product API: calls (evidence: `src/main/java/com/deliverytech/delivery_api/controller/ProdutoController.java`)
- API clients → Order API: calls (evidence: `src/main/java/com/deliverytech/delivery_api/controller/PedidoController.java`)
- API clients → Health endpoint: checks (evidence: `README.md`)
- Authentication API → Authentication service: delegates to (evidence: `src/main/java/com/deliverytech/delivery_api/controller/AuthController.java`)
- Authentication API → JWT utilities: uses (evidence: `src/main/java/com/deliverytech/delivery_api/controller/AuthController.java`)
- Authentication API → Request and response DTOs: accepts and returns (evidence: `src/main/java/com/deliverytech/delivery_api/controller/AuthController.java`)
- Customer API → Customer service: delegates to (evidence: `src/main/java/com/deliverytech/delivery_api/controller/ClienteController.java`)
- Restaurant API → Restaurant service: delegates to (evidence: `src/main/java/com/deliverytech/delivery_api/controller/RestauranteController.java`)
- Restaurant API → Product service: lists products via (evidence: `src/main/java/com/deliverytech/delivery_api/controller/RestauranteController.java`)
- Restaurant API → Request and response DTOs: accepts and returns (evidence: `src/main/java/com/deliverytech/delivery_api/controller/RestauranteController.java`)
- Product API → Product service: delegates to (evidence: `src/main/java/com/deliverytech/delivery_api/controller/ProdutoController.java`)
- Order API → Order service: delegates to (evidence: `src/main/java/com/deliverytech/delivery_api/controller/PedidoController.java`)
- Order API → Request and response DTOs: accepts and returns (evidence: `src/main/java/com/deliverytech/delivery_api/controller/PedidoController.java`)
- Authentication service → User repository: reads and saves (evidence: `src/main/java/com/deliverytech/delivery_api/service/AuthService.java`)
- Authentication service → Delivery entities: creates user (evidence: `src/main/java/com/deliverytech/delivery_api/service/AuthService.java`)
- Order service → Order repository: reads and writes (evidence: `src/main/java/com/deliverytech/delivery_api/service/impl/PedidoServiceImpl.java`)
- Order service → Customer repository: looks up customer (evidence: `src/main/java/com/deliverytech/delivery_api/service/impl/PedidoServiceImpl.java`)
- Order service → Product repository: looks up products (evidence: `src/main/java/com/deliverytech/delivery_api/service/impl/PedidoServiceImpl.java`)
- Order service → Restaurant repository: looks up restaurant (evidence: `src/main/java/com/deliverytech/delivery_api/service/impl/PedidoServiceImpl.java`)
- Restaurant service → Restaurant repository: persists restaurants (evidence: `src/main/java/com/deliverytech/delivery_api/service/impl/RestauranteServiceImpl.java`)
- Order repository → H2 database: persists through JPA
- Customer repository → H2 database: persists through JPA
- Restaurant repository → H2 database: persists through JPA
- Product repository → H2 database: persists through JPA
- User repository → H2 database: persists through JPA
- JWT request filter → JWT utilities: validates tokens (evidence: `src/main/java/com/deliverytech/delivery_api/security/JwtAuthenticationFilter.java`)
- Restaurant service → Delivery lookup and fees: provides fee and nearby lookup (evidence: `src/main/java/com/deliverytech/delivery_api/service/RestauranteService.java`)
