Personal Finance Dashboard -- Take control of your money
FinPulse is a self-hosted personal finance dashboard, built as an alternative to Mint and YNAB. It is built with Next.js and uses SQLite for zero-configuration storage. Track your income, expenses, budgets, financial goals, and investments all in one place.
- Authentication (email/password login, multi-user support)
- Dashboard with financial overview, charts, and key metrics
- Account management (checking, savings, credit cards, investments, loans)
- Transaction tracking with search, filters, and pagination
- Category system (hierarchical, fully customizable)
- CSV Import (Bank of America, Amex, SoFi parsers)
- Auto-categorization engine (keyword and regex matching rules)
- Pay stub tracking with deduction analysis
- Budget management with progress tracking
- Financial goals with projections
- Subscription tracker
- Insights and reports (spending trends, net worth, cash flow forecast)
- "Can I Afford This?" calculator
Prerequisites: Docker Desktop, Make, Git. Node.js is NOT needed locally.
git clone <repo-url>
cd finpulse
make start # Builds image, sets up DB, starts dev server
# Open http://localhost:3000
make db-seed # Load demo data
# Login: demo@finpulse.app / password123make start runs in detached mode. Use make logs to follow output and make stop to shut down.
Prerequisites: Docker Desktop, VS Code + "Dev Containers" extension.
- Open the project in VS Code
- Click Reopen in Container when prompted (or run
Dev Containers: Reopen in Containerfrom the command palette) - VS Code builds the image and runs
npm install && prisma generate && prisma db pushautomatically - Open the integrated terminal, start the dev server, and seed demo data:
make dev # Start Next.js dev server
make db-seed # Load demo data (first time only)- Open
http://localhost:3000— VS Code forwards the port automatically
Inside the devcontainer, make dev starts the server directly — no Docker wrapper needed. Stop it with Ctrl+C and restart with make dev.
| Command | Description |
|---|---|
make start |
Build image, set up DB, start dev server (detached) |
make stop |
Stop running containers |
make restart |
Restart containers |
make logs |
Tail container logs |
make shell |
Open a shell inside the running container |
make dev |
Start Next.js dev server (use inside devcontainer) |
make install |
Install npm dependencies |
make build |
Run a production build |
make lint |
Run ESLint |
make db-push |
Push Prisma schema changes to the database |
make db-seed |
Seed the database with demo data |
make db-studio |
Open Prisma Studio on port 5555 |
make db-reset |
Drop and recreate the database, then re-seed |
make db-migrate |
Run Prisma migrations |
make clean |
Stop containers and remove volumes |
make nuke |
Full teardown: containers, volumes, images |
| Technology | Role |
|---|---|
| Next.js 16 | App Router, server/client components |
| TypeScript | Strict mode across the codebase |
| Tailwind CSS v4 | Styling with zinc palette, dark mode |
| Prisma + SQLite | ORM and zero-config database |
| Auth.js v5 | Authentication (Credentials provider) |
| Recharts | Charts and data visualization |
| Zod | Runtime schema validation |
| date-fns | Date formatting and manipulation |
src/
app/
(auth)/ # Login and register pages
(app)/ # Protected app pages (dashboard, accounts, transactions, etc.)
api/ # API routes for mutations
components/
layout/ # App shell, sidebar, mobile nav
ui/ # Reusable UI primitives (Button, Card, Table, Dialog, etc.)
lib/ # auth.ts, prisma.ts, utils.ts
types/ # Shared TypeScript types
prisma/
schema.prisma # Database schema
seed.ts # Demo data seeder
docker-compose.yml # App container for regular terminal use
.devcontainer/ # VS Code DevContainer configuration
docs/ # Architecture and feature tracking
All monetary values are stored as integers (cents). $45.50 is stored as 4550.
Type checking (run inside container shell or devcontainer terminal):
npx tsc --noEmitGet a shell inside the running container (regular terminal workflow):
make shell- AI agents: read
AGENTS.mdfor complete coding guidelines and architecture details. - Humans: see
docs/for architecture documentation and the feature tracker.
MIT