Financas do casal em um so lugar.
O CoupleDin e uma aplicacao web responsiva para casais organizarem a vida financeira compartilhada. O app reune receitas, despesas, cartoes, investimentos, metas e relatorios em um espaco privado para duas pessoas, com atualizacoes em tempo real e regras de divisao de gastos.
O projeto esta em desenvolvimento ativo. As funcionalidades descritas abaixo refletem o que existe atualmente no codigo.
- Cadastro e login por e-mail e senha.
- Criacao de um espaco financeiro compartilhado.
- Entrada do parceiro por codigo de convite de uso unico.
- Limite de duas pessoas por espaco.
- Perfil individual com nome e foto.
- Saudacao e interface atualizadas quando o parceiro entra no espaco.
- Isolamento dos dados de cada casal por Row Level Security (RLS).
- Visao consolidada de saldo, entradas, saidas e compras no credito.
- Grafico de fluxo de caixa dos ultimos seis meses.
- Lista de transacoes recentes.
- Navegacao apenas pelos meses que possuem movimentacoes.
- Paineis detalhados para saldo, receitas, despesas e faturas.
- Atualizacao automatica das transacoes por Supabase Realtime.
- Estados de carregamento, erro e ausencia de dados.
- Cadastro, edicao e exclusao de transacoes.
- Tipos de lancamento: entrada, debito e credito.
- Categorias como alimentacao, lazer, transporte, moradia, saude, renda e outros.
- Identificacao de quem realizou o pagamento.
- Divisao individual, proporcional ou conjunta em 50/50.
- Filtros por mes, categoria, tipo e responsavel.
- Vinculo de compras no credito a um cartao.
- Parcelamento automatico, com geracao das parcelas nos meses seguintes.
- Cadastro rapido em linguagem natural com Google Gemini.
Exemplo de lancamento por texto:
Paguei R$ 120 no mercado hoje no credito, dividido entre nos dois.
A IA interpreta data, descricao, categoria, valor, tipo, responsavel e forma de divisao. Antes de salvar, o usuario pode revisar os dados interpretados.
- Cadastro e edicao de cartoes pessoais, do parceiro ou conjuntos.
- Limite total, cor, final do cartao, dia de fechamento e dia de vencimento.
- Calculo do limite utilizado e disponivel.
- Fatura organizada por cartao e mes de competencia.
- Compras feitas no dia de fechamento ou depois sao movidas para a proxima fatura.
- Detalhamento das compras e indicador visual de uso do limite.
- Carteira consolidada do casal.
- Suporte a acoes, FIIs, criptomoedas e renda fixa.
- Multiplos aportes no mesmo ativo, agrupados por ticker.
- Calculo de quantidade, preco medio, valor investido, patrimonio atual e rentabilidade.
- Historico de aportes com edicao e exclusao.
- Atualizacao automatica de precos a cada cinco minutos.
- Busca de ativos da B3 pela Brapi e de criptomoedas pela CoinGecko.
- Lista de titulos publicos e produtos privados de renda fixa.
- Estimativa de evolucao da renda fixa por taxa personalizada.
- Fallback para o preco medio quando uma API externa estiver indisponivel.
- Criacao de objetivos financeiros compartilhados.
- Valor alvo, valor ja guardado e prazo opcional.
- Imagem de capa personalizada.
- Barra de progresso e calculo de quanto falta.
- Indicacao de prazo restante ou vencido.
- Aportes em uma meta, registrados tambem como transacoes.
- Edicao e exclusao de metas.
- Fechamento das despesas conjuntas.
- Calculo de quanto cada pessoa deveria pagar.
- Divisao em 50/50 ou proporcional a renda configurada.
- Indicacao de quem precisa transferir para quem e qual valor.
- Resumo copiavel para compartilhamento.
- Evolucao dos gastos por semana ou mes.
- Taxa estimada de economia.
- Categoria com maior gasto.
- Distribuicao de despesas por categoria.
- Lista dos maiores gastos.
- Visualizacao dos perfis do casal.
- Alteracao de nome e avatar.
- Copia do codigo de convite.
- Escolha do modelo de divisao das despesas.
- Percentuais personalizados ou proporcionais as rendas.
- Tema claro e escuro com preferencia salva no navegador.
- Logout.
- Cada usuario pertence a no maximo um casal.
- Um espaco aceita no maximo dois membros.
- O codigo de convite e rotacionado depois que o parceiro entra.
- Os membros visualizam os dados compartilhados do proprio casal.
- Cada lancamento registra o usuario que o criou; as permissoes efetivas devem ser revisadas ao consolidar as migrations antigas e atuais.
- Compras parceladas geram um lancamento para cada parcela.
- A primeira parcela recebe eventuais centavos restantes do arredondamento.
- A competencia da fatura considera o dia de fechamento do cartao.
- Metas, investimentos, cartoes e transacoes sao vinculados ao casal.
| Camada | Tecnologias |
|---|---|
| Aplicacao | React 19, TypeScript e TanStack Start |
| Rotas e SSR | TanStack Router, Vite e Nitro |
| Dados e cache | TanStack Query e Zustand |
| Interface | Tailwind CSS 4, Radix UI e shadcn/ui |
| Graficos e animacoes | Recharts e Framer Motion |
| Formularios | React Hook Form e Zod |
| Backend | Supabase Auth, Postgres, Storage e Realtime |
| Inteligencia artificial | Google Gemini via Vercel AI SDK |
| Cotacoes | Brapi e CoinGecko |
| Testes | Vitest, Testing Library e jsdom |
| Deploy | Vercel |
src/
|-- components/ componentes compartilhados, modais e UI
|-- hooks/ autenticacao, perfis, dados financeiros e mutations
|-- integrations/ clientes, middleware e tipos do Supabase
|-- lib/ regras financeiras, IA e utilitarios
|-- routes/ paginas e rotas do TanStack Router
|-- services/api/ integracoes com APIs de cotacao
`-- store/ estado do fluxo de onboarding
supabase/
|-- migrations/ schema, funcoes, triggers, buckets e policies RLS
`-- config.toml configuracao local do projeto Supabase
O frontend consulta o Supabase diretamente usando a chave publica. A autorizacao real fica no banco por meio das policies RLS. Operacoes sensiveis do onboarding, como criar um casal ou entrar por convite, usam funcoes Postgres protegidas.
| Tabela | Responsabilidade |
|---|---|
profiles |
Nome, avatar e vinculo do usuario com o casal |
couples |
Espaco compartilhado, convite e configuracoes |
transactions |
Entradas, despesas, compras, parcelas e aportes |
cards |
Cartoes, limites e datas de fechamento/vencimento |
investments |
Aportes e posicoes de investimento |
goals |
Metas financeiras compartilhadas |
O Supabase Storage possui buckets para avatares e capas de metas.
- Node.js 20 ou superior
- npm ou Bun
- Um projeto no Supabase
- Uma chave do Google Gemini para o cadastro por linguagem natural
- Opcionalmente, um token da Brapi
git clone <url-do-repositorio>
cd CoupleFinance
npm install
cp .env.example .env
npm run devNo PowerShell, use Copy-Item .env.example .env no lugar de cp.
A aplicacao sera iniciada pelo Vite; consulte no terminal a URL e a porta selecionadas.
SUPABASE_PROJECT_ID="seu-project-id"
SUPABASE_PUBLISHABLE_KEY="sua-chave-publica"
SUPABASE_URL="https://seu-projeto.supabase.co"
VITE_SUPABASE_PROJECT_ID="seu-project-id"
VITE_SUPABASE_PUBLISHABLE_KEY="sua-chave-publica"
VITE_SUPABASE_URL="https://seu-projeto.supabase.co"
GEMINI_API_KEY="sua-chave-do-gemini"
VITE_BRAPI_TOKEN="seu-token-brapi"GEMINI_API_KEY e usada somente no servidor pela funcao que interpreta lancamentos. Nao use o prefixo VITE_ para essa chave, pois variaveis com esse prefixo podem ser enviadas ao navegador. Nunca publique .env, chaves privadas ou a chave service_role do Supabase.
As migrations em supabase/migrations criam as tabelas, funcoes, triggers, buckets e policies do projeto. Aplique-as ao seu projeto Supabase usando a CLI oficial:
npx supabase link --project-ref <project-ref>
npx supabase db pushAntes de usar o app, confirme que o Auth por e-mail/senha esta habilitado e que todas as migrations foram aplicadas.
| Comando | Descricao |
|---|---|
npm run dev |
Inicia o ambiente de desenvolvimento |
npm run build |
Gera o build de producao |
npm run preview |
Executa uma previa do build |
npm run lint |
Executa o ESLint |
npm run format |
Formata o projeto com Prettier |
npx vitest run |
Executa os testes automatizados |
- Validacao do nome durante o cadastro.
- Saudacao sem parceiro vinculado.
- Atualizacao da interface via Realtime quando o parceiro entra.
- Script de ponta a ponta para cadastro de dois usuarios, criacao do espaco e entrada por convite.
O script e2e-test.js usa um projeto Supabase real e deve ser revisado/configurado antes da execucao em outro ambiente.
Funcionalidades principais de cadastro, espaco do casal, lancamentos, cartoes, investimentos, metas e relatorios ja estao implementadas. Alguns pontos ainda representam estado de interface e nao um historico financeiro persistente:
- Pagar fatura exibe confirmacao, mas ainda nao grava um pagamento ou fechamento no banco.
- Marcar acerto como resolvido dura apenas durante a sessao da pagina.
- Os relatorios sao calculados no cliente a partir das transacoes carregadas.
- Ainda nao existe exportacao CSV/PDF, orcamento mensal por categoria ou exclusao de conta pela interface.
- Alguns filtros e nomes padrao ainda usam dados fixos do casal original e precisam ser generalizados.
- A cobertura automatizada ainda e pequena para regras financeiras criticas.
- RLS esta habilitado nas tabelas financeiras.
- As tabelas financeiras usam policies baseadas no casal autenticado.
- Funcoes de convite e criacao do espaco exigem autenticacao.
- A chave publica do Supabase pode ficar no cliente;
service_rolenunca deve ser exposta. - Dados financeiros exigem revisao continua das migrations e policies antes de producao.
- As migrations acumulam policies de fases diferentes do projeto; recomenda-se uma auditoria e consolidacao antes de uma liberacao publica.
- O projeto nao deve registrar tokens, senhas ou dados financeiros sensiveis em logs.
O projeto esta preparado para deploy na Vercel com Nitro:
- Importe o repositorio na Vercel.
- Cadastre as variaveis de ambiente do
.env.example. - Use
npm run buildcomo comando de build. - Aponte o frontend para o projeto Supabase que recebeu as migrations.
- Persistir pagamentos de fatura e fechamentos mensais.
- Generalizar nomes, responsaveis e regras para qualquer casal.
- Adicionar orcamentos por categoria.
- Exportar dados em CSV e PDF.
- Ampliar testes de parcelamento, faturas, metas, investimentos e RLS.
- Criar historico de acertos entre o casal.
- Melhorar observabilidade, acessibilidade e tratamento de falhas das APIs externas.
O CoupleDin e uma ferramenta de organizacao financeira. Cotacoes e calculos exibidos podem depender de APIs externas e nao constituem recomendacao de investimento.
