# theusinhoiost/delivery-api architecture

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

- Interactive diagram: https://gitdiagram.com/theusinhoiost/delivery-api
- Repository: https://github.com/theusinhoiost/delivery-api

## Overview

Delivery Tech API is a Spring Boot REST backend for customer, restaurant, product, and order management. A caller submits requests to domain controllers; the order workflow validates the customer, restaurant, and products, calculates totals, and persists the order. Separate branches cover catalog maintenance, authentication, and health/info endpoints. The README documents H2 in-memory storage and API capabilities; sampled source confirms order and restaurant service behavior, while several controller and service implementations were not sampled, so their internal wiring is represented only where supported by the module structure.

Main entry points: [`src/main/java/com/deliverytech/delivery_api/service/impl/PedidoServiceImpl.java`](https://github.com/theusinhoiost/delivery-api/blob/main/src/main/java/com/deliverytech/delivery_api/service/impl/PedidoServiceImpl.java) (Order workflow), [`src/main/java/com/deliverytech/delivery_api/entity`](https://github.com/theusinhoiost/delivery-api/tree/main/src/main/java/com/deliverytech/delivery_api/entity) (Domain entities), [`src/main/java/com/deliverytech/delivery_api/service/impl/ClienteServiceImpl.java`](https://github.com/theusinhoiost/delivery-api/blob/main/src/main/java/com/deliverytech/delivery_api/service/impl/ClienteServiceImpl.java) (Client management), [`src/main/java/com/deliverytech/delivery_api/service/impl/RestauranteServiceImpl.java`](https://github.com/theusinhoiost/delivery-api/blob/main/src/main/java/com/deliverytech/delivery_api/service/impl/RestauranteServiceImpl.java) (Restaurant catalog)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["HTTP API"]
  node_auth_controller["Auth endpoints"]
  node_client_controller["Client endpoints"]
  node_restaurant_controller["Restaurant endpoints"]
  node_product_controller["Product endpoints"]
  node_order_controller["Order endpoints"]
  node_health_controller["Health and info"]
  node_exception_handler["Error responses"]
  node_mapper["DTO mapping"]
end

subgraph group_domain["Delivery Domain"]
  node_client_service["Client management"]
  node_restaurant_service["Restaurant catalog"]
  node_product_service["Product catalog"]
  node_order_service["Order workflow"]
  node_model["Domain entities"]
end

subgraph group_identity["Identity &amp; Security"]
  node_auth_service["Authentication<br/>[AuthService.java]"]
  node_jwt_filter["JWT filter"]
  node_jwt_util["JWT utilities<br/>[JwtUtil.java]"]
  node_security_config["Security rules"]
end

subgraph group_persistence["Persistence"]
  node_client_repo["Client 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_caller(("API caller"))

node_caller -->|"sends auth requests"| node_auth_controller
node_caller -->|"sends client requests"| node_client_controller
node_caller -->|"sends restaurant requests"| node_restaurant_controller
node_caller -->|"sends product requests"| node_product_controller
node_caller -->|"sends order requests"| node_order_controller
node_caller -->|"checks status"| node_health_controller
node_auth_controller -->|"invokes auth"| node_auth_service
node_auth_service -->|"reads and saves users"| node_user_repo
node_security_config -->|"registers filter"| node_jwt_filter
node_jwt_filter -->|"validates tokens"| node_jwt_util
node_jwt_filter -->|"loads user"| node_auth_service
node_client_controller -->|"invokes client operations"| node_client_service
node_restaurant_controller -->|"invokes catalog operations"| node_restaurant_service
node_product_controller -->|"invokes product operations"| node_product_service
node_order_controller -->|"invokes order operations"| node_order_service
node_client_service -->|"reads and writes clients"| node_client_repo
node_restaurant_service -->|"reads and writes restaurants"| node_restaurant_repo
node_product_service -->|"reads and writes products"| node_product_repo
node_order_service -->|"validates customer"| node_client_repo
node_order_service -->|"validates restaurant"| node_restaurant_repo
node_order_service -->|"validates and prices items"| node_product_repo
node_order_service -->|"loads and saves orders"| node_order_repo
node_client_repo -->|"persists entities"| node_h2
node_restaurant_repo -->|"persists entities"| node_h2
node_product_repo -->|"persists entities"| node_h2
node_order_repo -->|"persists orders"| node_h2
node_user_repo -->|"persists users"| node_h2
node_order_service -->|"maps order responses"| node_mapper
node_restaurant_service -->|"converts restaurant data"| node_model
node_client_service -->|"manages client data"| node_model
node_product_service -->|"manages product data"| node_model
node_order_service -->|"builds order records"| node_model

click node_auth_controller "https://github.com/theusinhoiost/delivery-api/blob/main/src/main/java/com/deliverytech/delivery_api/controller/AuthController.java"
click node_client_controller "https://github.com/theusinhoiost/delivery-api/blob/main/src/main/java/com/deliverytech/delivery_api/controller/ClienteController.java"
click node_restaurant_controller "https://github.com/theusinhoiost/delivery-api/blob/main/src/main/java/com/deliverytech/delivery_api/controller/RestauranteController.java"
click node_product_controller "https://github.com/theusinhoiost/delivery-api/blob/main/src/main/java/com/deliverytech/delivery_api/controller/ProdutoController.java"
click node_order_controller "https://github.com/theusinhoiost/delivery-api/blob/main/src/main/java/com/deliverytech/delivery_api/controller/PedidoController.java"
click node_health_controller "https://github.com/theusinhoiost/delivery-api/blob/main/src/main/java/com/deliverytech/delivery_api/controller/HealthController.java"
click node_exception_handler "https://github.com/theusinhoiost/delivery-api/blob/main/src/main/java/com/deliverytech/delivery_api/exception/GlobalExceptionHandler.java"
click node_auth_service "https://github.com/theusinhoiost/delivery-api/blob/main/src/main/java/com/deliverytech/delivery_api/service/AuthService.java"
click node_jwt_filter "https://github.com/theusinhoiost/delivery-api/blob/main/src/main/java/com/deliverytech/delivery_api/security/JwtAuthenticationFilter.java"
click node_jwt_util "https://github.com/theusinhoiost/delivery-api/blob/main/src/main/java/com/deliverytech/delivery_api/security/JwtUtil.java"
click node_security_config "https://github.com/theusinhoiost/delivery-api/blob/main/src/main/java/com/deliverytech/delivery_api/config/SecurityConfig.java"
click node_client_service "https://github.com/theusinhoiost/delivery-api/blob/main/src/main/java/com/deliverytech/delivery_api/service/impl/ClienteServiceImpl.java"
click node_restaurant_service "https://github.com/theusinhoiost/delivery-api/blob/main/src/main/java/com/deliverytech/delivery_api/service/impl/RestauranteServiceImpl.java"
click node_product_service "https://github.com/theusinhoiost/delivery-api/blob/main/src/main/java/com/deliverytech/delivery_api/service/impl/ProdutoServiceImpl.java"
click node_order_service "https://github.com/theusinhoiost/delivery-api/blob/main/src/main/java/com/deliverytech/delivery_api/service/impl/PedidoServiceImpl.java"
click node_client_repo "https://github.com/theusinhoiost/delivery-api/blob/main/src/main/java/com/deliverytech/delivery_api/repository/ClienteRepository.java"
click node_restaurant_repo "https://github.com/theusinhoiost/delivery-api/blob/main/src/main/java/com/deliverytech/delivery_api/repository/RestauranteRepository.java"
click node_product_repo "https://github.com/theusinhoiost/delivery-api/blob/main/src/main/java/com/deliverytech/delivery_api/repository/ProdutoRepository.java"
click node_order_repo "https://github.com/theusinhoiost/delivery-api/blob/main/src/main/java/com/deliverytech/delivery_api/repository/PedidoRepository.java"
click node_user_repo "https://github.com/theusinhoiost/delivery-api/blob/main/src/main/java/com/deliverytech/delivery_api/repository/UsuarioRepository.java"
click node_model "https://github.com/theusinhoiost/delivery-api/tree/main/src/main/java/com/deliverytech/delivery_api/entity"
click node_mapper "https://github.com/theusinhoiost/delivery-api/blob/main/src/main/java/com/deliverytech/delivery_api/config/ModelMapperConfig.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_controller,node_client_controller,node_restaurant_controller,node_product_controller,node_order_controller,node_health_controller,node_exception_handler,node_mapper toneBlue
class node_client_service,node_restaurant_service,node_product_service,node_order_service,node_model toneAmber
class node_auth_service,node_jwt_filter,node_jwt_util,node_security_config,node_caller toneMint
class node_client_repo,node_restaurant_repo,node_product_repo,node_order_repo,node_user_repo,node_h2 toneRose
```

## Components

### HTTP API

- [Auth endpoints](https://github.com/theusinhoiost/delivery-api/blob/main/src/main/java/com/deliverytech/delivery_api/controller/AuthController.java): `src/main/java/com/deliverytech/delivery_api/controller/AuthController.java`
- [Client endpoints](https://github.com/theusinhoiost/delivery-api/blob/main/src/main/java/com/deliverytech/delivery_api/controller/ClienteController.java): `src/main/java/com/deliverytech/delivery_api/controller/ClienteController.java`
- [Restaurant endpoints](https://github.com/theusinhoiost/delivery-api/blob/main/src/main/java/com/deliverytech/delivery_api/controller/RestauranteController.java): `src/main/java/com/deliverytech/delivery_api/controller/RestauranteController.java`
- [Product endpoints](https://github.com/theusinhoiost/delivery-api/blob/main/src/main/java/com/deliverytech/delivery_api/controller/ProdutoController.java): `src/main/java/com/deliverytech/delivery_api/controller/ProdutoController.java`
- [Order endpoints](https://github.com/theusinhoiost/delivery-api/blob/main/src/main/java/com/deliverytech/delivery_api/controller/PedidoController.java): `src/main/java/com/deliverytech/delivery_api/controller/PedidoController.java`
- [Health and info](https://github.com/theusinhoiost/delivery-api/blob/main/src/main/java/com/deliverytech/delivery_api/controller/HealthController.java): `src/main/java/com/deliverytech/delivery_api/controller/HealthController.java`
- [Error responses](https://github.com/theusinhoiost/delivery-api/blob/main/src/main/java/com/deliverytech/delivery_api/exception/GlobalExceptionHandler.java): `src/main/java/com/deliverytech/delivery_api/exception/GlobalExceptionHandler.java`
- [DTO mapping](https://github.com/theusinhoiost/delivery-api/blob/main/src/main/java/com/deliverytech/delivery_api/config/ModelMapperConfig.java): `src/main/java/com/deliverytech/delivery_api/config/ModelMapperConfig.java`

### Delivery Domain

- [Client management](https://github.com/theusinhoiost/delivery-api/blob/main/src/main/java/com/deliverytech/delivery_api/service/impl/ClienteServiceImpl.java): `src/main/java/com/deliverytech/delivery_api/service/impl/ClienteServiceImpl.java`
- [Restaurant catalog](https://github.com/theusinhoiost/delivery-api/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 catalog](https://github.com/theusinhoiost/delivery-api/blob/main/src/main/java/com/deliverytech/delivery_api/service/impl/ProdutoServiceImpl.java): `src/main/java/com/deliverytech/delivery_api/service/impl/ProdutoServiceImpl.java`
- [Order workflow](https://github.com/theusinhoiost/delivery-api/blob/main/src/main/java/com/deliverytech/delivery_api/service/impl/PedidoServiceImpl.java): `src/main/java/com/deliverytech/delivery_api/service/impl/PedidoServiceImpl.java`
- [Domain entities](https://github.com/theusinhoiost/delivery-api/tree/main/src/main/java/com/deliverytech/delivery_api/entity): `src/main/java/com/deliverytech/delivery_api/entity`

### Identity & Security

- [Authentication](https://github.com/theusinhoiost/delivery-api/blob/main/src/main/java/com/deliverytech/delivery_api/service/AuthService.java): `src/main/java/com/deliverytech/delivery_api/service/AuthService.java`
- [JWT filter](https://github.com/theusinhoiost/delivery-api/blob/main/src/main/java/com/deliverytech/delivery_api/security/JwtAuthenticationFilter.java): `src/main/java/com/deliverytech/delivery_api/security/JwtAuthenticationFilter.java`
- [JWT utilities](https://github.com/theusinhoiost/delivery-api/blob/main/src/main/java/com/deliverytech/delivery_api/security/JwtUtil.java): `src/main/java/com/deliverytech/delivery_api/security/JwtUtil.java`
- [Security rules](https://github.com/theusinhoiost/delivery-api/blob/main/src/main/java/com/deliverytech/delivery_api/config/SecurityConfig.java): `src/main/java/com/deliverytech/delivery_api/config/SecurityConfig.java`

### Persistence

- [Client repository](https://github.com/theusinhoiost/delivery-api/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/theusinhoiost/delivery-api/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/theusinhoiost/delivery-api/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/theusinhoiost/delivery-api/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/theusinhoiost/delivery-api/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 caller**

## Connections

- API caller → Auth endpoints: sends auth requests
- API caller → Client endpoints: sends client requests
- API caller → Restaurant endpoints: sends restaurant requests
- API caller → Product endpoints: sends product requests
- API caller → Order endpoints: sends order requests
- API caller → Health and info: checks status
- Auth endpoints → Authentication: invokes auth
- Authentication → User repository: reads and saves users
- Security rules → JWT filter: registers filter
- JWT filter → JWT utilities: validates tokens
- JWT filter → Authentication: loads user
- Client endpoints → Client management: invokes client operations
- Restaurant endpoints → Restaurant catalog: invokes catalog operations
- Product endpoints → Product catalog: invokes product operations
- Order endpoints → Order workflow: invokes order operations
- Client management → Client repository: reads and writes clients
- Restaurant catalog → Restaurant repository: reads and writes restaurants
- Product catalog → Product repository: reads and writes products
- Order workflow → Client repository: validates customer
- Order workflow → Restaurant repository: validates restaurant
- Order workflow → Product repository: validates and prices items
- Order workflow → Order repository: loads and saves orders
- Client repository → H2 database: persists entities
- Restaurant repository → H2 database: persists entities
- Product repository → H2 database: persists entities
- Order repository → H2 database: persists orders
- User repository → H2 database: persists users
- Order workflow → DTO mapping: maps order responses
- Restaurant catalog → Domain entities: converts restaurant data
- Client management → Domain entities: manages client data
- Product catalog → Domain entities: manages product data
- Order workflow → Domain entities: builds order records
