All projects
SIDE PROJECT / Live

Fintal.

Personal finance insights from bank exports, without bank passwords.

  • Next.js
  • TypeScript
  • NestJS
  • Tailwind CSS
  • Radix UI
  • Vitest
  • Playwright
Fintal insights screen in Brazilian Portuguese: a financial health score gauge, a month-over-month chart of income, expenses and balance with forecast months, and budget progress against the monthly limit.

Overview

Fintal is a privacy-focused personal finance app. Instead of asking for bank credentials, it imports the CSV exports banks already provide, organizes transactions, installments and subscriptions, and turns them into a dashboard of trends, budgets and diagnostics.

What it does

  • CSV import with automatic format detection for Nubank, C6 Bank and Wise (including multi-currency ZIP exports), and column mapping for other banks.
  • Automatic categorization, with custom categories.
  • Accounts and cards, and a transaction list with search, filters, bulk edit and infinite scroll.
  • Installments and subscriptions tracked as recurring spend.
  • A dashboard with a financial health score, month-over-month charts, an intensity heatmap and category breakdowns.
  • Privacy mode that blurs every monetary value in the app, toggled from the header or with P.
  • Command palette (⌘K) and global keyboard shortcuts, guided onboarding missions, and an installable PWA.

How it’s built

  • No bank login: data enters only through files the user exports, parsed by bank-specific detectors with a generic column-mapping fallback.
  • Privacy mode is a React context persisted in localStorage. It sets a data attribute on the document, and a PrivacyAmount wrapper applies the blur in CSS, so any amount on any screen can be hidden consistently.
  • Theme preference (light, dark or system) is applied by a boot script before first paint, and Tailwind runs in class mode so the app's choice wins over the operating system's.
  • The Next.js App Router frontend talks to a NestJS API. Sign-in uses Google OAuth with JWT.
  • Quality gates: ESLint, Prettier, Vitest unit tests and Playwright end-to-end tests, with Husky running lint, type-check and a full build before every push.