Todos os projetos
PROJETO PESSOAL / No ar

Fintal.

Finanças pessoais a partir dos extratos do banco, sem senha do banco.

  • Next.js
  • TypeScript
  • NestJS
  • Tailwind CSS
  • Radix UI
  • Vitest
  • Playwright
Tela de insights do Fintal em português: medidor de saúde financeira, gráfico mês a mês de receitas, despesas e saldo com meses de previsão, e progresso do orçamento em relação ao limite mensal.

Visão geral

O Fintal é um app de finanças pessoais focado em privacidade. Em vez de pedir credenciais do banco, ele importa os CSVs que os bancos já oferecem, organiza transações, parcelas e assinaturas e transforma tudo em um painel de tendências, orçamentos e diagnósticos.

O que faz

  • Importação de CSV com detecção automática de formato para Nubank, C6 Bank e Wise (incluindo exportações ZIP multimoeda), e mapeamento de colunas para outros bancos.
  • Categorização automática, com categorias personalizadas.
  • Contas e cartões, e uma lista de transações com busca, filtros, edição em massa e rolagem infinita.
  • Parcelas e assinaturas acompanhadas como gastos recorrentes.
  • Um painel com nota de saúde financeira, gráficos mês a mês, mapa de calor de intensidade e divisão por categoria.
  • Modo privacidade que borra todos os valores do app, ativado pelo header ou pela tecla P.
  • Paleta de comandos (⌘K) e atalhos globais, missões guiadas de onboarding e um PWA instalável.

Como foi construído

  • Sem login no banco: os dados entram só por arquivos que o usuário exporta, lidos por detectores específicos de cada banco com mapeamento genérico de colunas como alternativa.
  • O modo privacidade é um contexto React salvo no localStorage. Ele define um atributo no documento, e um componente PrivacyAmount aplica o desfoque em CSS, para que qualquer valor em qualquer tela possa ser escondido de forma consistente.
  • A preferência de tema (claro, escuro ou sistema) é aplicada por um script antes da primeira pintura, e o Tailwind roda em modo class para que a escolha do app prevaleça sobre a do sistema operacional.
  • O frontend em Next.js App Router conversa com uma API em NestJS. O login usa Google OAuth com JWT.
  • Portões de qualidade: ESLint, Prettier, testes unitários com Vitest e testes end-to-end com Playwright, com o Husky rodando lint, type-check e um build completo antes de cada push.