Este projeto implementa um serviço que salva dados em um banco de dados relacional, onde alguns de seus atributos são criptografados.
A aplicação permite buscar os dados e apresentá-los descriptografados.
- 🧭 Visão Geral
- 📚 Sumário
- ⚙️ Tecnologias Utilizadas
- 🏗️ Arquitetura da Solução
- 🚀 Execução do Projeto
- 💬 Interagindo com a API
- 📬 Exemplos de Requisição
- 🤝 Contribuições
- 🔗 Referências e Créditos
| Tecnologia | Finalidade |
|---|---|
| ☕ Java 25 | Linguagem principal |
| 🍃 Spring Boot 3.5.7 | Framework de aplicação |
| 🩺 Spring Boot Actuator | Monitoramento e métricas da aplicação (/actuator/health) |
| ⚡ Spring Boot DevTools | Hot reload e ferramentas de desenvolvimento |
| 🌐 Spring Web (Spring MVC) | Criação de endpoints RESTful |
| ※ RFC 9457 Problem Details | Tratamento de erros |
| 📘 Springdoc OpenAPI (Swagger UI) | Documentação interativa da API |
| 🧰 Lombok | Redução de boilerplate |
| 🔐 Jasypt | Criptografia e descriptografia |
| 🧩 Spring Data JPA / MySQL | Persistência relacional |
| 🐳 Docker & Docker Compose | Containerização do ambiente |
[Cliente / Postman / Swagger UI]
↓
REST API (Spring Boot)
↓
[Controller Layer]
├── GET /transactions → lista todas as transações
├── POST /transactions → cria uma nova transação
└── GET /transactions/{id} → deleta uma transação
↓
[Service Layer]
├── TransactionService (regras de transações - CRUD)
└── CryptoService (serviço de criptografia)
↓
[Banco de Dados MySQL]📘 Endpoints expostos:
GET /transactions/{id}→ Lista pedidos de um clientePOST /transactions→ Lista clientes e total de pedidosDELETE /transactions/{id}→ Consulta pedido pelo código- Consultar outros endpoints em: swagger-ui
- Java 25+
- Maven 3.9+
- MySQL 8+
- Docker (opcional)
git clone https://github.com/erichiroshi/desafio-backend-backendbrasil-cryptography.git
cd desafio-backend-backendbrasil-cryptographyNa pasta docker/, execute:
docker-compose up -d./mvnw spring-boot:runA aplicação estará disponível em:
👉 http://localhost:8080
👉 http://localhost:8080/swagger-ui.html
Por padrão, a aplicação utiliza o mysql + phpmyadmin.
Para acessar o console: 👉 http://localhost:8081/
- Utilizar credências conforme configurado no application.properties.
As requisições podem ser testadas via Postman, Insomnia, curl ou Swagger UI.
- Json para importar no postman: json.
POST /transactions
Request Body
{
"userDocument": "123456",
"creditCardToken": "123456",
"value": 15
}Response
{
"id": 1,
"userDocument": "5IX3zV91R9BsoT9eEATmrA==",
"creditCardToken": "gS50opBEWkm7f+vc9Ob54A==",
"value": 15
}GET /transactions/1
Response
{
"id": 1,
"userDocument": "123456",
"creditCardToken": "123456",
"value": 15
}GET /transactions
Response
{
"content": [
{
"id": 1,
"userDocument": "123456",
"creditCardToken": "123456",
"value": 15
}
],
"page": {
"size": 20,
"number": 0,
"totalElements": 1,
"totalPages": 1
}
}Contribuições são sempre bem-vindas!
Para contribuir:
- Crie um fork do repositório.
- Crie uma branch de feature:
git checkout -b feature/nova-funcionalidade
- Commit suas mudanças:
git commit -m "feat: nova funcionalidade" - Envie um Pull Request.
📜 Boas práticas
- Adicione testes unitários.
- Documente suas alterações no código.
- Use mensagens de commit seguindo o padrão Conventional Commits.
- Desafio original: Backend Brasil - Criptografia
- Baseado no conteúdo do canal Build & Run
- Desenvolvido por Eric Hiroshi
- Licença: MIT
“Código limpo é aquele que foi escrito com clareza, empatia e propósito.”
