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.
