Ecossistema bancário completo de ponta a ponta: esteira de onboarding KYC em 6 etapas, liquidação SPB, PIX com governança BACEN Res. nº 142/2021, DDA eletrônico CIP, cartões 3D com antecipação de fatura a desconto CDI e modelos relacionais ACID em PostgreSQL.
Arquitetura • Modelo Relacional de Dados • Rotas de API • Como Conectar o Banco • Módulos do Sistema
O FinSmart Instituição de Pagamento S.A. foi concebido e desenvolvido como projeto de excelência acadêmica na FIAP (Faculdade de Informática e Administração Paulista), integrando disciplinas avançadas de Engenharia de Software, Arquitetura de Microsserviços e Sistemas Financeiros, Segurança da Informação e Criptografia Bancária.
A instituição opera simulando todos os parâmetros regulatórios reais:
- Partidas Dobradas (Double-Entry Ledger): Toda movimentação debita e credita contas atomicamente com garantia de conservação patrimonial.
- Governança Regulatória do Banco Central (BACEN): Governança estrita da Resolução BCB nº 142/2021 com limites diurnos e noturnos diferenciados contra sequestros-relâmpago e fraudes.
- Câmara Interbancária de Pagamentos (CIP / DDA): Captura eletrônica de boletos registrados no CPF do correntista antes do envio da fatura física.
- Pronto para Produção: Banco de dados relacional com migrações PostgreSQL, ORM Prisma tipado, orquestração Docker Compose e resiliência com fallback automático.
graph TD
Client["💻 Client Frontend (Next.js 16 + React 19 + GSAP 3D)"]
API["⚡ API RESTful (Next.js App Router /api/*)"]
Services["⚙️ Service Layer (Regras de Negócio Bancárias)"]
Security["🔒 Security & BACEN Engine (HMAC, SHA-256, Modulo 11, E2E)"]
Repos["📦 Repository Layer (Data Access Object)"]
Prisma["💎 Prisma ORM / Connection Pool"]
Postgres[("🐘 PostgreSQL 16 Database (ACID, Foreign Keys, UUIDs)")]
Client -->|HTTP / JSON / TLS 1.3| API
API --> Services
Services --> Security
Services --> Repos
Repos --> Prisma
Prisma --> Postgres
O banco de dados relacional foi modelado em 12 entidades essenciais com integridade referencial estrita e índices de alta performance:
┌─────────────────┐ 1:1 ┌──────────────────┐
│ usuarios │─────────────────│ perfis_kyc │
│ (id, cpf, ...) │ │ (renda, pep, ...)│
└────────┬────────┘ └──────────────────┘
│ 1:N
┌────────┴────────┐
│ contas │ (Agência 0001, Conta 560222-9, Saldo, Limite)
└────────┬────────┘
├── 1:N ─── caixinhas (Reserva CDI, Metas, Rendimento)
├── 1:N ─── cartoes (Físico, Virtual, Contactless, Limites)
│ └── 1:N ── faturas
│ └── 1:N ── parcelas_fatura (Desconto Antecipação)
├── 1:N ─── transacoes (Livro Razão, E2E BACEN, Autenticação Digital)
├── 1:N ─── chaves_pix (DICT: CPF, Celular, E-mail, EVP)
├── 1:1 ─── limites_pix (Resolução BACEN nº 142 Diurno/Noturno)
└── 1:N ─── boletos_dda (CIP / Títulos Eletrônicos Registrados)
prisma/schema.prisma: Schema declarativo Prisma para PostgreSQL.database/migrations/001_initial_banking_schema.sql: DDL nativo PostgreSQL com triggers de timestamp, índices B-Tree e constraints de integridade (saldo_disponivel >= 0.00).database/seeds/001_seed_institucional.sql: Carga SQL inicial completa com correntista de homologação, faturas, DDA e transações.prisma/seed.js: Script de seed automatizado via Node.js.
Na raiz do projeto, execute:
docker compose up -dO container oficial postgres:16-alpine será iniciado na porta padrão 5432 com volume persistente e scripts de migração aplicados automaticamente.
npx prisma db pushnpx prisma db seednpm run devAcesse: http://localhost:3000
Note
O sistema foi projetado com resiliência de nível bancário: caso você inicie o frontend antes do banco de dados estar conectado, a camada de acesso ativa um modo de contingência gracioso, permitindo navegação completa enquanto a conexão PostgreSQL é restabelecida.
| Método | Endpoint | Finalidade |
|---|---|---|
GET |
/api/health |
Diagnóstico da infraestrutura, latência do banco e status SPB |
POST |
/api/auth/login |
Autenticação de correntista e emissão de token de sessão |
POST |
/api/auth/cadastro |
Esteira KYC completa e emissão de conta corrente |
GET |
/api/conta/saldo |
Consulta atômica de saldos em conta corrente e caixinhas |
POST |
/api/conta/caixinhas |
Aportes e resgates em caixinhas com rendimento CDI |
POST |
/api/transferencias/pix |
Execução PIX com validação de PIN de 4 dígitos e ID E2E |
GET/PUT |
/api/transferencias/limites |
Governança de limites da Resolução BACEN nº 142 |
GET/POST |
/api/pagamentos/dda |
Consulta de títulos na CIP e liquidação eletrônica |
POST |
/api/pagamentos/boleto |
Validação de linha digitável (47/48 dígitos) e pagamento |
GET/PUT |
/api/cartoes |
Consulta de faturas e atualização de preferências de segurança |
POST |
/api/cartoes/antecipacao |
Simulação e quitação de parcelas com desconto CDI (10,5% a.a.) |
curl -X POST http://localhost:3000/api/transferencias/pix \
-H "Content-Type: application/json" \
-d '{
"valor": 150.00,
"chaveDestino": "contato@finsmart.com.br",
"nomeDestinatario": "Maria Silva",
"pinTransacional": "1234"
}'- Validação de identificação cadastral e conferência de CPF.
- Autocomplete de endereço via CEP.
- Verificação regulatória de Pessoa Politicamente Exposta (PEP) nos termos da Circular BACEN nº 3.978/2020.
- Prova de Vida Facial: Scanner biométrico de vivacidade (liveness) animado.
- Definição de credenciais: Senha de acesso (6 dígitos com entropia) e Senha Transacional de 4 dígitos para operações no SPB.
- Emissão instantânea de Agência 0001, conta corrente e concessão de limite de R$ 6.500,00.
- Caixinhas com Rendimento Diário: Reserva de Emergência (100% CDI), Meta Viagem (102% CDI) e Aposentadoria (105% CDI).
- Exportação de Extrato OFX: Download de extrato em formato oficial
.ofxpara conciliação bancária.
- Cartão físico e virtual com física de cursor (GSAP
quickTo), brilho holográfico e rotação 3D para visualização de CVV. - Switches de segurança: contactless, compras online, internacional e bloqueio temporário.
- Antecipação de Compras Parceladas: Desconto proporcional no valor presente calculado pela taxa CDI de 10,5% a.a.
- Transferência com autenticação por senha transacional de 4 dígitos.
- Geração de código oficial End-to-End BACEN (
E48291820...). - Separação entre Limite Diurno (06h–20h) e Limite Noturno Reduzido (20h–06h).
- Débito Direto Autorizado: Títulos e concessionárias emitidos no CPF do usuário disponíveis para quitação antes do envio do boleto físico.
- Validação e parser de código de barras e emissão de Comprovante Oficial de Liquidação SPB.
- Frontend & Core: Next.js 16 (App Router), React 19, Vanilla CSS Modules
- Animações 3D & Física: GSAP 3.15, ScrollTrigger, Framer Motion
- Visualização de Dados: Recharts 3.10
- Persistência & ORM: Prisma ORM 5.22, PostgreSQL 16
- Infraestrutura: Docker, Docker Compose
- Ícones: React Icons (Feather Icons)