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 →