Skip to content

QuittoGames/Transaction-API

Repository files navigation

Finance System API

Uma API de Transações Financeiras Completa e Segura

Finance System

Java Spring Boot H2 Database HTML5 CSS3

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.

FeaturesArquiteturaInstalaçãoEndpointsLicença


Features

  • 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.
  • Documentação Interativa (Swagger UI): Explore e teste os endpoints via Swagger em ambiente local.

💡 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 de ConcurrentHashMap.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).


Arquitetura (MVC Spring)

┌─────────────────────────────────────────────┐
│                                             │
│              Usuário (Navegador)            │
│                                             │
└──────────────────┬──────────────────────────┘
                   │
                   │  Requisições HTTP (JSON/REST)
                   │
        ┌──────────▼─────────────┐
        │                        │
        │    Controllers         │
        │ (PaymentController)    │
        │ (UserController)       │
        │                        │
        │  • Recebe requisições  │
        │  • Valida DTOs         │
        │                        │
        └──────────┬─────────────┘
                   │
                   │  Lógica de Negócio
                   │
        ┌──────────▼─────────────┐
        │                        │
        │    Services            │
        │ (Payment, User, Auth)  │
        │                        │
        │  • Controle Idempotência│
        │  • Transferência Segura │
        │                        │
        └──────────┬─────────────┘
                   │
                   │  JPA / Hibernate
                   │
        ┌──────────▼─────────────┐
        │                        │
        │   Repositories (JPA)   │
        │ (PaymentRepository)    │
        │ (UserRepository)       │
        │                        │
        └──────────┬─────────────┘
                   │
                   │  Persistência
                   │
        ┌──────────▼─────────────┐
        │                        │
        │   Banco de Dados       │
        │       (H2)             │
        │                        │
        └────────────────────────┘

Instalação

Pré-requisitos

  • Java 21+: Instalar Java
  • Maven: (Ou utilize o mvnw incluído no projeto)

Clone o Repositório

git clone https://github.com/seu-usuario/FinanceSystem.git
cd FinanceSystem

Build e Execução

No Linux / macOS:

./mvnw clean install
./mvnw spring-boot:run

No Windows:

mvnw.cmd clean install
mvnw.cmd spring-boot:run

Acesse a aplicação (Frontend) em: http://localhost:8080/

Acesse o Swagger UI em: http://localhost:8080/swagger-ui/index.html

Acesse a aplicação no Render em: https://transaction-api-19c1.onrender.com/

Acesse o Swagger UI no Render em: https://transaction-api-19c1.onrender.com/swagger-ui/index.html


Endpoints Principais

Método Rota Descrição
POST /user/seed Inicializa o banco com usuários de teste (seed).
GET /user/listUser Lista usuários cadastrados.
POST /payment/transaction Realiza uma transferência financeira com chave de idempotência.
POST /payment/list Lista transações/pagamentos filtrados por categoria.

Organização do Projeto

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.css e scripts em /web/js.js.

Licença

MIT License


About

A Spring Boot-based Transaction API designed to process secure financial transfers between users, featuring input validation, idempotency control, structured error handling, and a clean layered architecture.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors