Skip to content

erichiroshi/desafio-backend-backendbrasil-cryptography

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Backend Brasil Logo

Desafio Backend - Criptografia

License: MIT Language: Java Version: 1.0


🧭 Visão Geral

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.


📚 Sumário


⚙️ Tecnologias Utilizadas

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

🏗️ Arquitetura da Solução

[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 cliente
  • POST /transactions → Lista clientes e total de pedidos
  • DELETE /transactions/{id} → Consulta pedido pelo código
  • Consultar outros endpoints em: swagger-ui

🚀 Execução do Projeto

✅ Pré-requisitos

  • Java 25+
  • Maven 3.9+
  • MySQL 8+
  • Docker (opcional)

📥 Clonar o repositório

git clone https://github.com/erichiroshi/desafio-backend-backendbrasil-cryptography.git
cd desafio-backend-backendbrasil-cryptography

🐳 Subir containers

Na pasta docker/, execute:

docker-compose up -d

▶️ Rodar a aplicação

./mvnw spring-boot:run

A aplicação estará disponível em:
👉 http://localhost:8080

🧩 Acessar a documentação Swagger

👉 http://localhost:8080/swagger-ui.html

🧩 Banco de Dados

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.

💬 Interagindo com a API

As requisições podem ser testadas via Postman, Insomnia, curl ou Swagger UI.

  • Json para importar no postman: json.

📬 Exemplos de Requisição

1️⃣ Criar uma transaction — POST /transactions

POST /transactions

Request Body

{
  "userDocument": "123456",
  "creditCardToken": "123456",
  "value": 15
}

Response

{
  "id": 1,
  "userDocument": "5IX3zV91R9BsoT9eEATmrA==",
  "creditCardToken": "gS50opBEWkm7f+vc9Ob54A==",
  "value": 15
}

2️⃣ Consultar transaction por id — GET /transactions/{notificationId}

GET /transactions/1

Response

{
  "id": 1,
  "userDocument": "123456",
  "creditCardToken": "123456",
  "value": 15
}

3️⃣ Buscar todas as transactions paginada — GET /transactions

GET /transactions

Response

{
    "content": [
        {
            "id": 1,
            "userDocument": "123456",
            "creditCardToken": "123456",
            "value": 15
        }
    ],
    "page": {
        "size": 20,
        "number": 0,
        "totalElements": 1,
        "totalPages": 1
    }
}

🤝 Contribuições

Contribuições são sempre bem-vindas!
Para contribuir:

  1. Crie um fork do repositório.
  2. Crie uma branch de feature:
    git checkout -b feature/nova-funcionalidade
  3. Commit suas mudanças:
    git commit -m "feat: nova funcionalidade"
  4. 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.

🔗 Referências e Créditos


“Código limpo é aquele que foi escrito com clareza, empatia e propósito.”

About

Resolução do desafio de Criptografia proposto pelo Back-End Brasil.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages