# gracielasap/fat-cursoarquitetura architecture

> Architecture diagram of the GitHub repository gracielasap/fat-cursoarquitetura, 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/gracielasap/fat-cursoarquitetura
- Repository: https://github.com/gracielasap/fat-cursoarquitetura

## Overview

Delivery Tech is a Spring Boot REST API. Its documented live workflow is a client calling monitoring or application-information endpoints; the repository also contains customer and order service flows, including order creation, lookup, status changes, and cancellation. These flows use DTOs, domain entities, services, and Spring Data repositories. The README documents H2/JPA persistence, but the sampled excerpts do not show application startup wiring or repository-to-database configuration; those relationships are therefore documented rather than inferred from imports.

Main entry points: [`src/main/java/com/deliverytech/delivery_api/service/impl/PedidoServiceImpl.java`](https://github.com/gracielasap/fat-cursoarquitetura/blob/main/src/main/java/com/deliverytech/delivery_api/service/impl/PedidoServiceImpl.java) (Order service), [`src/main/java/com/deliverytech/delivery_api/controller/ClienteController.java`](https://github.com/gracielasap/fat-cursoarquitetura/blob/main/src/main/java/com/deliverytech/delivery_api/controller/ClienteController.java) (Customer endpoints), [`src/main/java/com/deliverytech/delivery_api/controller/PedidoController.java`](https://github.com/gracielasap/fat-cursoarquitetura/blob/main/src/main/java/com/deliverytech/delivery_api/controller/PedidoController.java) (Order endpoints), [`src/main/java/com/deliverytech/delivery_api/service/impl/ClienteServiceImpl.java`](https://github.com/gracielasap/fat-cursoarquitetura/blob/main/src/main/java/com/deliverytech/delivery_api/service/impl/ClienteServiceImpl.java) (Customer service)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["REST API"]
  node_health["Health and info"]
  node_customer_api["Customer endpoints"]
  node_order_api["Order endpoints"]
  node_request_dtos["Request DTOs"]
  node_response_dtos["Response DTOs"]
end

subgraph group_domain["Customer and Orders"]
  node_customer_service["Customer service"]
  node_order_service["Order service"]
  node_customer_entity["Customer model<br/>[Cliente.Java]"]
  node_order_entity["Order model<br/>[Pedido.java]"]
  node_restaurant_entity["Restaurant model<br/>[Restaurante.java]"]
  node_product_entity["Product model<br/>[Produto.java]"]
  node_item_entity["Order item model<br/>[ItemPedido.java]"]
  node_order_status["Order status<br/>[StatusPedido.java]"]
end

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

subgraph group_crosscut["Shared Components"]
  node_mapper["Model mapping"]
  node_errors["Exception handling"]
  node_application["Spring Boot app"]
end

node_caller(("API caller"))

node_caller -->|"requests status/info"| node_health
node_caller -.->|"sends customer requests"| node_customer_api
node_caller -.->|"sends order requests"| node_order_api
node_customer_api -->|"delegates"| node_customer_service
node_order_api -->|"delegates"| node_order_service
node_customer_api -->|"accepts"| node_request_dtos
node_customer_api -->|"returns"| node_response_dtos
node_order_api -->|"accepts"| node_request_dtos
node_order_api -->|"returns"| node_response_dtos
node_customer_service -->|"reads and saves"| node_customer_repo
node_customer_service -->|"maps customer"| node_customer_entity
node_order_service -->|"loads customer"| node_customer_repo
node_order_service -->|"reads and saves"| node_order_repo
node_order_service -->|"loads products"| node_product_repo
node_order_service -->|"loads restaurant"| node_restaurant_repo
node_order_service -->|"creates and updates"| node_order_entity
node_order_service -->|"checks transitions"| node_order_status
node_order_service -->|"maps responses"| node_mapper
node_order_repo -.->|"persists via JPA"| node_h2
node_customer_repo -.->|"persists via JPA"| node_h2

click node_health "https://github.com/gracielasap/fat-cursoarquitetura/blob/main/src/main/java/com/deliverytech/delivery_api/controller/HealthController.java"
click node_customer_api "https://github.com/gracielasap/fat-cursoarquitetura/blob/main/src/main/java/com/deliverytech/delivery_api/controller/ClienteController.java"
click node_order_api "https://github.com/gracielasap/fat-cursoarquitetura/blob/main/src/main/java/com/deliverytech/delivery_api/controller/PedidoController.java"
click node_customer_service "https://github.com/gracielasap/fat-cursoarquitetura/blob/main/src/main/java/com/deliverytech/delivery_api/service/impl/ClienteServiceImpl.java"
click node_order_service "https://github.com/gracielasap/fat-cursoarquitetura/blob/main/src/main/java/com/deliverytech/delivery_api/service/impl/PedidoServiceImpl.java"
click node_customer_entity "https://github.com/gracielasap/fat-cursoarquitetura/blob/main/src/main/java/com/deliverytech/delivery_api/model/Cliente.Java"
click node_order_entity "https://github.com/gracielasap/fat-cursoarquitetura/blob/main/src/main/java/com/deliverytech/delivery_api/model/Pedido.java"
click node_restaurant_entity "https://github.com/gracielasap/fat-cursoarquitetura/blob/main/src/main/java/com/deliverytech/delivery_api/model/Restaurante.java"
click node_product_entity "https://github.com/gracielasap/fat-cursoarquitetura/blob/main/src/main/java/com/deliverytech/delivery_api/model/Produto.java"
click node_item_entity "https://github.com/gracielasap/fat-cursoarquitetura/blob/main/src/main/java/com/deliverytech/delivery_api/model/ItemPedido.java"
click node_order_status "https://github.com/gracielasap/fat-cursoarquitetura/blob/main/src/main/java/com/deliverytech/delivery_api/enums/StatusPedido.java"
click node_request_dtos "https://github.com/gracielasap/fat-cursoarquitetura/tree/main/src/main/java/com/deliverytech/delivery_api/dto/req"
click node_response_dtos "https://github.com/gracielasap/fat-cursoarquitetura/tree/main/src/main/java/com/deliverytech/delivery_api/dto/res"
click node_customer_repo "https://github.com/gracielasap/fat-cursoarquitetura/blob/main/src/main/java/com/deliverytech/delivery_api/repository/ClienteRepository.java"
click node_order_repo "https://github.com/gracielasap/fat-cursoarquitetura/blob/main/src/main/java/com/deliverytech/delivery_api/repository/PedidoRepository.java"
click node_product_repo "https://github.com/gracielasap/fat-cursoarquitetura/blob/main/src/main/java/com/deliverytech/delivery_api/repository/ProdutoRepository.java"
click node_restaurant_repo "https://github.com/gracielasap/fat-cursoarquitetura/blob/main/src/main/java/com/deliverytech/delivery_api/repository/RestauranteRepository.java"
click node_h2 "https://github.com/gracielasap/fat-cursoarquitetura/blob/main/src/main/resources/application.properties"
click node_mapper "https://github.com/gracielasap/fat-cursoarquitetura/blob/main/src/main/java/com/deliverytech/delivery_api/config/ModelMapperConfig.java"
click node_errors "https://github.com/gracielasap/fat-cursoarquitetura/blob/main/src/main/java/com/deliverytech/delivery_api/exeption/GlobalExceptionHandler.java"
click node_application "https://github.com/gracielasap/fat-cursoarquitetura/blob/main/src/main/java/com/deliverytech/delivery_api/DeliveryApiApplication.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_health,node_customer_api,node_order_api,node_request_dtos,node_response_dtos toneBlue
class node_customer_service,node_order_service,node_customer_entity,node_order_entity,node_restaurant_entity,node_product_entity,node_item_entity,node_order_status toneAmber
class node_customer_repo,node_order_repo,node_product_repo,node_restaurant_repo,node_h2,node_caller toneMint
class node_mapper,node_errors,node_application toneRose
```

## Components

### REST API

- [Health and info](https://github.com/gracielasap/fat-cursoarquitetura/blob/main/src/main/java/com/deliverytech/delivery_api/controller/HealthController.java): `src/main/java/com/deliverytech/delivery_api/controller/HealthController.java`
- [Customer endpoints](https://github.com/gracielasap/fat-cursoarquitetura/blob/main/src/main/java/com/deliverytech/delivery_api/controller/ClienteController.java): `src/main/java/com/deliverytech/delivery_api/controller/ClienteController.java`
- [Order endpoints](https://github.com/gracielasap/fat-cursoarquitetura/blob/main/src/main/java/com/deliverytech/delivery_api/controller/PedidoController.java): `src/main/java/com/deliverytech/delivery_api/controller/PedidoController.java`
- [Request DTOs](https://github.com/gracielasap/fat-cursoarquitetura/tree/main/src/main/java/com/deliverytech/delivery_api/dto/req): `src/main/java/com/deliverytech/delivery_api/dto/req`
- [Response DTOs](https://github.com/gracielasap/fat-cursoarquitetura/tree/main/src/main/java/com/deliverytech/delivery_api/dto/res): `src/main/java/com/deliverytech/delivery_api/dto/res`

### Customer and Orders

- [Customer service](https://github.com/gracielasap/fat-cursoarquitetura/blob/main/src/main/java/com/deliverytech/delivery_api/service/impl/ClienteServiceImpl.java): `src/main/java/com/deliverytech/delivery_api/service/impl/ClienteServiceImpl.java`
- [Order service](https://github.com/gracielasap/fat-cursoarquitetura/blob/main/src/main/java/com/deliverytech/delivery_api/service/impl/PedidoServiceImpl.java): `src/main/java/com/deliverytech/delivery_api/service/impl/PedidoServiceImpl.java`
- [Customer model](https://github.com/gracielasap/fat-cursoarquitetura/blob/main/src/main/java/com/deliverytech/delivery_api/model/Cliente.Java): `src/main/java/com/deliverytech/delivery_api/model/Cliente.Java`
- [Order model](https://github.com/gracielasap/fat-cursoarquitetura/blob/main/src/main/java/com/deliverytech/delivery_api/model/Pedido.java): `src/main/java/com/deliverytech/delivery_api/model/Pedido.java`
- [Restaurant model](https://github.com/gracielasap/fat-cursoarquitetura/blob/main/src/main/java/com/deliverytech/delivery_api/model/Restaurante.java): `src/main/java/com/deliverytech/delivery_api/model/Restaurante.java`
- [Product model](https://github.com/gracielasap/fat-cursoarquitetura/blob/main/src/main/java/com/deliverytech/delivery_api/model/Produto.java): `src/main/java/com/deliverytech/delivery_api/model/Produto.java`
- [Order item model](https://github.com/gracielasap/fat-cursoarquitetura/blob/main/src/main/java/com/deliverytech/delivery_api/model/ItemPedido.java): `src/main/java/com/deliverytech/delivery_api/model/ItemPedido.java`
- [Order status](https://github.com/gracielasap/fat-cursoarquitetura/blob/main/src/main/java/com/deliverytech/delivery_api/enums/StatusPedido.java): `src/main/java/com/deliverytech/delivery_api/enums/StatusPedido.java`

### Persistence

- [Customer repository](https://github.com/gracielasap/fat-cursoarquitetura/blob/main/src/main/java/com/deliverytech/delivery_api/repository/ClienteRepository.java): `src/main/java/com/deliverytech/delivery_api/repository/ClienteRepository.java`
- [Order repository](https://github.com/gracielasap/fat-cursoarquitetura/blob/main/src/main/java/com/deliverytech/delivery_api/repository/PedidoRepository.java): `src/main/java/com/deliverytech/delivery_api/repository/PedidoRepository.java`
- [Product repository](https://github.com/gracielasap/fat-cursoarquitetura/blob/main/src/main/java/com/deliverytech/delivery_api/repository/ProdutoRepository.java): `src/main/java/com/deliverytech/delivery_api/repository/ProdutoRepository.java`
- [Restaurant repository](https://github.com/gracielasap/fat-cursoarquitetura/blob/main/src/main/java/com/deliverytech/delivery_api/repository/RestauranteRepository.java): `src/main/java/com/deliverytech/delivery_api/repository/RestauranteRepository.java`
- [H2 database](https://github.com/gracielasap/fat-cursoarquitetura/blob/main/src/main/resources/application.properties): `src/main/resources/application.properties`

### Shared Components

- [Model mapping](https://github.com/gracielasap/fat-cursoarquitetura/blob/main/src/main/java/com/deliverytech/delivery_api/config/ModelMapperConfig.java): `src/main/java/com/deliverytech/delivery_api/config/ModelMapperConfig.java`
- [Exception handling](https://github.com/gracielasap/fat-cursoarquitetura/blob/main/src/main/java/com/deliverytech/delivery_api/exeption/GlobalExceptionHandler.java): `src/main/java/com/deliverytech/delivery_api/exeption/GlobalExceptionHandler.java`
- [Spring Boot app](https://github.com/gracielasap/fat-cursoarquitetura/blob/main/src/main/java/com/deliverytech/delivery_api/DeliveryApiApplication.java): `src/main/java/com/deliverytech/delivery_api/DeliveryApiApplication.java`

### Other components

- **API caller**

## Connections

- API caller → Health and info: requests status/info (evidence: `README.md`)
- API caller → Customer endpoints: sends customer requests
- API caller → Order endpoints: sends order requests
- Customer endpoints → Customer service: delegates (evidence: `src/main/java/com/deliverytech/delivery_api/controller/ClienteController.java`)
- Order endpoints → Order service: delegates (evidence: `src/main/java/com/deliverytech/delivery_api/controller/PedidoController.java`)
- Customer endpoints → Request DTOs: accepts (evidence: `src/main/java/com/deliverytech/delivery_api/controller/ClienteController.java`)
- Customer endpoints → Response DTOs: returns (evidence: `src/main/java/com/deliverytech/delivery_api/controller/ClienteController.java`)
- Order endpoints → Request DTOs: accepts (evidence: `src/main/java/com/deliverytech/delivery_api/controller/PedidoController.java`)
- Order endpoints → Response DTOs: returns (evidence: `src/main/java/com/deliverytech/delivery_api/controller/PedidoController.java`)
- Customer service → Customer repository: reads and saves (evidence: `src/main/java/com/deliverytech/delivery_api/service/impl/ClienteServiceImpl.java`)
- Customer service → Customer model: maps customer (evidence: `src/main/java/com/deliverytech/delivery_api/service/impl/ClienteServiceImpl.java`)
- Order service → Customer repository: loads customer (evidence: `src/main/java/com/deliverytech/delivery_api/service/impl/PedidoServiceImpl.java`)
- Order service → Order repository: reads and saves (evidence: `src/main/java/com/deliverytech/delivery_api/service/impl/PedidoServiceImpl.java`)
- Order service → Product repository: loads products (evidence: `src/main/java/com/deliverytech/delivery_api/service/impl/PedidoServiceImpl.java`)
- Order service → Restaurant repository: loads restaurant (evidence: `src/main/java/com/deliverytech/delivery_api/service/impl/PedidoServiceImpl.java`)
- Order service → Order model: creates and updates (evidence: `src/main/java/com/deliverytech/delivery_api/service/impl/PedidoServiceImpl.java`)
- Order service → Order status: checks transitions (evidence: `src/main/java/com/deliverytech/delivery_api/service/impl/PedidoServiceImpl.java`)
- Order service → Model mapping: maps responses (evidence: `src/main/java/com/deliverytech/delivery_api/service/impl/PedidoServiceImpl.java`)
- Order repository → H2 database: persists via JPA (evidence: `README.md`)
- Customer repository → H2 database: persists via JPA (evidence: `README.md`)
