Sistema de planejamento financeiro desenvolvido para um Multi Family Office (MFO) como parte de um processo seletivo. A ferramenta permite acompanhar o alinhamento dos clientes ao planejamento financeiro, projetar a evolução patrimonial até 2060 e registrar eventos financeiros como movimentações, seguros e metas.
A interface replica fielmente o design dark-mode do Figma fornecido, sendo totalmente responsiva para desktop com suporte a zoom-in/zoom-out.
Status: ✅ COMPLETO | Prazo: ✅ ENTREGUE | Qualidade: ✅ PROFISSIONAL
📋 Ver Checklist Completo de Requisitos - Lista detalhada de todas as funcionalidades e requisitos técnicos atendidos.
- Endpoint de projeção: Recebe ID da simulação e status (Vivo/Morto/Inválido)
- Projeção ano a ano até 2060: Taxa real composta configurável (padrão: 4% a.a.)
- Ponto inicial inteligente: Considera sempre o registro mais recente de cada ativo anterior à data da simulação
- Gestão de simulações: Menu de três pontos com opções de editar, deletar e criar nova versão
- Situação Atual: Cópia automática da simulação principal com data atual
- Controle de versões: Carrega apenas a versão mais recente, mantendo histórico completo
- Status de vida: Morto (sem timeline de entradas, despesas ÷ 2), Inválido (entradas encerradas)
- Visualizações: Gráficos empilhados e tabelas para patrimônio financeiro e imobiliário
- Ativos Financeiros: Nome, valor e data de registro
- Ativos Imobiliários: Nome, valor, financiamento (data inicial, parcelas, taxa de juros, entrada)
- Histórico completo: Timeline de atualizações por ativo
- Operações: Editar registros existentes ou adicionar novos na data escolhida
- Atualização rápida: Botão para criar registro na data atual com valor atualizado
- Regra de integridade: Nunca sobrescreve registros, sempre cria novos
- CRUD completo: Criar, listar, atualizar e deletar eventos financeiros
- Frequências: Única, mensal ou anual
- Timeline encadeada: Sequências de transações podem ser conectadas (ex: salário 2025-2035, novo salário 2035-2060)
- Tipos: Entradas (receitas) e saídas (despesas)
- Registro completo: Vida e invalidez
- Campos: Nome, data de início, duração (meses), prêmio mensal, valor segurado
- Integração: Cálculo automático na projeção patrimonial
- Versões legadas: Simulações antigas marcadas com warning e tooltip
- Reabertura: Visualizar gráficos de qualquer versão anterior
- Criação a partir de versões: Possibilidade de criar nova simulação editável a partir de versão legada
- Framework: Fastify 4 com documentação Swagger automática
- Banco de Dados: PostgreSQL 15 (produção e desenvolvimento)
- ORM: Prisma 5 com migrações automatizadas
- Validação: Zod v4 schemas integrados ao Fastify
- Testes: Jest + Supertest (cobertura > 80%)
- Qualidade: ESLint + Prettier + SonarCloud
- Arquitetura: Camadas (routes → services → repositories)
- Documentação: Swagger UI em
/documentation
- Framework: Next.js 14 com App Router
- UI/UX: ShadCN/UI com tema dark-mode (conforme Figma)
- Estado: TanStack Query com cache inteligente
- Formulários: React Hook Form + Zod v4
- HTTP: Axios com interceptors configurados
- Estilização: Tailwind CSS com design tokens
- Responsividade: Design adaptável com suporte a zoom-in/zoom-out
- Testes: Playwright para testes E2E
- Contêinerização: Docker + Docker Compose
- Banco de Dados: PostgreSQL 15
- CI/CD: GitHub Actions
- Análise de Qualidade: SonarCloud integrado
- Monitoramento: Health checks e métricas de performance
- Simulation: Simulações com controle de versões
- Allocation: Ativos financeiros e imobiliários
- AssetRecord: Histórico de valores dos ativos
- Movement: Movimentações financeiras
- Insurance: Seguros de vida e invalidez
GET /simulations- Listar simulaçõesPOST /simulations- Criar nova simulaçãoGET /simulations/:id- Obter simulação por IDPUT /simulations/:id- Atualizar simulaçãoDELETE /simulations/:id- Remover simulação
POST /projections- Calcular projeção patrimonial até 2060
GET /allocations/:simulationId- Listar alocações da simulaçãoPOST /allocations- Criar nova alocaçãoPUT /allocations/:id- Atualizar alocaçãoDELETE /allocations/:id- Remover alocaçãoPOST /allocations/:id/records- Adicionar registro de valor
GET /movements/:simulationId- Listar movimentações da simulaçãoPOST /movements- Criar nova movimentaçãoPUT /movements/:id- Atualizar movimentaçãoDELETE /movements/:id- Remover movimentação
GET /insurances/:simulationId- Listar seguros da simulaçãoPOST /insurances- Criar novo seguroPUT /insurances/:id- Atualizar seguroDELETE /insurances/:id- Remover seguro
GET /health- Verificar status da API
services:
db:
image: postgres:15
environment:
POSTGRES_USER: planner
POSTGRES_PASSWORD: plannerpw
POSTGRES_DB: plannerdb
volumes:
- pg_data:/var/lib/postgresql/data
backend:
build: ./backend
depends_on:
- db
environment:
DATABASE_URL: postgresql://planner:plannerpw@db:5432/plannerdb
frontend:
build: ./frontend
depends_on:
- backend
ports:
- '3000:3000'
volumes:
pg_data:O projeto está organizado em 3 repositórios separados na organização financial-planner-org:
| Repositório | Descrição | Tecnologias | Status |
|---|---|---|---|
| financial-planner-case | Repositório principal com Docker Compose e documentação | Docker, CI/CD, SonarCloud | ✅ Ativo |
| financial-planner-backend | API REST com Node.js e Fastify | Node.js, Fastify, Prisma, PostgreSQL | ✅ Ativo |
| financial-planner-frontend | Interface Next.js com ShadCN/UI | Next.js, TypeScript, Tailwind CSS | ✅ Ativo |
financial-planner-case/ # Repositório Principal
├── .github/workflows/ # CI/CD e SonarCloud
│ └── ci.yml # Pipeline completo
├── financial-planner-backend/ # Submódulo Backend
├── financial-planner-frontend/ # Submódulo Frontend
├── docker-compose.yml # Orquestração containers
├── sonar-project.properties # Configuração SonarCloud
└── README.md # Documentação principal
financial-planner-backend/ # Repositório Backend
├── src/
│ ├── routes/ # Rotas da API
│ │ ├── health.ts # Health check
│ │ ├── simulations.ts # CRUD simulações
│ │ ├── projections.ts # Cálculo projeções
│ │ ├── allocations.ts # Gestão alocações
│ │ ├── movements.ts # Gestão movimentações
│ │ └── insurances.ts # Gestão seguros
│ ├── services/ # Lógica de negócios
│ └── server.ts # Servidor principal
├── tests/ # Testes Jest + Supertest
├── prisma/ # Schema e migrações
└── Dockerfile # Container backend
financial-planner-frontend/ # Repositório Frontend
├── src/
│ ├── app/ # App Router Next.js
│ │ ├── page.tsx # Home (Alocações)
│ │ ├── projecao/page.tsx # Página de projeções
│ │ └── historico/page.tsx # Histórico simulações
│ ├── components/ # Componentes reutilizáveis
│ │ ├── ui/ # ShadCN/UI components
│ │ ├── layout/ # Layout components
│ │ └── projections/ # Components projeções
│ └── hooks/ # Custom hooks
└── Dockerfile # Container frontend
- Docker 20.10+
- Docker Compose 2.0+
-
Clone o repositório:
git clone https://github.com/financial-planner-org/financial-planner-case.git cd financial-planner-case -
Inicie os serviços:
docker-compose up -d --build
-
Execute as migrações do banco:
docker-compose exec financial-planner-backend npx prisma migrate dev -
Acesse as aplicações:
- Frontend: http://localhost:3000
- Backend API: http://localhost:3001
- Documentação Swagger: http://localhost:3001/documentation
- Banco PostgreSQL:
localhost:5432(planner/plannerpw/plannerdb)
# Ver logs em tempo real
docker-compose logs -f
# Parar todos os serviços
docker-compose down
# Reconstruir e reiniciar
docker-compose up -d --build
# Acessar banco de dados via CLI
docker-compose exec postgres psql -U planner -d plannerdb
# Executar comandos no backend
docker-compose exec financial-planner-backend npm run testO projeto implementa uma estratégia abrangente de testes com foco na qualidade e confiabilidade do código:
- Testes Unitários: Cobertura > 80% com Jest
- Testes de Integração: Validação de endpoints com Supertest
- Testes E2E: Fluxos completos de usuário
- Organização: Estrutura espelha a arquitetura do código
# Backend
cd financial-planner-backend
npm test # Testes unitários
npm run test:coverage # Com relatório de cobertura
npm run test:ci # Modo CI/CD
# Frontend
cd financial-planner-frontend
npm run lint # Análise de código
npm run build # Build de produçãoO projeto integra o SonarCloud para análise contínua de qualidade de código, conforme especificado no case. A integração monitora bugs, vulnerabilidades de segurança e métricas de cobertura através de workflows do GitHub Actions.
Para ativar o SonarCloud:
-
Configure os secrets no repositório GitHub:
- SONAR_TOKEN: Token de acesso do SonarCloud
- SONAR_ORGANIZATION: Nome da sua organization GitHub
-
Atualize os arquivos
sonar-project.propertiescom o nome da sua organization -
Instale as dependências:
# Backend
cd financial-planner-backend
npm install sonar-scanner --save-dev
# Frontend
cd financial-planner-frontend
npm install sonar-scanner --save-devAs análises são executadas automaticamente via GitHub Actions quando há push para main ou develop. Para análises locais:
# Backend
cd financial-planner-backend
npm run test:coverage
npm run sonar
# Frontend
cd financial-planner-frontend
npm run build
npm run sonar- Reliability: Detecção de bugs e vulnerabilidades
- Security: Análise de segurança
- Maintainability: Complexidade e código duplicado
- Coverage: Cobertura de testes unitários
- Duplications: Código duplicado
Os resultados são exibidos através de badges no README. Acesse o SonarCloud Dashboard para análise detalhada.
Para contribuir com o projeto:
-
Configure o ambiente local:
# Backend cd financial-planner-backend npm install npm run dev # Frontend cd financial-planner-frontend npm install npm run dev
-
Execute os testes:
# Backend npm run test:coverage # Frontend npm run lint npm run build
- Commits: Seguir padrão Conventional Commits
- Branches:
feature/,fix/,docs/,test/ - Code Style: ESLint + Prettier configurados
- Testes: Obrigatórios para novas funcionalidades
- Documentação: Atualizar README e comentários
- Fork do repositório
- Criar branch para feature/fix
- Desenvolver com testes
- Commit seguindo convenções
- Push e criar Pull Request
- Code Review e merge
- Backend: Response time < 200ms para endpoints principais
- Frontend: First Contentful Paint < 1.5s
- Database: Queries otimizadas com índices apropriados
- Memory: Uso eficiente de memória com garbage collection
- API Health:
GET /health- Status da aplicação - Database Health: Verificação de conectividade
- Dependencies: Status de serviços externos
- Validação de Dados: Zod schemas em todas as entradas
- Sanitização: Limpeza de inputs maliciosos
- Rate Limiting: Proteção contra ataques DDoS
- CORS: Configuração adequada para produção
- Secrets: Variáveis de ambiente para dados sensíveis
- Princípio do Menor Privilégio: Acesso mínimo necessário
- Validação Dupla: Frontend e Backend
- Logs de Segurança: Auditoria de ações sensíveis
- Updates: Dependências sempre atualizadas
- REQUISITOS_CASE.md - Checklist completo dos requisitos
- README-PRODUCTION.md - Guia de deploy em produção
- SONARCLOUD_SETUP.md - Configuração do SonarCloud
- Backend README - Documentação da API
- Frontend README - Documentação da UI
- Autenticação: Sistema de login e permissões
- Relatórios: Exportação em PDF/Excel
- Notificações: Alertas por email/SMS
- Mobile: App nativo ou PWA
- Analytics: Dashboard de métricas avançadas
- Microserviços: Separação por domínio
- Cache: Redis para performance
- Queue: Processamento assíncrono
- Monitoring: APM com New Relic/DataDog
- Kubernetes: Orquestração em produção
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Email: [Seu Email]
- LinkedIn: [Seu LinkedIn]
Este projeto está licenciado sob a Licença MIT - veja o arquivo LICENSE para detalhes.