Skip to content

QuittoGames/Transaction-API

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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.

💡 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) │
        │                        │
        │  • 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)             │
        │                        │
        └────────────────────────┘

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/


Endpoints Principais

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.

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


Construindo sistemas transacionais seguros e focados no usuário.

⬆ Voltar ao topo

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.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors