Sistema inteligente de controle financeiro pessoal com integração de IA
O Finance AI é uma aplicação moderna de gestão financeira pessoal que utiliza Inteligência Artificial para ajudar usuários a:
- 📊 Gerenciar contas bancárias e transações
- 💰 Criar e acompanhar orçamentos
- 📈 Monitorar investimentos
- 🎯 Atingir metas financeiras
- 🤖 Receber insights inteligentes via IA
- 🎮 Gamificar hábitos financeiros saudáveis
O Finance AI segue uma arquitetura modular baseada em domínios (Domain Modules), inspirada em Clean Architecture e Domain-Driven Design.
- Domain Modules: Código organizado por domínio, não por tipo técnico
- Repository Pattern: Isolamento da camada de dados
- SSR Safe: Sem dependências client-side em lógica de negócio
- Zod Everywhere: Validação em runtime de todas as entradas
- AI Tools Layer: Integração segura com LLM
- Clean Architecture: Separação clara de responsabilidades
📖 Decisões Arquiteturais: Veja docs/ADR-0001-arquitetura-base.md
Gerenciamento de contas bancárias do usuário.
Responsabilidades:
- CRUD de contas (Conta Corrente, Poupança, Carteira Digital)
- Cálculo de saldo consolidado
- Histórico de saldos
Serviços principais:
accountService.create()- Criar nova contaaccountService.getBalance()- Obter saldo atualaccountService.listByUser()- Listar contas do usuário
Schemas:
createAccountSchema- Validação de criaçãoupdateAccountSchema- Validação de atualização
Gestão de receitas e despesas.
Responsabilidades:
- Registro de transações (INCOME/EXPENSE)
- Categorização automática (via IA)
- Atualização de saldo das contas
- Filtragem e busca avançada
Serviços principais:
transactionService.create()- Criar transação e atualizar saldotransactionService.listByPeriod()- Buscar por períodotransactionService.categorize()- Categorizar com IA
Schemas:
createTransactionSchema- Validação de criaçãotransactionFilterSchema- Validação de filtros
Controle de orçamentos mensais por categoria.
Responsabilidades:
- Criação de orçamentos mensais
- Monitoramento de gastos vs. orçado
- Alertas de excesso de gastos
- Sugestões de economia
Serviços principais:
budgetService.create()- Criar orçamentobudgetService.checkOverspending()- Verificar se ultrapassoubudgetService.getSuggestions()- Sugestões da IA
Schemas:
createBudgetSchema- Validação de criaçãobudgetProgressSchema- Validação de progresso
Gestão de carteira de investimentos.
Responsabilidades:
- Registro de ativos (ações, FIIs, renda fixa)
- Cálculo de rentabilidade (ROI)
- Acompanhamento de dividendos
- Sugestões de diversificação
Serviços principais:
investmentService.create()- Adicionar investimentoinvestmentService.calculateROI()- Calcular retornoinvestmentService.getDiversificationSuggestions()- Sugestões IA
Schemas:
createInvestmentSchema- Validação de criaçãoinvestmentPerformanceSchema- Validação de performance
Integração com LLM para insights financeiros.
Responsabilidades:
- Análise de padrões de gastos
- Sugestões personalizadas
- Categorização automática de transações
- Respostas a perguntas financeiras
Serviços principais:
aiService.generateInsights()- Gerar insightsaiService.chat()- Chat financeiroaiService.categorizeTransaction()- Categorizar
LLM Tools disponíveis:
getFinancialSummaryTool- Resumo financeiroanalyzeSpendingPatternsTool- Análise de padrõessuggestBudgetAdjustmentsTool- Sugestões de orçamento
Sistema de pontuação e conquistas.
Responsabilidades:
- Atribuição de pontos por ações
- Sistema de conquistas (achievements)
- Ranking de usuários
- Recompensas por metas
Serviços principais:
pointsService.award()- Conceder pontospointsService.checkAchievements()- Verificar conquistaspointsService.getRanking()- Obter ranking
Schemas:
awardPointsSchema- Validação de pontuaçãoachievementSchema- Validação de conquistas
- Framework: Next.js 15 (App Router)
- Linguagem: TypeScript 5
- Banco de Dados: Firebase Firestore
- Autenticação: NextAuth.js (JWT)
- Estilização: Tailwind CSS
- Componentes: shadcn/ui
- Ícones: Lucide Icons
- Validação Runtime: Zod
- Type Safety: TypeScript strict mode
- LLM: Anthropic Claude (via API)
- Prompt Engineering: Custom AI Tools Layer
- Node.js 18+
- npm ou yarn
- Firebase Project configurado
- Chave API do Anthropic Claude
# Instalar dependências
npm install
# Configurar variáveis de ambiente
cp .env.example .env.local
# Editar .env.local com suas credenciais# Firebase
NEXT_PUBLIC_FIREBASE_API_KEY=
NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=
NEXT_PUBLIC_FIREBASE_PROJECT_ID=
NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=
NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=
NEXT_PUBLIC_FIREBASE_APP_ID=
# NextAuth
NEXTAUTH_SECRET=
NEXTAUTH_URL=http://localhost:3000
# Anthropic Claude
ANTHROPIC_API_KEY=npm run dev
# Aplicação rodará em http://localhost:3000npm run build
npm startfinance-ai/
├── src/
│ ├── domain/ # Módulos de domínio
│ │ ├── accounts/ # Contas bancárias
│ │ ├── transactions/ # Transações
│ │ ├── budgets/ # Orçamentos
│ │ ├── investments/ # Investimentos
│ │ ├── ai/ # IA
│ │ └── points/ # Gamificação
│ ├── app/ # Next.js App Router
│ ├── components/ # Componentes React
│ ├── utils/ # Utilitários
│ └── types/ # Tipos globais
├── docs/ # Documentação
│ └── ADR-0001-*.md # Architectural Decision Records
├── CONTRIBUTING.md # Guia de contribuição
└── README.md # Este arquivo
A aplicação possui um endpoint de health check para verificar se está funcionando:
curl http://localhost:3000/healthResposta esperada:
{
"status": "ok",
"version": "1.0.0",
"env": "development",
"timestamp": "2025-10-31T10:30:00.000Z"
}Execute o smoke test para verificar a saúde da aplicação:
npm run smokeEste script valida:
- ✅ Health endpoint responde corretamente
- ✅ Status é "ok"
- ✅ Estrutura da resposta está correta
- ✅ Timestamp é válido
Solução:
- Verifique se o arquivo
.env.localexiste - Confirme que todas as variáveis obrigatórias estão preenchidas
- Reinicie o servidor:
npm run dev
Solução:
- Certifique-se de que a chave mantém as quebras de linha (
\n) - Coloque a chave entre aspas duplas no
.env.local - Não remova os marcadores
BEGIN/END PRIVATE KEY
Solução:
- Verifique se a rota está definida em
app/ - Reinicie o servidor de desenvolvimento
- Limpe o cache:
rm -rf .next && npm run dev
Solução:
- Verifique os logs do console para detalhes
- Em desenvolvimento, a página de erro mostra detalhes
- Verifique se todas as variáveis de ambiente estão corretas
- Rode o smoke test:
npm run smoke
Solução:
O código de domínio deve ser SSR-safe (sem window, document, localStorage).
Execute a verificação:
npm run check:ssrSe encontrar erros, mova o código dependente de browser para componentes UI.
- ADR-0001: Arquitetura Base
- Guia de Domain Modules (em breve)
- Integração com IA (em breve)
Projeto desenvolvido como parte do meu portfolio pessoal.
Última atualização: 28 de Novembro de 2024