← Projetos/Finanças pessoais · PF + PJ·2026

Grana

Importa o extrato do banco e mostra quanto entrou e saiu no mês, separando pessoa física e empresa.
Grana

Contexto e problema

Eu controlava as finanças numa planilha e queria algo mais organizado: quanto entrou e saiu no mês, com balanço, separando os gastos de PF e de PJ. O Grana importa o extrato do Nubank e monta isso sozinho. Por enquanto é de uso pessoal; a versão pública vem depois. Os próximos passos são contas recorrentes com aviso de vencimento e um chat com IA para registrar gastos e fazer perguntas sobre os registros.

Decisões técnicas

Por que Neon e não Supabase

A primeira escolha foi o Supabase, mas o plano gratuito não tinha mais vaga para projeto e pausa o banco depois de 7 dias sem uso. O Neon desliga quando ninguém usa e volta sozinho na próxima requisição.

Como a importação não duplica nada

São duas camadas: o hash do arquivo inteiro barra o mesmo extrato enviado de novo, e o identificador que o banco dá a cada transação impede a mesma linha duas vezes. O arquivo original nunca é guardado, só o hash.

Por que dinheiro em centavos inteiros

Valores ficam como inteiros em centavos, com sinal. Assim não existe erro de arredondamento de ponto flutuante numa soma de mês inteiro.

Desafios

  • 01O extrato do Nubank vem com a codificação errada no cabeçalho. O leitor do arquivo foi escrito à mão para lidar com isso.
  • 02Uma transferência da conta PJ para a PF não é gasto nem receita. O Grana reconhece essas transferências pelo CPF/CNPJ e pela conta na descrição, para não contar o mesmo dinheiro duas vezes.

Resultado

2
camadas contra importação duplicada
17
arquivos de teste com Postgres em memória
3 dias
entre cada backup automático do banco

Próximo case

iagogois.com.br →

--fps