# grupo-04-3adsb/back-end architecture

> Architecture diagram of the GitHub repository grupo-04-3adsb/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/grupo-04-3adsb/back-end
- Repository: https://github.com/grupo-04-3adsb/back-end

## Overview

This Spring Boot service combines authentication and user management with address, product, and payment APIs. The main customer/admin flow is login or registration: authentication is checked, a JWT is issued for successful login, and user data is returned; other API workflows manage addresses and products or process payment methods and orders. Sampled services show the persistence and payment calls; the README is empty, and security configuration and several controllers were not sampled, so those internal connections are omitted.

Main entry points: [`ms-tcAtelie-auth/src/main/java/tcatelie/microservice/auth/service/EnderecoService.java`](https://github.com/grupo-04-3adsb/back-end/blob/main/ms-tcAtelie-auth/src/main/java/tcatelie/microservice/auth/service/EnderecoService.java) (Address service), [`ms-tcAtelie-auth/src/main/java/tcatelie/microservice/auth/controller/PagamentoController.java`](https://github.com/grupo-04-3adsb/back-end/blob/main/ms-tcAtelie-auth/src/main/java/tcatelie/microservice/auth/controller/PagamentoController.java) (Payment API), [`ms-tcAtelie-auth/src/main/java/tcatelie/microservice/auth/controller/AuthenticationController.java`](https://github.com/grupo-04-3adsb/back-end/blob/main/ms-tcAtelie-auth/src/main/java/tcatelie/microservice/auth/controller/AuthenticationController.java) (Authentication API), [`ms-tcAtelie-auth/src/main/java/tcatelie/microservice/auth/service/UsuarioService.java`](https://github.com/grupo-04-3adsb/back-end/blob/main/ms-tcAtelie-auth/src/main/java/tcatelie/microservice/auth/service/UsuarioService.java) (User service)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_identity["Identity &amp; Access"]
  node_authcontroller["Authentication API"]
  node_usuarioservice["User service"]
  node_jwt["JWT service<br/>[JwtService.java]"]
  node_usuariocontroller["User API"]
end

subgraph group_catalog["Catalog &amp; Addresses"]
  node_endcontroller["Address API"]
  node_endservice["Address service"]
  node_endmapper["Address mapper"]
  node_prodcontroller["Product API"]
  node_prodservice["Product service"]
  node_prodmapper["Product mapper<br/>[ProdutoMapper.java]"]
end

subgraph group_payments["Payments"]
  node_pagcontroller["Payment API"]
  node_paymentmethods["Mercado Pago"]
  node_paystrategy["Payment strategies"]
end

subgraph group_persistence["Persistence"]
  node_userrepo["User repository"]
  node_endrepo["Address repository"]
  node_prodrepo["Product repository"]
  node_payrepo["Payment repository"]
end

node_client(("API client"))

node_client -->|"sends auth requests"| node_authcontroller
node_authcontroller -->|"registers or looks up"| node_usuarioservice
node_authcontroller -->|"generates token"| node_jwt
node_authcontroller -->|"authenticates"| node_userrepo
node_client -->|"sends user requests"| node_usuariocontroller
node_usuariocontroller -->|"delegates"| node_usuarioservice
node_usuarioservice -->|"reads and writes"| node_userrepo
node_client -->|"sends address requests"| node_endcontroller
node_endcontroller -->|"delegates"| node_endservice
node_endservice -->|"checks permissions"| node_usuarioservice
node_endservice -->|"reads and writes"| node_endrepo
node_endservice -->|"checks user"| node_userrepo
node_endservice -->|"maps address data"| node_endmapper
node_client -->|"sends product requests"| node_prodcontroller
node_prodcontroller -->|"delegates"| node_prodservice
node_prodservice -->|"maps product input"| node_prodmapper
node_prodservice -->|"reads and writes"| node_prodrepo
node_client -->|"sends payment requests"| node_pagcontroller
node_pagcontroller -.->|"fetches methods"| node_paymentmethods
node_pagcontroller -->|"sorts methods"| node_paystrategy
node_pagcontroller -->|"processes payment"| node_paystrategy
node_pagcontroller -->|"saves order"| node_payrepo

click node_authcontroller "https://github.com/grupo-04-3adsb/back-end/blob/main/ms-tcAtelie-auth/src/main/java/tcatelie/microservice/auth/controller/AuthenticationController.java"
click node_usuarioservice "https://github.com/grupo-04-3adsb/back-end/blob/main/ms-tcAtelie-auth/src/main/java/tcatelie/microservice/auth/service/UsuarioService.java"
click node_jwt "https://github.com/grupo-04-3adsb/back-end/blob/main/ms-tcAtelie-auth/src/main/java/tcatelie/microservice/auth/service/JwtService.java"
click node_usuariocontroller "https://github.com/grupo-04-3adsb/back-end/blob/main/ms-tcAtelie-auth/src/main/java/tcatelie/microservice/auth/controller/UsuarioController.java"
click node_userrepo "https://github.com/grupo-04-3adsb/back-end/blob/main/ms-tcAtelie-auth/src/main/java/tcatelie/microservice/auth/repository/UserRepository.java"
click node_endcontroller "https://github.com/grupo-04-3adsb/back-end/blob/main/ms-tcAtelie-auth/src/main/java/tcatelie/microservice/auth/controller/EnderecoController.java"
click node_endservice "https://github.com/grupo-04-3adsb/back-end/blob/main/ms-tcAtelie-auth/src/main/java/tcatelie/microservice/auth/service/EnderecoService.java"
click node_endrepo "https://github.com/grupo-04-3adsb/back-end/blob/main/ms-tcAtelie-auth/src/main/java/tcatelie/microservice/auth/repository/EnderecoRepository.java"
click node_endmapper "https://github.com/grupo-04-3adsb/back-end/blob/main/ms-tcAtelie-auth/src/main/java/tcatelie/microservice/auth/mapper/EnderecoMapper.java"
click node_prodcontroller "https://github.com/grupo-04-3adsb/back-end/blob/main/ms-tcAtelie-auth/src/main/java/tcatelie/microservice/auth/controller/ProdutoController.java"
click node_prodservice "https://github.com/grupo-04-3adsb/back-end/blob/main/ms-tcAtelie-auth/src/main/java/tcatelie/microservice/auth/service/ProdutoService.java"
click node_prodrepo "https://github.com/grupo-04-3adsb/back-end/blob/main/ms-tcAtelie-auth/src/main/java/tcatelie/microservice/auth/repository/ProdutoRepository.java"
click node_prodmapper "https://github.com/grupo-04-3adsb/back-end/blob/main/ms-tcAtelie-auth/src/main/java/tcatelie/microservice/auth/mapper/ProdutoMapper.java"
click node_pagcontroller "https://github.com/grupo-04-3adsb/back-end/blob/main/ms-tcAtelie-auth/src/main/java/tcatelie/microservice/auth/controller/PagamentoController.java"
click node_paystrategy "https://github.com/grupo-04-3adsb/back-end/blob/main/ms-tcAtelie-auth/src/main/java/tcatelie/microservice/auth/strategy/GerenciadorPagamento.java"
click node_payrepo "https://github.com/grupo-04-3adsb/back-end/blob/main/ms-tcAtelie-auth/src/main/java/tcatelie/microservice/auth/repository/PagamentoRepository.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_authcontroller,node_usuarioservice,node_jwt,node_usuariocontroller,node_client toneBlue
class node_endcontroller,node_endservice,node_endmapper,node_prodcontroller,node_prodservice,node_prodmapper toneAmber
class node_pagcontroller,node_paymentmethods,node_paystrategy toneMint
class node_userrepo,node_endrepo,node_prodrepo,node_payrepo toneRose
```

## Components

### Identity & Access

- [Authentication API](https://github.com/grupo-04-3adsb/back-end/blob/main/ms-tcAtelie-auth/src/main/java/tcatelie/microservice/auth/controller/AuthenticationController.java): `ms-tcAtelie-auth/src/main/java/tcatelie/microservice/auth/controller/AuthenticationController.java`
- [User service](https://github.com/grupo-04-3adsb/back-end/blob/main/ms-tcAtelie-auth/src/main/java/tcatelie/microservice/auth/service/UsuarioService.java): `ms-tcAtelie-auth/src/main/java/tcatelie/microservice/auth/service/UsuarioService.java`
- [JWT service](https://github.com/grupo-04-3adsb/back-end/blob/main/ms-tcAtelie-auth/src/main/java/tcatelie/microservice/auth/service/JwtService.java): `ms-tcAtelie-auth/src/main/java/tcatelie/microservice/auth/service/JwtService.java`
- [User API](https://github.com/grupo-04-3adsb/back-end/blob/main/ms-tcAtelie-auth/src/main/java/tcatelie/microservice/auth/controller/UsuarioController.java): `ms-tcAtelie-auth/src/main/java/tcatelie/microservice/auth/controller/UsuarioController.java`

### Catalog & Addresses

- [Address API](https://github.com/grupo-04-3adsb/back-end/blob/main/ms-tcAtelie-auth/src/main/java/tcatelie/microservice/auth/controller/EnderecoController.java): `ms-tcAtelie-auth/src/main/java/tcatelie/microservice/auth/controller/EnderecoController.java`
- [Address service](https://github.com/grupo-04-3adsb/back-end/blob/main/ms-tcAtelie-auth/src/main/java/tcatelie/microservice/auth/service/EnderecoService.java): `ms-tcAtelie-auth/src/main/java/tcatelie/microservice/auth/service/EnderecoService.java`
- [Address mapper](https://github.com/grupo-04-3adsb/back-end/blob/main/ms-tcAtelie-auth/src/main/java/tcatelie/microservice/auth/mapper/EnderecoMapper.java): `ms-tcAtelie-auth/src/main/java/tcatelie/microservice/auth/mapper/EnderecoMapper.java`
- [Product API](https://github.com/grupo-04-3adsb/back-end/blob/main/ms-tcAtelie-auth/src/main/java/tcatelie/microservice/auth/controller/ProdutoController.java): `ms-tcAtelie-auth/src/main/java/tcatelie/microservice/auth/controller/ProdutoController.java`
- [Product service](https://github.com/grupo-04-3adsb/back-end/blob/main/ms-tcAtelie-auth/src/main/java/tcatelie/microservice/auth/service/ProdutoService.java): `ms-tcAtelie-auth/src/main/java/tcatelie/microservice/auth/service/ProdutoService.java`
- [Product mapper](https://github.com/grupo-04-3adsb/back-end/blob/main/ms-tcAtelie-auth/src/main/java/tcatelie/microservice/auth/mapper/ProdutoMapper.java): `ms-tcAtelie-auth/src/main/java/tcatelie/microservice/auth/mapper/ProdutoMapper.java`

### Payments

- [Payment API](https://github.com/grupo-04-3adsb/back-end/blob/main/ms-tcAtelie-auth/src/main/java/tcatelie/microservice/auth/controller/PagamentoController.java): `ms-tcAtelie-auth/src/main/java/tcatelie/microservice/auth/controller/PagamentoController.java`
- **Mercado Pago**
- [Payment strategies](https://github.com/grupo-04-3adsb/back-end/blob/main/ms-tcAtelie-auth/src/main/java/tcatelie/microservice/auth/strategy/GerenciadorPagamento.java): `ms-tcAtelie-auth/src/main/java/tcatelie/microservice/auth/strategy/GerenciadorPagamento.java`

### Persistence

- [User repository](https://github.com/grupo-04-3adsb/back-end/blob/main/ms-tcAtelie-auth/src/main/java/tcatelie/microservice/auth/repository/UserRepository.java): `ms-tcAtelie-auth/src/main/java/tcatelie/microservice/auth/repository/UserRepository.java`
- [Address repository](https://github.com/grupo-04-3adsb/back-end/blob/main/ms-tcAtelie-auth/src/main/java/tcatelie/microservice/auth/repository/EnderecoRepository.java): `ms-tcAtelie-auth/src/main/java/tcatelie/microservice/auth/repository/EnderecoRepository.java`
- [Product repository](https://github.com/grupo-04-3adsb/back-end/blob/main/ms-tcAtelie-auth/src/main/java/tcatelie/microservice/auth/repository/ProdutoRepository.java): `ms-tcAtelie-auth/src/main/java/tcatelie/microservice/auth/repository/ProdutoRepository.java`
- [Payment repository](https://github.com/grupo-04-3adsb/back-end/blob/main/ms-tcAtelie-auth/src/main/java/tcatelie/microservice/auth/repository/PagamentoRepository.java): `ms-tcAtelie-auth/src/main/java/tcatelie/microservice/auth/repository/PagamentoRepository.java`

### Other components

- **API client**

## Connections

- API client → Authentication API: sends auth requests
- Authentication API → User service: registers or looks up
- Authentication API → JWT service: generates token
- Authentication API → User repository: authenticates
- API client → User API: sends user requests
- User API → User service: delegates
- User service → User repository: reads and writes
- API client → Address API: sends address requests
- Address API → Address service: delegates
- Address service → User service: checks permissions
- Address service → Address repository: reads and writes
- Address service → User repository: checks user
- Address service → Address mapper: maps address data
- API client → Product API: sends product requests
- Product API → Product service: delegates
- Product service → Product mapper: maps product input
- Product service → Product repository: reads and writes
- API client → Payment API: sends payment requests
- Payment API → Mercado Pago: fetches methods
- Payment API → Payment strategies: sorts methods
- Payment API → Payment strategies: processes payment
- Payment API → Payment repository: saves order
