# diego1256/java_apiclientes architecture

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

- Interactive diagram: https://gitdiagram.com/diego1256/java_apiclientes
- Repository: https://github.com/diego1256/java_apiclientes

## Overview

This is a Spring Boot customer-management API. Its main workflow accepts client requests, uses the controller to create, update, delete, or look up customer records, and returns response or customer DTOs. The repository performs SQL through a connection factory against PostgreSQL. Email support is implemented but its welcome-email call is commented out in the controller, so it is shown as a separate, currently unwired capability. The README is generic; database configuration details and other runtime wiring are not inferred beyond the sampled source.

Main entry points: [`src/main/java/br/com/cotiinformatica/controllers/ClienteController.java`](https://github.com/diego1256/java_apiclientes/blob/main/src/main/java/br/com/cotiinformatica/controllers/ClienteController.java) (Customer controller), [`src/main/java/br/com/cotiinformatica/repositories/ClienteRepository.java`](https://github.com/diego1256/java_apiclientes/blob/main/src/main/java/br/com/cotiinformatica/repositories/ClienteRepository.java) (Customer repository), [`src/main/java/br/com/cotiinformatica/components/EmailComponent.java`](https://github.com/diego1256/java_apiclientes/blob/main/src/main/java/br/com/cotiinformatica/components/EmailComponent.java) (Email component), [`src/main/java/br/com/cotiinformatica/factories/ConnectionFactory.java`](https://github.com/diego1256/java_apiclientes/blob/main/src/main/java/br/com/cotiinformatica/factories/ConnectionFactory.java) (Connection factory)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["API"]
  node_application["Spring Boot app"]
  node_controller["Customer controller"]
  node_postdto["Create request DTO"]
  node_putdto["Update request DTO<br/>[ClientePutDto.java]"]
  node_getdto["Customer response DTO<br/>[ClienteGetDto.java]"]
  node_responsedto["Operation response DTO"]
  node_swagger["Swagger configuration<br/>[SwaggerConfig.java]"]
end

subgraph group_domain["Customer data"]
  node_customer["Customer entity<br/>[Cliente.java]"]
end

subgraph group_persistence["Persistence"]
  node_repository["Customer repository"]
  node_connection["Connection factory"]
  node_database[("PostgreSQL database")]
end

subgraph group_integrations["Integrations"]
  node_emailcomponent["Email component"]
  node_emailmodel["Email message model"]
  node_mailsender["Java mail sender"]
end

node_client(("API client"))

node_client -->|"sends requests"| node_controller
node_application -->|"starts routes"| node_controller
node_controller -->|"accepts create"| node_postdto
node_controller -->|"accepts update"| node_putdto
node_controller -->|"invokes CRUD"| node_repository
node_controller -->|"maps fields"| node_customer
node_controller -->|"builds lookup results"| node_getdto
node_controller -->|"builds operation results"| node_responsedto
node_repository -->|"opens connections"| node_connection
node_repository -->|"queries and changes"| node_database
node_connection -->|"connects to"| node_database
node_controller -->|"exposes documented routes"| node_swagger
node_emailcomponent -->|"reads message"| node_emailmodel
node_emailcomponent -->|"sends message"| node_mailsender

click node_application "https://github.com/diego1256/java_apiclientes/blob/main/src/main/java/br/com/cotiinformatica/Projetoapi01Application.java"
click node_controller "https://github.com/diego1256/java_apiclientes/blob/main/src/main/java/br/com/cotiinformatica/controllers/ClienteController.java"
click node_postdto "https://github.com/diego1256/java_apiclientes/blob/main/src/main/java/br/com/cotiinformatica/dtos/ClientePostDto.java"
click node_putdto "https://github.com/diego1256/java_apiclientes/blob/main/src/main/java/br/com/cotiinformatica/dtos/ClientePutDto.java"
click node_getdto "https://github.com/diego1256/java_apiclientes/blob/main/src/main/java/br/com/cotiinformatica/dtos/ClienteGetDto.java"
click node_responsedto "https://github.com/diego1256/java_apiclientes/blob/main/src/main/java/br/com/cotiinformatica/dtos/ClienteResponseDto.java"
click node_swagger "https://github.com/diego1256/java_apiclientes/blob/main/src/main/java/br/com/cotiinformatica/SwaggerConfig.java"
click node_customer "https://github.com/diego1256/java_apiclientes/blob/main/src/main/java/br/com/cotiinformatica/entities/Cliente.java"
click node_repository "https://github.com/diego1256/java_apiclientes/blob/main/src/main/java/br/com/cotiinformatica/repositories/ClienteRepository.java"
click node_connection "https://github.com/diego1256/java_apiclientes/blob/main/src/main/java/br/com/cotiinformatica/factories/ConnectionFactory.java"
click node_emailcomponent "https://github.com/diego1256/java_apiclientes/blob/main/src/main/java/br/com/cotiinformatica/components/EmailComponent.java"
click node_emailmodel "https://github.com/diego1256/java_apiclientes/blob/main/src/main/java/br/com/cotiinformatica/components/EmailComponentModel.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_application,node_controller,node_postdto,node_putdto,node_getdto,node_responsedto,node_swagger,node_client toneBlue
class node_customer toneAmber
class node_repository,node_connection,node_database toneMint
class node_emailcomponent,node_emailmodel,node_mailsender toneRose
```

## Components

### API

- [Spring Boot app](https://github.com/diego1256/java_apiclientes/blob/main/src/main/java/br/com/cotiinformatica/Projetoapi01Application.java): `src/main/java/br/com/cotiinformatica/Projetoapi01Application.java`
- [Customer controller](https://github.com/diego1256/java_apiclientes/blob/main/src/main/java/br/com/cotiinformatica/controllers/ClienteController.java): `src/main/java/br/com/cotiinformatica/controllers/ClienteController.java`
- [Create request DTO](https://github.com/diego1256/java_apiclientes/blob/main/src/main/java/br/com/cotiinformatica/dtos/ClientePostDto.java): `src/main/java/br/com/cotiinformatica/dtos/ClientePostDto.java`
- [Update request DTO](https://github.com/diego1256/java_apiclientes/blob/main/src/main/java/br/com/cotiinformatica/dtos/ClientePutDto.java): `src/main/java/br/com/cotiinformatica/dtos/ClientePutDto.java`
- [Customer response DTO](https://github.com/diego1256/java_apiclientes/blob/main/src/main/java/br/com/cotiinformatica/dtos/ClienteGetDto.java): `src/main/java/br/com/cotiinformatica/dtos/ClienteGetDto.java`
- [Operation response DTO](https://github.com/diego1256/java_apiclientes/blob/main/src/main/java/br/com/cotiinformatica/dtos/ClienteResponseDto.java): `src/main/java/br/com/cotiinformatica/dtos/ClienteResponseDto.java`
- [Swagger configuration](https://github.com/diego1256/java_apiclientes/blob/main/src/main/java/br/com/cotiinformatica/SwaggerConfig.java): `src/main/java/br/com/cotiinformatica/SwaggerConfig.java`

### Customer data

- [Customer entity](https://github.com/diego1256/java_apiclientes/blob/main/src/main/java/br/com/cotiinformatica/entities/Cliente.java): `src/main/java/br/com/cotiinformatica/entities/Cliente.java`

### Persistence

- [Customer repository](https://github.com/diego1256/java_apiclientes/blob/main/src/main/java/br/com/cotiinformatica/repositories/ClienteRepository.java): `src/main/java/br/com/cotiinformatica/repositories/ClienteRepository.java`
- [Connection factory](https://github.com/diego1256/java_apiclientes/blob/main/src/main/java/br/com/cotiinformatica/factories/ConnectionFactory.java): `src/main/java/br/com/cotiinformatica/factories/ConnectionFactory.java`
- **PostgreSQL database**

### Integrations

- [Email component](https://github.com/diego1256/java_apiclientes/blob/main/src/main/java/br/com/cotiinformatica/components/EmailComponent.java): `src/main/java/br/com/cotiinformatica/components/EmailComponent.java`
- [Email message model](https://github.com/diego1256/java_apiclientes/blob/main/src/main/java/br/com/cotiinformatica/components/EmailComponentModel.java): `src/main/java/br/com/cotiinformatica/components/EmailComponentModel.java`
- **Java mail sender**

### Other components

- **API client**

## Connections

- API client → Customer controller: sends requests
- Spring Boot app → Customer controller: starts routes
- Customer controller → Create request DTO: accepts create
- Customer controller → Update request DTO: accepts update
- Customer controller → Customer repository: invokes CRUD
- Customer controller → Customer entity: maps fields
- Customer controller → Customer response DTO: builds lookup results
- Customer controller → Operation response DTO: builds operation results
- Customer repository → Connection factory: opens connections
- Customer repository → PostgreSQL database: queries and changes
- Connection factory → PostgreSQL database: connects to
- Customer controller → Swagger configuration: exposes documented routes
- Email component → Email message model: reads message
- Email component → Java mail sender: sends message
