Skip to content

Latest commit

 

History

27 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Financial Planner - Multi Family Office

License: MIT TypeScript Next.js Fastify Prisma Node.js PostgreSQL Docker

Case Status Prazo Qualidade Testes Docker

Backend Quality

Quality Gate Status Coverage Bugs Code Smells Security Rating Duplicated Lines (%)

Frontend Quality

Quality Gate Status Coverage Bugs Code Smells Security Rating Duplicated Lines (%)

📋 Descrição do Projeto

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.

🎯 CASE ATENDIDO - 100% DOS REQUISITOS

Status: ✅ COMPLETO | Prazo: ✅ ENTREGUE | Qualidade: ✅ PROFISSIONAL

📋 Ver Checklist Completo de Requisitos - Lista detalhada de todas as funcionalidades e requisitos técnicos atendidos.

🎯 Funcionalidades Implementadas

✅ Projeção Patrimonial

  • 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

✅ Alocações

  • 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

✅ Movimentações

  • 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)

✅ Seguros

  • 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

✅ Histórico de Simulações

  • 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

🏗️ Arquitetura e Tecnologias

Stack Tecnológica

Backend (Node.js 20 + TypeScript)

  • 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

Frontend (Next.js 14 + TypeScript)

  • 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

Infraestrutura

  • 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

Modelo de Dados

  • 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

📊 Endpoints da API

Simulações

  • GET /simulations - Listar simulações
  • POST /simulations - Criar nova simulação
  • GET /simulations/:id - Obter simulação por ID
  • PUT /simulations/:id - Atualizar simulação
  • DELETE /simulations/:id - Remover simulação

Projeções

  • POST /projections - Calcular projeção patrimonial até 2060

Alocações

  • GET /allocations/:simulationId - Listar alocações da simulação
  • POST /allocations - Criar nova alocação
  • PUT /allocations/:id - Atualizar alocação
  • DELETE /allocations/:id - Remover alocação
  • POST /allocations/:id/records - Adicionar registro de valor

Movimentações

  • GET /movements/:simulationId - Listar movimentações da simulação
  • POST /movements - Criar nova movimentação
  • PUT /movements/:id - Atualizar movimentação
  • DELETE /movements/:id - Remover movimentação

Seguros

  • GET /insurances/:simulationId - Listar seguros da simulação
  • POST /insurances - Criar novo seguro
  • PUT /insurances/:id - Atualizar seguro
  • DELETE /insurances/:id - Remover seguro

Saúde

  • GET /health - Verificar status da API

🐳 Infraestrutura

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:

📦 Estrutura do Projeto

O projeto está organizado em 3 repositórios separados na organização financial-planner-org:

🏢 Repositórios da Organização

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

📁 Estrutura Detalhada

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

🚀 Instalação e Execução

Pré-requisitos

  • Docker 20.10+
  • Docker Compose 2.0+

Configuração Inicial

  1. Clone o repositório:

    git clone https://github.com/financial-planner-org/financial-planner-case.git
    cd financial-planner-case
  2. Inicie os serviços:

    docker-compose up -d --build
  3. Execute as migrações do banco:

    docker-compose exec financial-planner-backend npx prisma migrate dev
  4. Acesse as aplicações:

Comandos de Desenvolvimento

# 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 test

🧪 Qualidade e Testes

Estratégia de Testes

O 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

Execução de Testes

# 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ção

Análise de Qualidade com SonarCloud

O 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.

Configuração Básica

Para ativar o SonarCloud:

  1. Configure os secrets no repositório GitHub:

    • SONAR_TOKEN: Token de acesso do SonarCloud
    • SONAR_ORGANIZATION: Nome da sua organization GitHub
  2. Atualize os arquivos sonar-project.properties com o nome da sua organization

  3. 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-dev

Execução de Análises

As 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

Métricas Analisadas

  • 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.

🤝 Desenvolvimento e Contribuição

Ambiente de Desenvolvimento

Para contribuir com o projeto:

  1. Configure o ambiente local:

    # Backend
    cd financial-planner-backend
    npm install
    npm run dev
    
    # Frontend
    cd financial-planner-frontend
    npm install
    npm run dev
  2. Execute os testes:

    # Backend
    npm run test:coverage
    
    # Frontend
    npm run lint
    npm run build

Convenções de Código

  • 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

Workflow de Desenvolvimento

  1. Fork do repositório
  2. Criar branch para feature/fix
  3. Desenvolver com testes
  4. Commit seguindo convenções
  5. Push e criar Pull Request
  6. Code Review e merge

📈 Performance e Monitoramento

Métricas de Performance

  • 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

Health Checks

  • API Health: GET /health - Status da aplicação
  • Database Health: Verificação de conectividade
  • Dependencies: Status de serviços externos

🔒 Segurança

Medidas Implementadas

  • 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

Boas Práticas

  • 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

📚 Documentação Adicional

🎯 Próximos Passos

Melhorias Futuras

  • 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

Roadmap Técnico

  • 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

📞 Suporte e Contato

📄 Licença

Este projeto está licenciado sob a Licença MIT - veja o arquivo LICENSE para detalhes.


Desenvolvido com ❤️ para o processo seletivo

GitHub LinkedIn Portfolio

About

Sistema completo de planejamento financeiro para Multi Family Office, com projeções patrimoniais até 2060, gestão de ativos, movimentações e seguros. Desenvolvido com Node.js, Next.js e Docker.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Packages

Contributors

Languages