Este projeto implementa uma plataforma de investimentos
A aplicação está organizada em 6 contextos:
- Responsabilidade: Manter composição dos investimentos, histórico de movimentações e rentabilidade
- Entidades: Portfolio, Position
- Endpoints:
GET /api/portfolio/user/:userId
- Obter carteira do usuárioPOST /api/portfolio/user/:userId/positions
- Adicionar posiçãoGET /api/portfolio/user/:userId/performance
- Obter performance
- Responsabilidade: Controlar ordens de compra/venda e validação de operações
- Entidades: Transaction
- Endpoints:
POST /api/transactions
- Criar transaçãoGET /api/transactions/user/:userId
- Listar transações do usuárioPUT /api/transactions/:id/execute
- Executar transação
- Responsabilidade: Gerenciar perfil de risco baseado em questionários regulatórios
- Entidades: InvestorProfile
- Endpoints:
GET /api/suitability/profile/:userId
- Obter perfil do investidorPUT /api/suitability/profile/:userId/questionnaire
- Atualizar questionárioGET /api/suitability/profile/:userId/validate/:assetType
- Validar investimento
- Responsabilidade: Centralizar oferta de ativos e regras de aplicação
- Endpoints:
GET /api/products
- Listar produtos disponíveisGET /api/products/:id
- Obter produto específicoGET /api/products/type/:type
- Filtrar por tipo de ativo
- Responsabilidade: Rotinas administrativas, relatórios e auditoria
- Endpoints:
POST /api/backoffice/reports/compliance
- Gerar relatório de complianceGET /api/backoffice/reports
- Listar relatóriosPOST /api/backoffice/audit
- Registrar evento de auditoria
- Responsabilidade: Autenticação, autorização e gerenciamento de usuários
- Endpoints:
POST /api/auth/register
- Registrar usuárioPOST /api/auth/login
- Fazer loginGET /api/auth/profile
- Obter perfil do usuário logado
src/
├── bounded-contexts/ # Contextos limitados
│ ├── portfolio/ # Gestão de Carteira
│ │ ├── domain/
│ │ │ └── entities/
│ │ ├── application/
│ │ │ └── services/
│ │ └── infrastructure/
│ │ ├── controllers/
│ │ ├── repositories/
│ │ └── routes/
│ ├── transactions/ # Orquestração de Transações
│ ├── suitability/ # Análise de Perfil
│ ├── product-catalog/ # Catálogo de Produtos
│ ├── backoffice/ # Backoffice e Compliance
│ └── auth/ # Gestão de Usuários
├── shared/ # Componentes compartilhados
│ └── infrastructure/
│ └── logger.js
└── main.js # Ponto de entrada da aplicação
- Node.js 16+
- npm ou yarn
- Instalar dependências:
npm install
- Configurar variáveis de ambiente:
# Criar arquivo .env baseado no .env.example
cp .env.example .env
# Editar as variáveis conforme necessário
- Executar em modo desenvolvimento:
npm run dev
- Executar em modo produção:
npm start
- Executar testes:
npm test
GET /health
- Registrar usuário:
POST /api/auth/register
{
"email": "usuario@teste.com",
"password": "senha123",
"name": "João Silva",
"document": "12345678901"
}
- Fazer login:
POST /api/auth/login
{
"email": "usuario@teste.com",
"password": "senha123"
}
- Obter perfil de suitability:
GET /api/suitability/profile/USER_ID
- Atualizar questionário:
PUT /api/suitability/profile/USER_ID/questionnaire
{
"age": 30,
"income": 8000,
"investmentExperience": "MEDIUM",
"timeHorizon": "LONG",
"riskTolerance": "MEDIUM"
}
- Listar produtos disponíveis:
GET /api/products
- Criar transação:
POST /api/transactions
{
"userId": "USER_ID",
"assetId": "ASSET_ID",
"type": "BUY",
"quantity": 100,
"price": 32.50
}
- Cada contexto tem sua própria responsabilidade bem definida
- Comunicação entre contextos através de interfaces bem definidas
- Isolamento de dados e regras de negócio
- Estrutura modular permite escalar contextos independentemente
- Fácil adição de novos contextos conforme crescimento do negócio
- Preparado para evolução para microsserviços
- Sistema de logs centralizado
- Rastreamento de todas as operações
- Relatórios de compliance automatizados
- Node.js - Runtime JavaScript
- Express - Framework web
- JWT - Autenticação
- bcrypt - Criptografia de senhas
- Winston - Sistema de logs
- Joi - Validação de dados
- Jest - Testes
- ESLint - Linting de código
-
Integração com Banco de Dados:
- Implementar repositórios com MongoDB/PostgreSQL
- Migrações e schemas
-
Comunicação entre Contextos:
- Implementar eventos de domínio
- Message queues para operações assíncronas
-
Segurança Avançada:
- Rate limiting
- Validação de entrada mais robusta
- Auditoria detalhada
-
Monitoramento:
- Métricas de performance
- Alertas de sistema
- Dashboard de saúde
-
Testes:
- Testes unitários para cada contexto
- Testes de integração
- Testes end-to-end
Este projeto segue os princípios do Domain-Driven Design. Ao contribuir:
- Mantenha a separação clara entre contextos
- Implemente testes para novas funcionalidades
- Siga os padrões de código estabelecidos
- Documente mudanças significativas
Este projeto é licenciado sob a licença ISC.