# kauanuness/teste-back-end architecture

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

- Interactive diagram: https://gitdiagram.com/kauanuness/teste-back-end
- Repository: https://github.com/kauanuness/teste-back-end

## Overview

This is a Spring Boot REST API for managing users and their addresses. The main flow accepts CRUD requests at the user controller, delegates business operations to the user service, validates each address CEP through ViaCEP during create/update, and persists user data through Spring Data JPA. The README documents H2 development and PostgreSQL production profiles, OpenAPI, and centralized error handling. Service and controller wiring is supported by sampled source; profile and documentation capabilities are retained from the README and tree.

Main entry points: [`teste-back-end-kaua/src/main/java/com/kaua/testebackend/service/UserServiceImpl.java`](https://github.com/kauanuness/teste-back-end/blob/main/teste-back-end-kaua/src/main/java/com/kaua/testebackend/service/UserServiceImpl.java) (User Service), [`teste-back-end-kaua/src/main/java/com/kaua/testebackend/controller/UserController.java`](https://github.com/kauanuness/teste-back-end/blob/main/teste-back-end-kaua/src/main/java/com/kaua/testebackend/controller/UserController.java) (User Controller), [`teste-back-end-kaua/src/main/java/com/kaua/testebackend/service/ViaCepService.java`](https://github.com/kauanuness/teste-back-end/blob/main/teste-back-end-kaua/src/main/java/com/kaua/testebackend/service/ViaCepService.java) (CEP Validation), [`teste-back-end-kaua/src/main/java/com/kaua/testebackend/exception/CepInvalidException.java`](https://github.com/kauanuness/teste-back-end/blob/main/teste-back-end-kaua/src/main/java/com/kaua/testebackend/exception/CepInvalidException.java) (Domain Exceptions)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["REST API"]
  node_controller["User Controller"]
  node_api_docs["OpenAPI Config<br/>[OpenApiConfig.java]"]
  node_api_dtos["Request And Response DTOs"]
  node_application["Spring Boot Application"]
end

subgraph group_domain["User Domain"]
  node_user_service["User Service"]
  node_user_model["User Entity<br/>[User.java]"]
  node_address_model["Address Entity<br/>[Address.java]"]
end

subgraph group_integration["CEP Integration"]
  node_cep_service["CEP Validation<br/>[ViaCepService.java]"]
  node_cep_client["ViaCEP Client<br/>[ViaCepClient.java]"]
  node_viacep{{"ViaCEP API"}}
end

subgraph group_persistence["Persistence And Errors"]
  node_user_repository["User Repository"]
  node_address_repository["Address Repository"]
  node_database[("H2 / PostgreSQL<br/>[application.yml]")]
  node_error_handler["Global Error Handler"]
  node_error_types["Domain Exceptions"]
end

node_consumer(("API Consumer"))

node_consumer -->|"sends CRUD requests"| node_controller
node_controller -->|"delegates operations"| node_user_service
node_controller -->|"returns API response"| node_consumer
node_user_service -->|"queries and saves"| node_user_repository
node_user_service -->|"validates CEPs"| node_cep_service
node_cep_service -->|"looks up CEP"| node_cep_client
node_cep_client -->|"requests address data"| node_viacep
node_cep_service -->|"throws invalid CEP"| node_error_types
node_user_service -->|"throws missing user"| node_error_types
node_user_repository -->|"persists users"| node_database
node_address_repository -->|"persists addresses"| node_database
node_user_model -->|"owns addresses"| node_address_model
node_user_service -->|"creates and updates"| node_user_model
node_controller -.->|"DTO capability documented"| node_api_dtos
node_error_handler -->|"formats API errors"| node_error_types
node_application -->|"starts API"| node_controller
node_api_docs -.->|"documents endpoints"| node_consumer

click node_controller "https://github.com/kauanuness/teste-back-end/blob/main/teste-back-end-kaua/src/main/java/com/kaua/testebackend/controller/UserController.java"
click node_api_docs "https://github.com/kauanuness/teste-back-end/blob/main/teste-back-end-kaua/src/main/java/com/kaua/testebackend/config/OpenApiConfig.java"
click node_user_service "https://github.com/kauanuness/teste-back-end/blob/main/teste-back-end-kaua/src/main/java/com/kaua/testebackend/service/UserServiceImpl.java"
click node_user_model "https://github.com/kauanuness/teste-back-end/blob/main/teste-back-end-kaua/src/main/java/com/kaua/testebackend/entity/User.java"
click node_address_model "https://github.com/kauanuness/teste-back-end/blob/main/teste-back-end-kaua/src/main/java/com/kaua/testebackend/entity/Address.java"
click node_api_dtos "https://github.com/kauanuness/teste-back-end/blob/main/teste-back-end-kaua/src/main/java/com/kaua/testebackend/dto/UserRequestDTO.java"
click node_cep_service "https://github.com/kauanuness/teste-back-end/blob/main/teste-back-end-kaua/src/main/java/com/kaua/testebackend/service/ViaCepService.java"
click node_cep_client "https://github.com/kauanuness/teste-back-end/blob/main/teste-back-end-kaua/src/main/java/com/kaua/testebackend/client/ViaCepClient.java"
click node_user_repository "https://github.com/kauanuness/teste-back-end/blob/main/teste-back-end-kaua/src/main/java/com/kaua/testebackend/repository/UserRepository.java"
click node_address_repository "https://github.com/kauanuness/teste-back-end/blob/main/teste-back-end-kaua/src/main/java/com/kaua/testebackend/repository/AddressRepository.java"
click node_database "https://github.com/kauanuness/teste-back-end/blob/main/teste-back-end-kaua/src/main/resources/application.yml"
click node_error_handler "https://github.com/kauanuness/teste-back-end/blob/main/teste-back-end-kaua/src/main/java/com/kaua/testebackend/exception/GlobalExceptionHandler.java"
click node_error_types "https://github.com/kauanuness/teste-back-end/blob/main/teste-back-end-kaua/src/main/java/com/kaua/testebackend/exception/CepInvalidException.java"
click node_application "https://github.com/kauanuness/teste-back-end/blob/main/teste-back-end-kaua/src/main/java/com/kaua/testebackend/TesteBackEndKauaApplication.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_controller,node_api_docs,node_api_dtos,node_application toneBlue
class node_user_service,node_user_model,node_address_model toneAmber
class node_cep_service,node_cep_client,node_viacep,node_consumer toneMint
class node_user_repository,node_address_repository,node_database,node_error_handler,node_error_types toneRose
```

## Components

### REST API

- [User Controller](https://github.com/kauanuness/teste-back-end/blob/main/teste-back-end-kaua/src/main/java/com/kaua/testebackend/controller/UserController.java): `teste-back-end-kaua/src/main/java/com/kaua/testebackend/controller/UserController.java`
- [OpenAPI Config](https://github.com/kauanuness/teste-back-end/blob/main/teste-back-end-kaua/src/main/java/com/kaua/testebackend/config/OpenApiConfig.java): `teste-back-end-kaua/src/main/java/com/kaua/testebackend/config/OpenApiConfig.java`
- [Request And Response DTOs](https://github.com/kauanuness/teste-back-end/blob/main/teste-back-end-kaua/src/main/java/com/kaua/testebackend/dto/UserRequestDTO.java): `teste-back-end-kaua/src/main/java/com/kaua/testebackend/dto/UserRequestDTO.java`
- [Spring Boot Application](https://github.com/kauanuness/teste-back-end/blob/main/teste-back-end-kaua/src/main/java/com/kaua/testebackend/TesteBackEndKauaApplication.java): `teste-back-end-kaua/src/main/java/com/kaua/testebackend/TesteBackEndKauaApplication.java`

### User Domain

- [User Service](https://github.com/kauanuness/teste-back-end/blob/main/teste-back-end-kaua/src/main/java/com/kaua/testebackend/service/UserServiceImpl.java): `teste-back-end-kaua/src/main/java/com/kaua/testebackend/service/UserServiceImpl.java`
- [User Entity](https://github.com/kauanuness/teste-back-end/blob/main/teste-back-end-kaua/src/main/java/com/kaua/testebackend/entity/User.java): `teste-back-end-kaua/src/main/java/com/kaua/testebackend/entity/User.java`
- [Address Entity](https://github.com/kauanuness/teste-back-end/blob/main/teste-back-end-kaua/src/main/java/com/kaua/testebackend/entity/Address.java): `teste-back-end-kaua/src/main/java/com/kaua/testebackend/entity/Address.java`

### CEP Integration

- [CEP Validation](https://github.com/kauanuness/teste-back-end/blob/main/teste-back-end-kaua/src/main/java/com/kaua/testebackend/service/ViaCepService.java): `teste-back-end-kaua/src/main/java/com/kaua/testebackend/service/ViaCepService.java`
- [ViaCEP Client](https://github.com/kauanuness/teste-back-end/blob/main/teste-back-end-kaua/src/main/java/com/kaua/testebackend/client/ViaCepClient.java): `teste-back-end-kaua/src/main/java/com/kaua/testebackend/client/ViaCepClient.java`
- **ViaCEP API**

### Persistence And Errors

- [User Repository](https://github.com/kauanuness/teste-back-end/blob/main/teste-back-end-kaua/src/main/java/com/kaua/testebackend/repository/UserRepository.java): `teste-back-end-kaua/src/main/java/com/kaua/testebackend/repository/UserRepository.java`
- [Address Repository](https://github.com/kauanuness/teste-back-end/blob/main/teste-back-end-kaua/src/main/java/com/kaua/testebackend/repository/AddressRepository.java): `teste-back-end-kaua/src/main/java/com/kaua/testebackend/repository/AddressRepository.java`
- [H2 / PostgreSQL](https://github.com/kauanuness/teste-back-end/blob/main/teste-back-end-kaua/src/main/resources/application.yml): `teste-back-end-kaua/src/main/resources/application.yml`
- [Global Error Handler](https://github.com/kauanuness/teste-back-end/blob/main/teste-back-end-kaua/src/main/java/com/kaua/testebackend/exception/GlobalExceptionHandler.java): `teste-back-end-kaua/src/main/java/com/kaua/testebackend/exception/GlobalExceptionHandler.java`
- [Domain Exceptions](https://github.com/kauanuness/teste-back-end/blob/main/teste-back-end-kaua/src/main/java/com/kaua/testebackend/exception/CepInvalidException.java): `teste-back-end-kaua/src/main/java/com/kaua/testebackend/exception/CepInvalidException.java`

### Other components

- **API Consumer**

## Connections

- API Consumer → User Controller: sends CRUD requests
- User Controller → User Service: delegates operations
- User Controller → API Consumer: returns API response
- User Service → User Repository: queries and saves
- User Service → CEP Validation: validates CEPs
- CEP Validation → ViaCEP Client: looks up CEP
- ViaCEP Client → ViaCEP API: requests address data
- CEP Validation → Domain Exceptions: throws invalid CEP
- User Service → Domain Exceptions: throws missing user
- User Repository → H2 / PostgreSQL: persists users
- Address Repository → H2 / PostgreSQL: persists addresses
- User Entity → Address Entity: owns addresses
- User Service → User Entity: creates and updates
- User Controller → Request And Response DTOs: DTO capability documented
- Global Error Handler → Domain Exceptions: formats API errors
- Spring Boot Application → User Controller: starts API
- OpenAPI Config → API Consumer: documents endpoints
