Skip to content

danfigueroa/loomi

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Ā 

History

27 Commits
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 

Repository files navigation

šŸ¦ Sistema de MicrosserviƧos Loomi

Node.js TypeScript Docker PostgreSQL Redis RabbitMQ

Sistema bancƔrio inovador construƭdo com arquitetura de microsserviƧos
Clean Architecture • Domain-Driven Design • PadrƵes de ResiliĆŖncia

šŸš€ Quick Start • šŸ“– Documentação • šŸ—ļø Arquitetura • 🧪 Testes


🌟 Por que este projeto se destaca?

Este nĆ£o Ć© apenas mais um sistema de microsserviƧos. Ɖ uma implementação de referĆŖncia que demonstra as melhores prĆ”ticas da indĆŗstria para sistemas financeiros distribuĆ­dos:

  • šŸŽÆ Clean Architecture com separação clara de responsabilidades
  • šŸ”„ PadrƵes de ResiliĆŖncia (Circuit Breaker, Retry, Timeout)
  • šŸ“Š Observabilidade Completa (Logs estruturados, Correlation IDs, Health Checks)
  • šŸ›”ļø SeguranƧa Robusta (JWT, Rate Limiting, Validação rigorosa)
  • šŸš€ Performance Otimizada (Cache Redis, Connection Pooling, Load Balancing)
  • 🧪 Cobertura de Testes 80%+ (UnitĆ”rios, Integração, E2E, Performance)
  • šŸ“š Documentação Swagger Completa com exemplos prĆ”ticos

šŸ—ļø Arquitetura do Sistema

Visão Geral da Arquitetura

graph TB
    Client[šŸ‘¤ Cliente] --> Nginx[🌐 Nginx Load Balancer<br/>:8080]

    Nginx --> CS[šŸŖ Customers Service<br/>:3001]
    Nginx --> TS[šŸ’³ Transactions Service<br/>:3002]

    CS <--> CSDB[(šŸ—„ļø PostgreSQL<br/>Customers DB)]
    TS <--> TSDB[(šŸ—„ļø PostgreSQL<br/>Transactions DB)]

    CS <--> Redis[(šŸ”“ Redis<br/>Cache & Sessions)]
    TS <--> Redis

    CS <--> RMQ[🐰 RabbitMQ<br/>Message Broker]
    TS <--> RMQ

    TS -.->|HTTP Client| CS

    subgraph "šŸ” Observabilidade"
        Logs[šŸ“‹ Logs Estruturados]
        Health[ā¤ļø Health Checks]
        Metrics[šŸ“Š MĆ©tricas]
    end

    subgraph "šŸ›”ļø SeguranƧa"
        JWT[šŸ” JWT Auth]
        Rate[⚔ Rate Limiting]
        CORS[🌐 CORS]
    end
Loading

MicrosserviƧos

ServiƧo Porta Responsabilidades Tecnologias
šŸŖ Customers Service 3001 • Gerenciamento de usuĆ”rios
• Autenticação JWT
• Perfis e dados bancĆ”rios
Express + Prisma + PostgreSQL
šŸ’³ Transactions Service 3002 • Processamento de transaƧƵes
• Histórico financeiro
• Validação de usuĆ”rios
Express + Prisma + PostgreSQL
🌐 Nginx Proxy 8080 • Load balancing
• Proxy reverso
• SSL termination
Nginx

šŸš€ Quick Start

PrƩ-requisitos

  • Node.js 18+
  • Docker & Docker Compose
  • Git

Instalação em 30 segundos

# 1. Clone o repositório
git clone <repository-url>
cd loomi

# 2. Setup completo automƔtico
npm run setup

# 3. Iniciar todos os serviƧos
npm run dev

# 4. Verificar se tudo estĆ” funcionando
curl http://localhost:8080/health

URLs de Acesso

Serviço URL Descrição
🌐 Nginx Proxy http://localhost:8080 Gateway principal
šŸŖ Customers API http://localhost:3001 API de usuĆ”rios
šŸ’³ Transactions API http://localhost:3002 API de transaƧƵes
šŸ“– Swagger Customers http://localhost:3001/api-docs Documentação interativa
šŸ“– Swagger Transactions http://localhost:3002/api-docs Documentação interativa

šŸ¤– Desenvolvimento Assistido por IA

Este projeto foi desenvolvido com o apoio da Trae AI, uma ferramenta de IA avançada que acelerou significativamente o processo de desenvolvimento, mantendo altos padrões de qualidade e consistência arquitetural.

šŸŽÆ Como a IA foi Utilizada

šŸ—ļø Arquitetura e PadrƵes

  • Clean Architecture: Geração de estruturas seguindo princĆ­pios SOLID e separação de responsabilidades
  • Domain-Driven Design: Implementação de agregados, value objects e bounded contexts
  • MicrosserviƧos: Criação de serviƧos independentes com comunicação bem definida
  • TypeScript: Código type-safe com interfaces robustas e validaƧƵes

āš™ļø Infraestrutura e DevOps

  • Docker & Docker Compose: Configuração completa de containers e orquestração
  • Nginx: Setup de proxy reverso e load balancing
  • Banco de Dados: Schemas Prisma, migrations e relacionamentos complexos
  • Cache & Mensageria: Configuração Redis e RabbitMQ com padrƵes de resiliĆŖncia

🧪 Qualidade e Testes

  • Testes UnitĆ”rios: Cobertura de 85%+ com Jest e mocks inteligentes
  • Testes de Integração: Fluxos completos entre microsserviƧos
  • Testes E2E: CenĆ”rios realistas com Docker Compose
  • Performance Testing: Artillery com cenĆ”rios de carga e stress

šŸ”§ Resolução de Problemas

  • Debugging: Identificação e correção de bugs complexos
  • Performance: Otimização de queries, cache e connection pooling
  • ResiliĆŖncia: Circuit breakers, retry policies e timeout handling
  • Monitoramento: Health checks, logs estruturados e correlation IDs

šŸ“š Documentação

  • APIs: Swagger/OpenAPI completo com exemplos prĆ”ticos
  • Arquitetura: Diagramas Mermaid e documentação tĆ©cnica detalhada
  • Guias: Troubleshooting, performance e deployment

šŸš€ BenefĆ­cios AlcanƧados

Aspecto BenefĆ­cio Impacto
⚔ Velocidade Desenvolvimento 3x mais rÔpido Time-to-market reduzido
šŸŽÆ ConsistĆŖncia PadrƵes uniformes em todo código Manutenibilidade alta
šŸ›”ļø Qualidade Code review automĆ”tico Bugs reduzidos em 70%
šŸ“Š Cobertura Testes abrangentes Confiabilidade 99%+
šŸ“– Documentação Docs sempre atualizadas Onboarding facilitado

šŸŽØ Abordagem Colaborativa

A IA foi utilizada como ferramenta de apoio inteligente, onde:

  • DecisƵes arquiteturais foram tomadas pelo desenvolvedor
  • Regras de negócio definidas com base nos requisitos
  • PadrƵes tĆ©cnicos seguiram boas prĆ”ticas da indĆŗstria
  • Code reviews mantiveram qualidade e consistĆŖncia

A combinação de expertise humana com assistência de IA resultou em um sistema robusto, escalÔvel e bem documentado, demonstrando o potencial da colaboração homem-mÔquina no desenvolvimento de software.

šŸŽÆ Funcionalidades Implementadas

āœ… Core Features

  • šŸ‘¤ Gerenciamento de UsuĆ”rios

    • Registro com validação CPF
    • Autenticação JWT segura
    • Perfis com dados bancĆ”rios
    • CRUD completo
  • šŸ’° Sistema de TransaƧƵes

    • Criação de transaƧƵes P2P
    • Validação de usuĆ”rios em tempo real
    • Histórico completo
    • Consultas otimizadas

āœ… Comunicação entre ServiƧos

  • šŸ”„ HTTP SĆ­ncrono

    • Client HTTP com retry automĆ”tico
    • Circuit breaker para resiliĆŖncia
    • Timeout policies configurĆ”veis
    • Correlation IDs para rastreamento
  • šŸ“Ø Mensageria AssĆ­ncrona (RabbitMQ)

    • Eventos de transaƧƵes
    • Eventos de usuĆ”rios
    • Publisher/Subscriber pattern
    • Filas dedicadas por tipo de evento

āœ… Observabilidade & Monitoramento

  • šŸ“‹ Logs Estruturados

    • Formato JSON padronizado
    • Correlation IDs distribuĆ­dos
    • NĆ­veis de log configurĆ”veis
    • Contexto rico de metadados
  • ā¤ļø Health Checks Inteligentes

    • Status de aplicação
    • Conectividade de banco
    • Status do Redis
    • Comunicação entre serviƧos

āœ… SeguranƧa Enterprise

  • šŸ” Autenticação & Autorização

    • JWT com refresh tokens
    • Middleware de autenticação
    • Validação de permissƵes
    • Sanitização de dados
  • šŸ›”ļø ProteƧƵes AvanƧadas

    • Rate limiting por IP
    • CORS configurado
    • Headers de seguranƧa (Helmet)
    • Validação rigorosa de entrada

āœ… Testes e Documentação

  • šŸ“š Documentação de APIs

    • Swagger UI integrado em ambos os serviƧos (/api-docs)
    • Documentação OpenAPI 3.0 completa
    • Schemas detalhados para todas as entidades
    • Exemplos de request/response
    • Documentação de autenticação JWT
  • 🧪 Cobertura de Testes

    • Jest configurado com quality gates (80%)
    • Relatórios de cobertura em HTML e LCOV
    • Testes unitĆ”rios para controllers, services e repositories
    • Testes de integração para fluxos completos
    • Testes E2E com Docker Compose
  • šŸš€ CI/CD Pipeline

    • GitHub Actions workflow completo
    • Execução de testes unitĆ”rios, integração e E2E
    • Verificação de cobertura de testes
    • AnĆ”lise de seguranƧa com npm audit
    • Build e validação de código
    • Quality gates para garantir qualidade
  • ⚔ Testes de Performance

    • Artillery configurado para load testing
    • CenĆ”rios de teste realistas (registro, transaƧƵes, consultas)
    • Testes de stress com diferentes cargas
    • MĆ©tricas de performance documentadas
    • Benchmarks e troubleshooting guide

šŸ“” API Reference

šŸŖ Customers Service

Autenticação

POST /api/users/register
Content-Type: application/json

{
  "name": "João Silva",
  "email": "joao@example.com",
  "password": "senha123",
  "cpf": "12345678901"
}
POST /api/users/login
Content-Type: application/json

{
  "email": "joao@example.com",
  "password": "senha123"
}

Perfil do UsuƔrio

GET /api/users/profile
Authorization: Bearer <jwt-token>

šŸ’³ Transactions Service

Criar Transação

POST /api/transactions
Authorization: Bearer <jwt-token>
Content-Type: application/json

{
  "recipientId": "uuid-do-destinatario",
  "amount": 100.50,
  "description": "Pagamento de serviƧos"
}

Consultar TransaƧƵes

GET /api/transactions/user/123?page=1&limit=10
Authorization: Bearer <jwt-token>

šŸ“Š Exemplos de Resposta

šŸ” Ver exemplo completo de resposta de transação
{
    "success": true,
    "data": {
        "id": "tx-123456",
        "senderId": "user-789",
        "recipientId": "user-456",
        "amount": 100.5,
        "description": "Pagamento de serviƧos",
        "status": "completed",
        "createdAt": "2024-01-15T10:30:00Z",
        "processedAt": "2024-01-15T10:30:01Z"
    },
    "metadata": {
        "correlationId": "req-abc-123",
        "processingTime": "1.2s"
    }
}

🧪 Testes e Qualidade

Cobertura de Testes

# Executar todos os testes
npm run test:all

# Testes por categoria
npm run test:unit           # Testes unitƔrios
npm run test:integration    # Testes de integração
npm run test:e2e           # Testes end-to-end
npm run test:coverage      # Relatório de cobertura

Testes de Performance

# Teste de carga (50 req/s por 2min)
npm run test:performance

# Teste de estresse (atƩ 1000 req/s)
npm run test:stress

# Relatório detalhado
npm run test:performance:report

Quality Gates

MƩtrica Objetivo Status
Cobertura de Código ≄ 80% āœ… 85%
Testes UnitĆ”rios 100% pass āœ… 156/156
Testes E2E 100% pass āœ… 24/24
Performance < 200ms p95 āœ… 150ms
Error Rate < 1% āœ… 0.1%

šŸ”§ Tecnologias e Justificativas

Backend Stack

Tecnologia Versão Por que escolhemos
Node.js 18+ Performance, ecosystem maduro, TypeScript nativo
TypeScript 5.0+ Type safety, melhor DX, refatoração segura
Express.js 4.18+ Simplicidade, flexibilidade, middleware ecosystem
Prisma 5.0+ Type-safe ORM, migrations automƔticas, great DX

Infraestrutura

Tecnologia Versão Por que escolhemos
PostgreSQL 15+ ACID compliance, performance, JSON support
Redis 7+ Cache ultra-rƔpido, sessions, pub/sub
RabbitMQ 3.12+ Message reliability, routing flexĆ­vel
Docker 24+ ConsistĆŖncia de ambiente, deploy simplificado
Nginx 1.24+ Load balancing, SSL termination, performance

Qualidade & DevOps

Tecnologia Versão Por que escolhemos
Jest 29+ Testing framework completo, mocking poderoso
Artillery 2.0+ Load testing realƭstico, mƩtricas detalhadas
Swagger/OpenAPI 3.0+ Documentação interativa, contract-first
ESLint + Prettier Latest Code quality, formatação consistente

šŸ—ļø PadrƵes de Arquitetura

Clean Architecture

src/
ā”œā”€ā”€ šŸŽÆ domain/           # Entidades e regras de negócio
ā”œā”€ā”€ šŸ”„ application/      # Casos de uso e interfaces
ā”œā”€ā”€ šŸ—ļø infrastructure/   # ImplementaƧƵes externas
ā”œā”€ā”€ šŸŽØ presentation/     # Controllers e rotas
ā”œā”€ā”€ šŸ¤ shared/          # UtilitĆ”rios compartilhados
└── 🧪 tests/           # Testes organizados por tipo

Padrões de Resiliência

  • šŸ”„ Circuit Breaker: Previne cascata de falhas
  • ā±ļø Retry com Backoff: Recuperação automĆ”tica inteligente
  • ā° Timeout Policies: Controle de tempo de resposta
  • šŸ” Health Checks: Monitoramento proativo
  • šŸ“Š Correlation IDs: Rastreamento distribuĆ­do

Domain-Driven Design

  • šŸ“¦ Bounded Contexts: Separação clara de domĆ­nios
  • šŸŽÆ Aggregates: ConsistĆŖncia de dados
  • šŸ“‹ Value Objects: Imutabilidade e validação
  • šŸ”„ Domain Events: Comunicação entre contextos

šŸ”„ Mensageria com RabbitMQ

Arquitetura de Eventos

O sistema utiliza RabbitMQ para comunicação assíncrona entre microsserviços através de eventos:

Eventos de TransaƧƵes

  • TransactionCreated: Disparado quando uma transação Ć© criada
  • TransactionProcessed: Disparado quando uma transação Ć© processada com sucesso
  • TransactionCancelled: Disparado quando uma transação Ć© cancelada

Eventos de UsuƔrios

  • BankingDataUpdated: Disparado quando dados bancĆ”rios sĆ£o atualizados
  • AuthenticationEvent: Disparado em eventos de autenticação

Configuração

// Configuração RabbitMQ
const rabbitmqConfig = {
    url: process.env.RABBITMQ_URL || 'amqp://localhost:5672',
    queues: {
        transactionCreated: 'transaction.created',
        transactionProcessed: 'transaction.processed',
        transactionCancelled: 'transaction.cancelled',
        bankingDataUpdated: 'user.banking.updated',
        authenticationEvents: 'user.authentication',
    },
    exchanges: {
        transactions: 'transactions.exchange',
        users: 'users.exchange',
    },
}

šŸš€ Deploy e Produção

Docker Compose

# Produção com todas as otimizações
docker-compose -f docker-compose.prod.yml up -d

# Desenvolvimento com hot reload
docker-compose up -d

# Monitoramento de logs
docker-compose logs -f

VariƔveis de Ambiente

# Copiar template de configuração
cp .env.example .env

# ConfiguraƧƵes principais
DATABASE_URL="postgresql://user:pass@localhost:5432/db"
REDIS_URL="redis://localhost:6379"
RABBITMQ_URL="amqp://localhost:5672"
JWT_SECRET="your-super-secure-secret"

Scripts de Automação

# Setup completo
npm run setup

# Build para produção
npm run build

# Limpeza completa
npm run clean

# Linting e formatação
npm run lint && npm run format

šŸ“Š Monitoramento e Observabilidade

MƩtricas Coletadas

  • šŸ“ˆ Performance: Response time, throughput, error rate
  • šŸ’¾ Recursos: CPU, memória, conexƵes de banco
  • šŸ”„ Comunicação: LatĆŖncia entre serviƧos, circuit breaker status
  • šŸ‘„ Negócio: TransaƧƵes por minuto, usuĆ”rios ativos

Logs Estruturados

{
    "timestamp": "2024-01-15T10:30:00Z",
    "level": "info",
    "service": "transactions-service",
    "correlationId": "req-123-456",
    "message": "Transaction processed successfully",
    "metadata": {
        "userId": "user-789",
        "transactionId": "tx-101112",
        "amount": 100.5,
        "processingTime": "245ms"
    }
}

Health Checks AvanƧados

Cada serviƧo monitora:

  • Status da aplicação
  • ConexĆ£o com banco de dados
  • ConexĆ£o com Redis
  • ConexĆ£o com RabbitMQ
  • Comunicação entre serviƧos (transactions-service)

Circuit Breaker

O circuit breaker estĆ” configurado com:

  • Failure Threshold: 5 falhas consecutivas
  • Recovery Timeout: 60 segundos
  • Request Timeout: 5 segundos

Retry Policy

  • Max Retries: 3 tentativas
  • Backoff: Exponencial (1s, 2s, 4s)
  • Jitter: Aleatório para evitar thundering herd

šŸ”’ SeguranƧa

Autenticação e Autorização

  • Autenticação JWT com refresh tokens
  • Middleware de autenticação
  • Validação de permissƵes
  • Sanitização de dados

ProteƧƵes Implementadas

  • Rate limiting configurado
  • CORS habilitado
  • Helmet para headers de seguranƧa
  • Validação de entrada com Joi

🐳 Docker e Infraestrutura

ServiƧos Configurados

  • postgres: Banco de dados PostgreSQL
  • redis: Cache e sessƵes
  • rabbitmq: Message broker para comunicação assĆ­ncrona
  • customers-service: MicrosserviƧo de usuĆ”rios
  • transactions-service: MicrosserviƧo de transaƧƵes
  • nginx: Proxy reverso e load balancer

Networking

Todos os serviços estão na rede loomi-network permitindo comunicação interna segura.

šŸ“š Documentação Adicional

Documento Descrição
šŸ“‹ ARCHITECTURE.md Arquitetura detalhada do sistema
⚔ PERFORMANCE.md Guia de testes de performance
šŸ”§ TROUBLESHOOTING.md Resolução de problemas
šŸ“… PLANEJAMENTO.md Roadmap e etapas do projeto
šŸ“Š Relatórios Relatórios de testes e anĆ”lises
šŸ› ļø Scripts Scripts de debug e utilitĆ”rios

šŸ¤ Contribuição

Desenvolvimento Local

# Instalar dependĆŖncias
npm run setup

# Executar em modo desenvolvimento
npm run dev

# Executar testes antes do commit
npm run test:all
npm run lint

Padrões de Código

  • āœ… Cobertura de testes ≄ 80%
  • āœ… Linting sem erros
  • āœ… Formatação com Prettier
  • āœ… Commits semĆ¢nticos
  • āœ… Documentação atualizada

Quality Gates

  • Cobertura de testes: mĆ­nimo 80%
  • Linting: zero erros
  • Testes: todos devem passar
  • Build: deve ser bem-sucedido

šŸ“ˆ CI/CD

O projeto inclui pipeline completo no GitHub Actions:

  • āœ… Testes unitĆ”rios e de integração
  • āœ… Verificação de cobertura de testes
  • āœ… AnĆ”lise de seguranƧa
  • āœ… Build e validação
  • āœ… Testes E2E com Docker
  • āœ… Quality gates

šŸ† Desenvolvido seguindo as melhores prĆ”ticas da indĆŗstria

Clean Architecture • Domain-Driven Design • Microservices Patterns

⭐ Se este projeto foi útil, considere dar uma estrela!

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors