Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 

Repository files navigation

FullStack FinTech App — Sistema de Pagamentos

Aplicação fullstack end-to-end demonstrando capacidade de construir sistemas financeiros completos — do backend seguro com Java 21 ao frontend React com dashboard em tempo real. Este projeto existe para mostrar integração entre todas as camadas de um sistema fintech real.

Por que existe

Desenvolvedores fullstack em fintech precisam dominar segurança (OAuth2, JWT), consistência de dados (transações), performance (Redis, cache) e UX de dashboard financeiro. Este projeto cobre todos esses aspectos em um sistema coeso, não em exemplos isolados.

Stack Tecnológica

Camada Tecnologia
Backend Java 21, Spring Boot 3.2
Segurança Spring Security, OAuth2, JWT
Banco de Dados PostgreSQL 16 (transações ACID)
Cache Redis 7 (sessões, rate limiting, idempotência)
Frontend React 18, TypeScript, TailwindCSS
Build Frontend Vite 5
Containerização Docker, Docker Compose
API Docs OpenAPI 3 (Swagger UI)

Arquitetura

Backend — Clean Architecture

src/
  domain/
    model/          # Entidades (Payment, Account, Transaction)
    port/           # Interfaces (repositories, services)
    exception/      # Exceções de domínio
  application/
    usecase/        # Casos de uso (ProcessPayment, GetStatement)
    dto/            # Request/Response DTOs
    service/        # Application services
  infrastructure/
    persistence/    # JPA repositories, entidades ORM
    cache/          # Redis adapters
    security/       # JWT provider, OAuth2 config
    http/           # Clientes HTTP externos (gateway de pagamento)
  presentation/
    controller/     # REST controllers
    advice/         # Exception handlers globais

Visão Geral do Sistema

┌──────────────────────────────────────────────────────────────┐
│               React 18 SPA (TypeScript + Vite)               │
│                                                              │
│  ┌──────────────┐  ┌──────────────┐  ┌───────────────────┐  │
│  │  Login/OAuth │  │  Dashboard   │  │  Pagamentos       │  │
│  │  (PKCE Flow) │  │  Tempo Real  │  │  (transferência,  │  │
│  └──────────────┘  │  (SSE/WS)   │  │   histórico)      │  │
│                    └──────────────┘  └───────────────────┘  │
└──────────────────────────┬───────────────────────────────────┘
                           │ HTTPS + JWT Bearer Token
                           ▼
┌──────────────────────────────────────────────────────────────┐
│              Spring Boot 3 (Java 21) — Port 8080             │
│                                                              │
│  ┌─────────────────┐    ┌──────────────────────────────────┐ │
│  │  Security Layer  │    │         REST API                 │ │
│  │  OAuth2 Resource │    │  /api/v1/payments                │ │
│  │  Server + JWT    │    │  /api/v1/accounts                │ │
│  └─────────────────┘    │  /api/v1/transactions            │ │
│                          └──────────────┬───────────────────┘ │
│  ┌───────────────────────────────────────▼─────────────────┐ │
│  │                  Application Layer                       │ │
│  │  ProcessPaymentUseCase  GetStatementUseCase              │ │
│  │  TransferFundsUseCase   FraudCheckService                │ │
│  └───────────────────────────────────────────────────────── │
└──────────────┬─────────────────────────┬────────────────────┘
               │                         │
               ▼                         ▼
   ┌───────────────────┐     ┌──────────────────────┐
   │   PostgreSQL 16   │     │      Redis 7          │
   │                   │     │                       │
   │  payments         │     │  jwt_blacklist        │
   │  accounts         │     │  rate_limit::{userId} │
   │  transactions     │     │  idempotency::{key}   │
   │  audit_log        │     │  session::{token}     │
   └───────────────────┘     └──────────────────────┘

Funcionalidades

  • Pagamentos: transferências entre contas com controle de idempotência (chave única por operação via Redis)
  • Dashboard em Tempo Real: saldo, últimas transações e alertas via Server-Sent Events
  • Autenticação OAuth2: fluxo Authorization Code + PKCE para o SPA; Resource Server com JWT no backend
  • Rate Limiting: proteção por usuário/IP com Redis e respostas HTTP 429 padronizadas
  • API REST Completa: documentação OpenAPI 3, versionamento /v1/, respostas padronizadas com Problem Details (RFC 7807)
  • Auditoria: log imutável de todas as operações financeiras com timestamp e usuário responsável

Como Executar

Pré-requisitos

  • Docker e Docker Compose
  • Java 21+ e Maven
  • Node 20+

Subir infraestrutura

git clone https://github.com/LucasGeek/fullstack-fintech-app.git
cd fullstack-fintech-app

# PostgreSQL + Redis
docker compose up -d postgres redis

# Verificar
docker compose ps

Backend

cd backend

# Rodar migrations (Flyway integrado)
./mvnw spring-boot:run -Dspring-boot.run.profiles=local

Frontend

cd frontend
npm install
npm run dev

Acessar

Serviço URL
Frontend (React) http://localhost:5173
Backend API http://localhost:8080/api/v1
Swagger UI http://localhost:8080/swagger-ui.html

Credenciais de desenvolvimento

Email: demo@fintech.local
Senha: Demo@1234

Rodar testes

# Backend (unit + integration)
cd backend && ./mvnw test

# Frontend
cd frontend && npm test

Decisões Arquiteturais

Documentação

  • ARCHITECTURE.md — diagramas C4 e decisões de design
  • docs/ — documentação adicional de API e operação

Licença

MIT

About

App FullStack simulando sistema de pagamentos fintech. Spring Boot + React + PostgreSQL com OAuth2/JWT e dashboard de transacoes em tempo real.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors