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.
