# marcomazanti/mesa-do-campo-back architecture

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

- Interactive diagram: https://gitdiagram.com/marcomazanti/mesa-do-campo-back
- Repository: https://github.com/marcomazanti/mesa-do-campo-back

## Overview

Mesa do Campo is a Spring Boot/PostgreSQL marketplace API. Buyers register or log in, manage delivery and payment details, browse products, and check out; checkout validates current product prices and stock and creates an order, its items, and a simulated approved payment. Sellers manage products and advance item fulfillment; buyers can track orders and submit evaluations. The README documents hybrid encryption for protected routes. Checkout, item permissions, customer account behavior, and crypto internals are sampled; other product branches are represented from the tree and README, so their internal wiring is not asserted.

Main entry points: [`src/main/java/Trabalho_de_Graduacao/Mesa_do_Campo_Back/Repository`](https://github.com/marcomazanti/mesa-do-campo-back/tree/prod/src/main/java/Trabalho_de_Graduacao/Mesa_do_Campo_Back/Repository) (JPA repositories), [`src/main/java/Trabalho_de_Graduacao/Mesa_do_Campo_Back/Service/PedidoService.java`](https://github.com/marcomazanti/mesa-do-campo-back/blob/prod/src/main/java/Trabalho_de_Graduacao/Mesa_do_Campo_Back/Service/PedidoService.java) (Checkout and orders), [`src/main/java/Trabalho_de_Graduacao/Mesa_do_Campo_Back/Service/Security/CryptoService.java`](https://github.com/marcomazanti/mesa-do-campo-back/blob/prod/src/main/java/Trabalho_de_Graduacao/Mesa_do_Campo_Back/Service/Security/CryptoService.java) (Hybrid crypto), [`src/main/java/Trabalho_de_Graduacao/Mesa_do_Campo_Back/Controller/ClienteController.java`](https://github.com/marcomazanti/mesa-do-campo-back/blob/prod/src/main/java/Trabalho_de_Graduacao/Mesa_do_Campo_Back/Controller/ClienteController.java) (Customer API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["HTTP API"]
  node_customer_api["Customer API"]
  node_seller_api["Seller API"]
  node_catalog_api["Catalog API"]
  node_address_api["Address API"]
  node_order_api["Order API"]
  node_item_api["Order-item API"]
  node_payment_api["Payment API"]
  node_review_api["Review API"]
end

subgraph group_identity["Accounts and marketplace"]
  node_customer_service["Customer accounts"]
  node_seller_service["Seller accounts"]
  node_catalog_service["Product catalog"]
  node_address_service["Delivery addresses"]
  node_review_service["Product evaluations"]
end

subgraph group_commerce["Orders and payment"]
  node_order_service["Checkout and orders<br/>[PedidoService.java]"]
  node_item_service["Item fulfillment"]
  node_payment_service["Payment records"]
  node_payment_methods["Saved payment methods"]
end

subgraph group_persistence["Persistence"]
  node_repositories["JPA repositories"]
end

subgraph group_security["Request security"]
  node_crypto_controller["Public-key API"]
  node_request_crypto["Request decryption"]
  node_response_crypto["Response encryption"]
  node_crypto_service["Hybrid crypto<br/>[CryptoService.java]"]
end

node_buyer(("Buyer"))
node_seller(("Seller"))
node_postgres[("PostgreSQL")]
node_frontend(("Frontend"))

node_buyer -->|"registers or logs in"| node_customer_api
node_customer_api -->|"invokes account operations"| node_customer_service
node_buyer -->|"browses products"| node_catalog_api
node_catalog_api -->|"routes catalog requests"| node_catalog_service
node_seller -->|"manages seller account"| node_seller_api
node_seller_api -->|"routes seller operations"| node_seller_service
node_buyer -->|"manages delivery address"| node_address_api
node_address_api -->|"routes address operations"| node_address_service
node_buyer -->|"checks out"| node_order_api
node_order_api -->|"calls checkout"| node_order_service
node_order_service -->|"reads products and saves order"| node_repositories
node_order_service -->|"saves items and payment"| node_repositories
node_seller -->|"updates fulfillment"| node_item_api
node_item_api -->|"calls item operations"| node_item_service
node_item_service -->|"checks ownership and updates items"| node_repositories
node_buyer -->|"views payment records"| node_payment_api
node_payment_api -->|"routes payment operations"| node_payment_service
node_buyer -->|"manages saved cards"| node_payment_methods
node_buyer -->|"submits evaluation"| node_review_api
node_review_api -->|"routes evaluation"| node_review_service
node_repositories -->|"reads and writes"| node_postgres
node_frontend -->|"fetches public key"| node_crypto_controller
node_frontend -->|"sends encrypted request"| node_request_crypto
node_request_crypto -->|"decrypts envelope"| node_crypto_service
node_response_crypto -->|"encrypts response"| node_crypto_service
node_crypto_service -->|"returns encrypted envelope"| node_frontend

click node_customer_api "https://github.com/marcomazanti/mesa-do-campo-back/blob/prod/src/main/java/Trabalho_de_Graduacao/Mesa_do_Campo_Back/Controller/ClienteController.java"
click node_seller_api "https://github.com/marcomazanti/mesa-do-campo-back/blob/prod/src/main/java/Trabalho_de_Graduacao/Mesa_do_Campo_Back/Controller/VendedorController.java"
click node_catalog_api "https://github.com/marcomazanti/mesa-do-campo-back/blob/prod/src/main/java/Trabalho_de_Graduacao/Mesa_do_Campo_Back/Controller/ProdutoController.java"
click node_address_api "https://github.com/marcomazanti/mesa-do-campo-back/blob/prod/src/main/java/Trabalho_de_Graduacao/Mesa_do_Campo_Back/Controller/EnderecoController.java"
click node_order_api "https://github.com/marcomazanti/mesa-do-campo-back/blob/prod/src/main/java/Trabalho_de_Graduacao/Mesa_do_Campo_Back/Controller/PedidoController.java"
click node_item_api "https://github.com/marcomazanti/mesa-do-campo-back/blob/prod/src/main/java/Trabalho_de_Graduacao/Mesa_do_Campo_Back/Controller/ItemPedidoController.java"
click node_payment_api "https://github.com/marcomazanti/mesa-do-campo-back/blob/prod/src/main/java/Trabalho_de_Graduacao/Mesa_do_Campo_Back/Controller/PagamentoController.java"
click node_review_api "https://github.com/marcomazanti/mesa-do-campo-back/blob/prod/src/main/java/Trabalho_de_Graduacao/Mesa_do_Campo_Back/Controller/AvaliacaoController.java"
click node_customer_service "https://github.com/marcomazanti/mesa-do-campo-back/blob/prod/src/main/java/Trabalho_de_Graduacao/Mesa_do_Campo_Back/Service/ClienteService.java"
click node_seller_service "https://github.com/marcomazanti/mesa-do-campo-back/blob/prod/src/main/java/Trabalho_de_Graduacao/Mesa_do_Campo_Back/Service/VendedorService.java"
click node_catalog_service "https://github.com/marcomazanti/mesa-do-campo-back/blob/prod/src/main/java/Trabalho_de_Graduacao/Mesa_do_Campo_Back/Service/ProdutoService.java"
click node_address_service "https://github.com/marcomazanti/mesa-do-campo-back/blob/prod/src/main/java/Trabalho_de_Graduacao/Mesa_do_Campo_Back/Service/EnderecoService.java"
click node_review_service "https://github.com/marcomazanti/mesa-do-campo-back/blob/prod/src/main/java/Trabalho_de_Graduacao/Mesa_do_Campo_Back/Service/AvaliacaoService.java"
click node_order_service "https://github.com/marcomazanti/mesa-do-campo-back/blob/prod/src/main/java/Trabalho_de_Graduacao/Mesa_do_Campo_Back/Service/PedidoService.java"
click node_item_service "https://github.com/marcomazanti/mesa-do-campo-back/blob/prod/src/main/java/Trabalho_de_Graduacao/Mesa_do_Campo_Back/Service/ItemPedidoService.java"
click node_payment_service "https://github.com/marcomazanti/mesa-do-campo-back/blob/prod/src/main/java/Trabalho_de_Graduacao/Mesa_do_Campo_Back/Service/PagamentoService.java"
click node_payment_methods "https://github.com/marcomazanti/mesa-do-campo-back/blob/prod/src/main/java/Trabalho_de_Graduacao/Mesa_do_Campo_Back/Controller/CartaoCreditoController.java"
click node_repositories "https://github.com/marcomazanti/mesa-do-campo-back/tree/prod/src/main/java/Trabalho_de_Graduacao/Mesa_do_Campo_Back/Repository"
click node_crypto_controller "https://github.com/marcomazanti/mesa-do-campo-back/blob/prod/src/main/java/Trabalho_de_Graduacao/Mesa_do_Campo_Back/Controller/CryptoController.java"
click node_request_crypto "https://github.com/marcomazanti/mesa-do-campo-back/blob/prod/src/main/java/Trabalho_de_Graduacao/Mesa_do_Campo_Back/Controller/Advice/DecryptRequestInterceptor.java"
click node_response_crypto "https://github.com/marcomazanti/mesa-do-campo-back/blob/prod/src/main/java/Trabalho_de_Graduacao/Mesa_do_Campo_Back/Controller/Advice/EncryptResponseInterceptor.java"
click node_crypto_service "https://github.com/marcomazanti/mesa-do-campo-back/blob/prod/src/main/java/Trabalho_de_Graduacao/Mesa_do_Campo_Back/Service/Security/CryptoService.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_customer_api,node_seller_api,node_catalog_api,node_address_api,node_order_api,node_item_api,node_payment_api,node_review_api,node_frontend toneBlue
class node_customer_service,node_seller_service,node_catalog_service,node_address_service,node_review_service,node_postgres toneAmber
class node_order_service,node_item_service,node_payment_service,node_payment_methods toneMint
class node_repositories toneRose
class node_crypto_controller,node_request_crypto,node_response_crypto,node_crypto_service,node_buyer,node_seller toneIndigo
```

## Components

### HTTP API

- [Customer API](https://github.com/marcomazanti/mesa-do-campo-back/blob/prod/src/main/java/Trabalho_de_Graduacao/Mesa_do_Campo_Back/Controller/ClienteController.java): `src/main/java/Trabalho_de_Graduacao/Mesa_do_Campo_Back/Controller/ClienteController.java`
- [Seller API](https://github.com/marcomazanti/mesa-do-campo-back/blob/prod/src/main/java/Trabalho_de_Graduacao/Mesa_do_Campo_Back/Controller/VendedorController.java): `src/main/java/Trabalho_de_Graduacao/Mesa_do_Campo_Back/Controller/VendedorController.java`
- [Catalog API](https://github.com/marcomazanti/mesa-do-campo-back/blob/prod/src/main/java/Trabalho_de_Graduacao/Mesa_do_Campo_Back/Controller/ProdutoController.java): `src/main/java/Trabalho_de_Graduacao/Mesa_do_Campo_Back/Controller/ProdutoController.java`
- [Address API](https://github.com/marcomazanti/mesa-do-campo-back/blob/prod/src/main/java/Trabalho_de_Graduacao/Mesa_do_Campo_Back/Controller/EnderecoController.java): `src/main/java/Trabalho_de_Graduacao/Mesa_do_Campo_Back/Controller/EnderecoController.java`
- [Order API](https://github.com/marcomazanti/mesa-do-campo-back/blob/prod/src/main/java/Trabalho_de_Graduacao/Mesa_do_Campo_Back/Controller/PedidoController.java): `src/main/java/Trabalho_de_Graduacao/Mesa_do_Campo_Back/Controller/PedidoController.java`
- [Order-item API](https://github.com/marcomazanti/mesa-do-campo-back/blob/prod/src/main/java/Trabalho_de_Graduacao/Mesa_do_Campo_Back/Controller/ItemPedidoController.java): `src/main/java/Trabalho_de_Graduacao/Mesa_do_Campo_Back/Controller/ItemPedidoController.java`
- [Payment API](https://github.com/marcomazanti/mesa-do-campo-back/blob/prod/src/main/java/Trabalho_de_Graduacao/Mesa_do_Campo_Back/Controller/PagamentoController.java): `src/main/java/Trabalho_de_Graduacao/Mesa_do_Campo_Back/Controller/PagamentoController.java`
- [Review API](https://github.com/marcomazanti/mesa-do-campo-back/blob/prod/src/main/java/Trabalho_de_Graduacao/Mesa_do_Campo_Back/Controller/AvaliacaoController.java): `src/main/java/Trabalho_de_Graduacao/Mesa_do_Campo_Back/Controller/AvaliacaoController.java`

### Accounts and marketplace

- [Customer accounts](https://github.com/marcomazanti/mesa-do-campo-back/blob/prod/src/main/java/Trabalho_de_Graduacao/Mesa_do_Campo_Back/Service/ClienteService.java): `src/main/java/Trabalho_de_Graduacao/Mesa_do_Campo_Back/Service/ClienteService.java`
- [Seller accounts](https://github.com/marcomazanti/mesa-do-campo-back/blob/prod/src/main/java/Trabalho_de_Graduacao/Mesa_do_Campo_Back/Service/VendedorService.java): `src/main/java/Trabalho_de_Graduacao/Mesa_do_Campo_Back/Service/VendedorService.java`
- [Product catalog](https://github.com/marcomazanti/mesa-do-campo-back/blob/prod/src/main/java/Trabalho_de_Graduacao/Mesa_do_Campo_Back/Service/ProdutoService.java): `src/main/java/Trabalho_de_Graduacao/Mesa_do_Campo_Back/Service/ProdutoService.java`
- [Delivery addresses](https://github.com/marcomazanti/mesa-do-campo-back/blob/prod/src/main/java/Trabalho_de_Graduacao/Mesa_do_Campo_Back/Service/EnderecoService.java): `src/main/java/Trabalho_de_Graduacao/Mesa_do_Campo_Back/Service/EnderecoService.java`
- [Product evaluations](https://github.com/marcomazanti/mesa-do-campo-back/blob/prod/src/main/java/Trabalho_de_Graduacao/Mesa_do_Campo_Back/Service/AvaliacaoService.java): `src/main/java/Trabalho_de_Graduacao/Mesa_do_Campo_Back/Service/AvaliacaoService.java`

### Orders and payment

- [Checkout and orders](https://github.com/marcomazanti/mesa-do-campo-back/blob/prod/src/main/java/Trabalho_de_Graduacao/Mesa_do_Campo_Back/Service/PedidoService.java): `src/main/java/Trabalho_de_Graduacao/Mesa_do_Campo_Back/Service/PedidoService.java`
- [Item fulfillment](https://github.com/marcomazanti/mesa-do-campo-back/blob/prod/src/main/java/Trabalho_de_Graduacao/Mesa_do_Campo_Back/Service/ItemPedidoService.java): `src/main/java/Trabalho_de_Graduacao/Mesa_do_Campo_Back/Service/ItemPedidoService.java`
- [Payment records](https://github.com/marcomazanti/mesa-do-campo-back/blob/prod/src/main/java/Trabalho_de_Graduacao/Mesa_do_Campo_Back/Service/PagamentoService.java): `src/main/java/Trabalho_de_Graduacao/Mesa_do_Campo_Back/Service/PagamentoService.java`
- [Saved payment methods](https://github.com/marcomazanti/mesa-do-campo-back/blob/prod/src/main/java/Trabalho_de_Graduacao/Mesa_do_Campo_Back/Controller/CartaoCreditoController.java): `src/main/java/Trabalho_de_Graduacao/Mesa_do_Campo_Back/Controller/CartaoCreditoController.java`

### Persistence

- [JPA repositories](https://github.com/marcomazanti/mesa-do-campo-back/tree/prod/src/main/java/Trabalho_de_Graduacao/Mesa_do_Campo_Back/Repository): `src/main/java/Trabalho_de_Graduacao/Mesa_do_Campo_Back/Repository`

### Request security

- [Public-key API](https://github.com/marcomazanti/mesa-do-campo-back/blob/prod/src/main/java/Trabalho_de_Graduacao/Mesa_do_Campo_Back/Controller/CryptoController.java): `src/main/java/Trabalho_de_Graduacao/Mesa_do_Campo_Back/Controller/CryptoController.java`
- [Request decryption](https://github.com/marcomazanti/mesa-do-campo-back/blob/prod/src/main/java/Trabalho_de_Graduacao/Mesa_do_Campo_Back/Controller/Advice/DecryptRequestInterceptor.java): `src/main/java/Trabalho_de_Graduacao/Mesa_do_Campo_Back/Controller/Advice/DecryptRequestInterceptor.java`
- [Response encryption](https://github.com/marcomazanti/mesa-do-campo-back/blob/prod/src/main/java/Trabalho_de_Graduacao/Mesa_do_Campo_Back/Controller/Advice/EncryptResponseInterceptor.java): `src/main/java/Trabalho_de_Graduacao/Mesa_do_Campo_Back/Controller/Advice/EncryptResponseInterceptor.java`
- [Hybrid crypto](https://github.com/marcomazanti/mesa-do-campo-back/blob/prod/src/main/java/Trabalho_de_Graduacao/Mesa_do_Campo_Back/Service/Security/CryptoService.java): `src/main/java/Trabalho_de_Graduacao/Mesa_do_Campo_Back/Service/Security/CryptoService.java`

### Other components

- **Buyer**
- **Seller**
- **PostgreSQL**
- **Frontend**

## Connections

- Buyer → Customer API: registers or logs in
- Customer API → Customer accounts: invokes account operations
- Buyer → Catalog API: browses products
- Catalog API → Product catalog: routes catalog requests
- Seller → Seller API: manages seller account
- Seller API → Seller accounts: routes seller operations
- Buyer → Address API: manages delivery address
- Address API → Delivery addresses: routes address operations
- Buyer → Order API: checks out
- Order API → Checkout and orders: calls checkout
- Checkout and orders → JPA repositories: reads products and saves order
- Checkout and orders → JPA repositories: saves items and payment
- Seller → Order-item API: updates fulfillment
- Order-item API → Item fulfillment: calls item operations
- Item fulfillment → JPA repositories: checks ownership and updates items
- Buyer → Payment API: views payment records
- Payment API → Payment records: routes payment operations
- Buyer → Saved payment methods: manages saved cards
- Buyer → Review API: submits evaluation
- Review API → Product evaluations: routes evaluation
- JPA repositories → PostgreSQL: reads and writes
- Frontend → Public-key API: fetches public key
- Frontend → Request decryption: sends encrypted request
- Request decryption → Hybrid crypto: decrypts envelope
- Response encryption → Hybrid crypto: encrypts response
- Hybrid crypto → Frontend: returns encrypted envelope
