Finance System é uma API transacional desenvolvida em Spring Boot focada na segurança e integridade de transferências financeiras. Inclui controle de idempotência, validação de transações e uma interface frontend integrada.
Features • Arquitetura • Instalação • Endpoints • Licença
- Back-end Robusto: Desenvolvido com Java 21 e Spring Boot.
- Idempotência: Controle rígido de chaves de idempotência para evitar transações duplicadas.
- Interface Gráfica Intuitiva: Frontend integrado via MVC usando HTML, CSS e external JavaScript na rota base.
- Banco de Dados em Memória: Configurado com banco H2 para facilitar testes e avaliações rápidas.
💡 Observação de Arquitetura (Treinamento): Por se tratar de um projeto focado em estudo e treinamento, o controle de chaves de idempotência foi implementado de forma simplificada em memória, utilizando um
Set(através deConcurrentHashMap.newKeySet()) nativo do Java. Em um cenário real de produção, a boa prática seria utilizar um banco de dados em cache como o Redis, que permitiria escalar a aplicação (evitando problemas com múltiplas instâncias) e aplicar limpeza automática de chaves antigas através de tempo de expiração (TTL).
┌─────────────────────────────────────────────┐
│ │
│ Usuário (Navegador) │
│ │
└──────────────────┬──────────────────────────┘
│
│ Requisições HTTP (JSON/REST)
│
┌──────────▼─────────────┐
│ │
│ Controllers │
│ (PaymentController) │
│ │
│ • Recebe requisições │
│ • Valida DTOs │
│ │
└──────────┬─────────────┘
│
│ Lógica de Negócio
│
┌──────────▼─────────────┐
│ │
│ Services │
│ (Payment, Auth) │
│ │
│ • Controle Idempotência│
│ • Transferência Segura │
│ │
└──────────┬─────────────┘
│
│ JPA / Hibernate
│
┌──────────▼─────────────┐
│ │
│ Banco de Dados │
│ (H2) │
│ │
└────────────────────────┘
- Java 21+: Instalar Java
- Maven: (Ou utilize o
mvnwincluído no projeto)
git clone https://github.com/seu-usuario/FinanceSystem.git
cd FinanceSystemNo Linux / macOS:
./mvnw clean install
./mvnw spring-boot:runNo Windows:
mvnw.cmd clean install
mvnw.cmd spring-boot:runAcesse a aplicação (Frontend) em: http://localhost:8080/
| Método | Rota | Descrição |
|---|---|---|
POST |
/seed |
Inicializa o banco de dados com usuários de teste (ID 1 e 2 com R$100 cada). |
POST |
/transaction |
Realiza uma transferência financeira com chave de idempotência. |
POST |
/list |
Lista as transações filtradas por categoria. |
Abaixo a divisão principal dos diretórios:
src/main/java/.../Config/: Configurações MVC que expõe arquivos estáticos do frontend.src/main/java/.../Controllers/: Endpoints REST da API.src/main/java/.../Services/: Lógica de negócio e serviço de controle Idempotente (AuthService).src/main/resources/templates/: Frontend em HTML (index.html) usando estilos em/web/style.csse scripts em/web/js.js.
MIT License
Construindo sistemas transacionais seguros e focados no usuário.