# wilianbordon/backend1pm architecture

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

## Overview

This is a Spring Boot backend for an e-commerce-style catalog and order system. A client uses REST controllers to manage products, categories, subcategories, banners, accounts, and orders; services implement those operations and repositories persist or retrieve the domain data. The order workflow validates the account and products, totals line items, fills missing address fields through ViaCEP, and saves the order. The README identifies H2 as the database and Swagger/OpenAPI as API documentation; source excerpts were sampled, so links for unsampled controller/service pairs follow the repository structure.

Main entry points: [`src/main/java/com/drones/backend1PM/service/PedidoService.java`](https://github.com/wilianbordon/backend1pm/blob/main/src/main/java/com/drones/backend1PM/service/PedidoService.java) (Order Service), [`src/main/java/com/drones/backend1PM/service/ProdutoService.java`](https://github.com/wilianbordon/backend1pm/blob/main/src/main/java/com/drones/backend1PM/service/ProdutoService.java) (Product Service), [`src/main/java/com/drones/backend1PM/repository/CategoriaRepository.java`](https://github.com/wilianbordon/backend1pm/blob/main/src/main/java/com/drones/backend1PM/repository/CategoriaRepository.java) (Category Repository), [`src/main/java/com/drones/backend1PM/service/SubcategoriaService.java`](https://github.com/wilianbordon/backend1pm/blob/main/src/main/java/com/drones/backend1PM/service/SubcategoriaService.java) (Subcategory Service)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["REST API"]
  node_banner_controller["Banner API"]
  node_categoria_controller["Category API"]
  node_subcategoria_controller["Subcategory API"]
  node_produto_controller["Product API"]
  node_conta_controller["Account API"]
  node_pedido_controller["Order API"]
end

subgraph group_catalog["Catalog Management"]
  node_banner_service["Banner Service<br/>[BannerService.java]"]
  node_categoria_service["Category Service"]
  node_subcategoria_service["Subcategory Service"]
  node_produto_service["Product Service"]
end

subgraph group_commerce["Accounts and Orders"]
  node_conta_service["Account Service<br/>[ContaService.java]"]
  node_pedido_service["Order Service<br/>[PedidoService.java]"]
end

subgraph group_data["Persistence and Integration"]
  node_banner_repo["Banner Repository"]
  node_categoria_repo["Category Repository"]
  node_subcategoria_repo["Subcategory Repository"]
  node_produto_repo["Product Repository"]
  node_conta_repo["Account Repository"]
  node_pedido_repo["Order Repository"]
  node_h2[("H2 Database")]
  node_viacep_client["ViaCEP Client<br/>[ViaCepClient.java]"]
end

node_client(("API Client"))
node_viacep{{"ViaCEP Service"}}

node_client -->|"calls"| node_banner_controller
node_client -->|"calls"| node_categoria_controller
node_client -->|"calls"| node_subcategoria_controller
node_client -->|"calls"| node_produto_controller
node_client -->|"calls"| node_conta_controller
node_client -->|"calls"| node_pedido_controller
node_banner_controller -->|"calls"| node_banner_service
node_categoria_controller -->|"calls"| node_categoria_service
node_subcategoria_controller -->|"calls"| node_subcategoria_service
node_produto_controller -->|"calls"| node_produto_service
node_conta_controller -->|"calls"| node_conta_service
node_pedido_controller -->|"calls"| node_pedido_service
node_banner_service -->|"reads/writes"| node_banner_repo
node_categoria_service -->|"reads/writes"| node_categoria_repo
node_subcategoria_service -->|"reads/writes"| node_subcategoria_repo
node_subcategoria_service -->|"reads"| node_categoria_repo
node_produto_service -->|"reads/writes"| node_produto_repo
node_produto_service -->|"reads"| node_categoria_repo
node_produto_service -->|"reads"| node_subcategoria_repo
node_conta_service -->|"reads/writes"| node_conta_repo
node_pedido_service -->|"reads/writes"| node_pedido_repo
node_pedido_service -->|"reads"| node_conta_repo
node_pedido_service -->|"reads"| node_produto_repo
node_pedido_service -.->|"calls"| node_viacep_client
node_viacep_client -.->|"requests address"| node_viacep
node_banner_repo -->|"persists data"| node_h2
node_categoria_repo -->|"persists data"| node_h2
node_subcategoria_repo -->|"persists data"| node_h2
node_produto_repo -->|"persists data"| node_h2
node_conta_repo -->|"persists data"| node_h2
node_pedido_repo -->|"persists data"| node_h2

click node_banner_controller "https://github.com/wilianbordon/backend1pm/blob/main/src/main/java/com/drones/backend1PM/controller/BannerController.java"
click node_categoria_controller "https://github.com/wilianbordon/backend1pm/blob/main/src/main/java/com/drones/backend1PM/controller/CategoriaController.java"
click node_subcategoria_controller "https://github.com/wilianbordon/backend1pm/blob/main/src/main/java/com/drones/backend1PM/controller/SubcategoriaController.java"
click node_produto_controller "https://github.com/wilianbordon/backend1pm/blob/main/src/main/java/com/drones/backend1PM/controller/ProdutoController.java"
click node_conta_controller "https://github.com/wilianbordon/backend1pm/blob/main/src/main/java/com/drones/backend1PM/controller/ContaController.java"
click node_pedido_controller "https://github.com/wilianbordon/backend1pm/blob/main/src/main/java/com/drones/backend1PM/controller/PedidoController.java"
click node_banner_service "https://github.com/wilianbordon/backend1pm/blob/main/src/main/java/com/drones/backend1PM/service/BannerService.java"
click node_categoria_service "https://github.com/wilianbordon/backend1pm/blob/main/src/main/java/com/drones/backend1PM/service/CategoriaService.java"
click node_subcategoria_service "https://github.com/wilianbordon/backend1pm/blob/main/src/main/java/com/drones/backend1PM/service/SubcategoriaService.java"
click node_produto_service "https://github.com/wilianbordon/backend1pm/blob/main/src/main/java/com/drones/backend1PM/service/ProdutoService.java"
click node_conta_service "https://github.com/wilianbordon/backend1pm/blob/main/src/main/java/com/drones/backend1PM/service/ContaService.java"
click node_pedido_service "https://github.com/wilianbordon/backend1pm/blob/main/src/main/java/com/drones/backend1PM/service/PedidoService.java"
click node_banner_repo "https://github.com/wilianbordon/backend1pm/blob/main/src/main/java/com/drones/backend1PM/repository/BannerRepository.java"
click node_categoria_repo "https://github.com/wilianbordon/backend1pm/blob/main/src/main/java/com/drones/backend1PM/repository/CategoriaRepository.java"
click node_subcategoria_repo "https://github.com/wilianbordon/backend1pm/blob/main/src/main/java/com/drones/backend1PM/repository/SubcategoriaRepository.java"
click node_produto_repo "https://github.com/wilianbordon/backend1pm/blob/main/src/main/java/com/drones/backend1PM/repository/ProdutoRepository.java"
click node_conta_repo "https://github.com/wilianbordon/backend1pm/blob/main/src/main/java/com/drones/backend1PM/repository/ContaRepository.java"
click node_pedido_repo "https://github.com/wilianbordon/backend1pm/blob/main/src/main/java/com/drones/backend1PM/repository/PedidoRepository.java"
click node_viacep_client "https://github.com/wilianbordon/backend1pm/blob/main/src/main/java/com/drones/backend1PM/client/ViaCepClient.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_banner_controller,node_categoria_controller,node_subcategoria_controller,node_produto_controller,node_conta_controller,node_pedido_controller,node_client toneBlue
class node_banner_service,node_categoria_service,node_subcategoria_service,node_produto_service toneAmber
class node_conta_service,node_pedido_service toneMint
class node_banner_repo,node_categoria_repo,node_subcategoria_repo,node_produto_repo,node_conta_repo,node_pedido_repo,node_h2,node_viacep_client toneRose
class node_viacep toneIndigo
```

## Components

### REST API

- [Banner API](https://github.com/wilianbordon/backend1pm/blob/main/src/main/java/com/drones/backend1PM/controller/BannerController.java): `src/main/java/com/drones/backend1PM/controller/BannerController.java`
- [Category API](https://github.com/wilianbordon/backend1pm/blob/main/src/main/java/com/drones/backend1PM/controller/CategoriaController.java): `src/main/java/com/drones/backend1PM/controller/CategoriaController.java`
- [Subcategory API](https://github.com/wilianbordon/backend1pm/blob/main/src/main/java/com/drones/backend1PM/controller/SubcategoriaController.java): `src/main/java/com/drones/backend1PM/controller/SubcategoriaController.java`
- [Product API](https://github.com/wilianbordon/backend1pm/blob/main/src/main/java/com/drones/backend1PM/controller/ProdutoController.java): `src/main/java/com/drones/backend1PM/controller/ProdutoController.java`
- [Account API](https://github.com/wilianbordon/backend1pm/blob/main/src/main/java/com/drones/backend1PM/controller/ContaController.java): `src/main/java/com/drones/backend1PM/controller/ContaController.java`
- [Order API](https://github.com/wilianbordon/backend1pm/blob/main/src/main/java/com/drones/backend1PM/controller/PedidoController.java): `src/main/java/com/drones/backend1PM/controller/PedidoController.java`

### Catalog Management

- [Banner Service](https://github.com/wilianbordon/backend1pm/blob/main/src/main/java/com/drones/backend1PM/service/BannerService.java): `src/main/java/com/drones/backend1PM/service/BannerService.java`
- [Category Service](https://github.com/wilianbordon/backend1pm/blob/main/src/main/java/com/drones/backend1PM/service/CategoriaService.java): `src/main/java/com/drones/backend1PM/service/CategoriaService.java`
- [Subcategory Service](https://github.com/wilianbordon/backend1pm/blob/main/src/main/java/com/drones/backend1PM/service/SubcategoriaService.java): `src/main/java/com/drones/backend1PM/service/SubcategoriaService.java`
- [Product Service](https://github.com/wilianbordon/backend1pm/blob/main/src/main/java/com/drones/backend1PM/service/ProdutoService.java): `src/main/java/com/drones/backend1PM/service/ProdutoService.java`

### Accounts and Orders

- [Account Service](https://github.com/wilianbordon/backend1pm/blob/main/src/main/java/com/drones/backend1PM/service/ContaService.java): `src/main/java/com/drones/backend1PM/service/ContaService.java`
- [Order Service](https://github.com/wilianbordon/backend1pm/blob/main/src/main/java/com/drones/backend1PM/service/PedidoService.java): `src/main/java/com/drones/backend1PM/service/PedidoService.java`

### Persistence and Integration

- [Banner Repository](https://github.com/wilianbordon/backend1pm/blob/main/src/main/java/com/drones/backend1PM/repository/BannerRepository.java): `src/main/java/com/drones/backend1PM/repository/BannerRepository.java`
- [Category Repository](https://github.com/wilianbordon/backend1pm/blob/main/src/main/java/com/drones/backend1PM/repository/CategoriaRepository.java): `src/main/java/com/drones/backend1PM/repository/CategoriaRepository.java`
- [Subcategory Repository](https://github.com/wilianbordon/backend1pm/blob/main/src/main/java/com/drones/backend1PM/repository/SubcategoriaRepository.java): `src/main/java/com/drones/backend1PM/repository/SubcategoriaRepository.java`
- [Product Repository](https://github.com/wilianbordon/backend1pm/blob/main/src/main/java/com/drones/backend1PM/repository/ProdutoRepository.java): `src/main/java/com/drones/backend1PM/repository/ProdutoRepository.java`
- [Account Repository](https://github.com/wilianbordon/backend1pm/blob/main/src/main/java/com/drones/backend1PM/repository/ContaRepository.java): `src/main/java/com/drones/backend1PM/repository/ContaRepository.java`
- [Order Repository](https://github.com/wilianbordon/backend1pm/blob/main/src/main/java/com/drones/backend1PM/repository/PedidoRepository.java): `src/main/java/com/drones/backend1PM/repository/PedidoRepository.java`
- **H2 Database**
- [ViaCEP Client](https://github.com/wilianbordon/backend1pm/blob/main/src/main/java/com/drones/backend1PM/client/ViaCepClient.java): `src/main/java/com/drones/backend1PM/client/ViaCepClient.java`

### Other components

- **API Client**
- **ViaCEP Service**

## Connections

- API Client → Banner API: calls
- API Client → Category API: calls
- API Client → Subcategory API: calls
- API Client → Product API: calls
- API Client → Account API: calls
- API Client → Order API: calls
- Banner API → Banner Service: calls
- Category API → Category Service: calls
- Subcategory API → Subcategory Service: calls
- Product API → Product Service: calls
- Account API → Account Service: calls
- Order API → Order Service: calls
- Banner Service → Banner Repository: reads/writes
- Category Service → Category Repository: reads/writes
- Subcategory Service → Subcategory Repository: reads/writes
- Subcategory Service → Category Repository: reads
- Product Service → Product Repository: reads/writes
- Product Service → Category Repository: reads
- Product Service → Subcategory Repository: reads
- Account Service → Account Repository: reads/writes
- Order Service → Order Repository: reads/writes
- Order Service → Account Repository: reads
- Order Service → Product Repository: reads
- Order Service → ViaCEP Client: calls
- ViaCEP Client → ViaCEP Service: requests address
- Banner Repository → H2 Database: persists data
- Category Repository → H2 Database: persists data
- Subcategory Repository → H2 Database: persists data
- Product Repository → H2 Database: persists data
- Account Repository → H2 Database: persists data
- Order Repository → H2 Database: persists data
