Skip to content

Romulosanttos/smart-bank-api-2023

Repository files navigation

🏦 Smart Bank API 2023 - Plataforma Bancária

TypeScript NestJS PostgreSQL Docker

Plataforma bancária moderna construída com microserviços em TypeScript, demonstrando padrões arquiteturais e boas práticas de desenvolvimento backend.

🏗️ Visão Arquitetural

Implementação de microserviços financeiros utilizando tecnologias modernas para operações bancárias.

🛠️ Stack Tecnológica

  • Backend: NestJS + TypeScript
  • Banco de Dados: PostgreSQL com Prisma ORM
  • Containerização: Docker + Docker Compose
  • Documentação: OpenAPI/Swagger

📊 Arquitetura do Sistema

┌─────────────────┐    ┌─────────────────┐    ┌─────────────────┐
│   Users API     │    │ Transactions    │    │   PostgreSQL    │
│  (Porta 3000)   │────│     API         │────│   (Usuarios)    │
│                 │    │  (Porta 3001)   │    │   Porta 5432    │
└─────────────────┘    └─────────────────┘    └─────────────────┘
         │                       │                       │
         │              ┌─────────────────┐    ┌─────────────────┐
         └──────────────│ Docker Compose  │────│   PostgreSQL    │
                        │   Orquestração  │    │  (Transações)   │
                        └─────────────────┘    │   Porta 5433    │
                                               └─────────────────┘

🔗 API e Funcionalidades

Users Service: http://localhost:3000/users
Transactions Service: http://localhost:3001/v1/ (múltiplos endpoints)

Funcionalidades Implementadas

1. Users Service (Porta 3000)

  • Gerenciamento de Usuários
    • POST /users - Criação de usuários com validação
    • GET /users - Listagem paginada de usuários
    • GET /users/:id - Busca usuário por ID

2. Transactions Service (Porta 3001) - API Versionada

Gestão de Contas:

  • GET /v1/accounts - Listar contas do usuário
  • POST /v1/accounts - Criar nova conta
  • GET /v1/accounts/:accountId - Dados da conta
  • GET /v1/accounts/:accountId/balance - Consulta de saldo
  • GET /v1/accounts/:accountId/bank-statement - Extrato da conta
  • PATCH /v1/accounts/:accountId/block - Bloquear conta
  • PATCH /v1/accounts/:accountId/unlock - Desbloquear conta

Operações Financeiras:

  • GET /v1/transactions - Histórico de transações
  • GET /v1/transactions/:authenticationId - Comprovante específico
  • POST /v1/transactions/deposit - Operações de depósito
  • POST /v1/transactions/withdraw - Saques com validação
  • POST /v1/transactions/purchase - Compras
  • POST /v1/transactions/transfer-intra-account - Transferências
  • PATCH /v1/transactions/:authenticationId/cancel - Cancelamento
  • PATCH /v1/transactions/:authenticationId/rollback - Estorno

Configurações do Sistema:

  • GET/POST /v1/accounts-types - Tipos de conta (corrente, vale refeição, pagamento)
  • GET/POST /v1/transactions-types - Tipos de transação
  • GET/POST /v1/transactions-status - Status de transação
  • GET/POST /v1/transactions-types-moviment - Tipos de movimento

3. Automação

  • CronJob de Confirmação: Execução automática a cada 5 minutos (6:00-18:00, Seg-Sex)
  • Headers Customizados: user-id, origin-account-id para autorização
  • BigInt Support: Serialização customizada para IDs grandes

🚀 Configuração e Execução

Estrutura dos Microserviços

smart-bank-2023/
├── users/          # Serviço de gestão de usuários
├── transactions/   # Serviço de processamento de transações  
├── docker-compose.yml
└── databases/      # Esquemas PostgreSQL

Início Rápido

# Clonar e configurar
git clone https://github.com/Romulosanttos/smart-bank-2023.git
cd smart-bank-2023

# Inicializar todos os serviços
docker-compose up -d

# Acessar documentação da API
open http://localhost:3000/docs  # Users API
open http://localhost:3001/docs  # Transactions API

Arquitetura do Banco de Dados (PostgreSQL)

  • Serviço Users: Gestão de usuários com relacionamento de contas
  • Serviço Transactions: Operações financeiras com conformidade ACID
  • Comunicação Inter-serviços: APIs RESTful com validação

🎯 Objetivos Técnicos

Este projeto demonstra implementação prática de:

  • 🏛️ Microserviços: Separação adequada de responsabilidades por domínio
  • 🔒 Domínio Financeiro: Padrões bancários e conformidade ACID
  • 🧪 TypeScript: Type safety em lógica de negócio complexa
  • 🐳 DevOps: Orquestração Docker para desenvolvimento
  • 📚 Documentação: OpenAPI/Swagger para colaboração

📊 Diagramas Arquiteturais

Diagrama Geral do Sistema

Esquemas de Banco de Dados

About

banking

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors