Forge / Release 01 / MIT licensed
Track everyrupee.Own every row.
Cointraq is the expense tracker I wanted after two years of logging money in a Notes app. Self-hosted, open source and free to run, so the only person who sees your ledger is you.
- Built in
- 2 to 3 days
- Stack
- Next.js 16 · Postgres
- Cost
- Free tiers
01 / The tour
Twenty-nine seconds.
The whole app.
The launch cut: the Notes app it replaced, then every screen in motion. Muted by default, sound on if you like a beat.
- 01Dashboard and insights
- 02One tap logging
- 03Budgets and card cycles
- 04Reconcile, recurring, Command K
02 / Why it exists
Too dumb not
to build.
For two years I logged every expense in my phone's Notes app. Every single day. Well, most days. When I fell behind, I scrolled back through my UPI history to catch up, and when a payment had no note, I guessed.
I wanted to know where my money goes, where I spend the most, and how much goes to the right things versus junk. My notes could not answer any of it. I had seen plenty of expense apps and never installed one. So I built the one I would actually use.
The code is all thanks to Codex and Claude. The idea, the intuition, and how it works and feels are mine.
03 / How it happened
Built in 2 to 3 days,
spread over two months.
- 12 JulOne Sunday.
Built the core the way I needed it: accounts, spends, card cycles, the dashboard.
- Two monthsUntouched.
Life happened. The Notes app went back to work.
- 15 SepBack at it.
Budgets, recurring bills, CSV import and insights.
- 20 SepFinished.
Tagged 0.1.0 and open sourced it that night.
04 / What it does
Everything my notes
never could.
One clear number
What you spent this month, and how it compares to last month.
Log it in one tap
Quick add for the things you buy every day. Five transaction types for everything else.
- Food31%
- Bills25%
- Shopping16%
- Transport13%
See where it goes
Every category and payment method, side by side.
Food is up 34%against your 3 month average
Spending fell 3 months runningkeep it going
Insights, not totals
Plain sentences about what changed, like food being up 34% on your average.
A year at a glance
Every day of spending on one grid. Quiet weeks jump out.
Budgets and card cycles
Monthly caps with a pace marker, unbilled card spend and due bills.
Savings Bank
Cash in hand!
₹240 unaccounted. Probably snacks.Recurring and reconcile
Rent waits for one tap. Reconcile catches the spends you forgot to log.
Fast everywhere
Command K, search, bulk edit, CSV import and export. Installs on your phone.
05 / Deploy your own
Your own cointraq,
live in six steps.
About fifteen minutes on free tiers. You own the app, the database and every row in it.
- 0130 sec
Fork the repository
Fork rahulm16/cointraq to your GitHub account. Vercel deploys from your fork, so every future update is a pull away.
Fork on GitHub - 022 min
Create a Postgres database
Add Neon from the Vercel Marketplace, or use Supabase or any Postgres 17 host. Copy the connection string; it becomes DATABASE_URL.
Keep ?sslmode=require on hosted connection strings.
- 032 min
Generate your secrets
Clone your fork and create the two secrets the app signs you in with. The password hash is printed in base64, so paste it exactly as shown.
Terminalgit clone https://github.com/<you>/cointraq && cd cointraqnpm cinpm run hash-password -- 'your-password'openssl rand -base64 48 - 041 min
Create the tables
Point the committed migrations at your new database. This creates an empty ledger ready for your real accounts.
TerminalDATABASE_URL="postgres://..." npm run db:migrateNever run db:seed against your real database. It is for test data only.
- 053 min
Deploy on Vercel
Import the fork into Vercel and add DATABASE_URL, APP_PASSWORD_HASH and SESSION_SECRET under Environment Variables. Then deploy.
Import on VercelDATABASE_URLAPP_PASSWORD_HASHSESSION_SECRET - 065 min
Sign in and set up
Open your URL and sign in with the password you chose. Add your bank, cash and card accounts with opening balances in Settings, then install it on your phone's home screen.
06 / Or skip the steps
Hand it to
an agent.
Paste this into Claude Code, Codex, Cursor or any IDE agent and let it do the clicking. A video walkthrough is coming soon.
Deploy https://github.com/rahulm16/cointraq to Vercel for me. Create a free Neon Postgres database, generate APP_PASSWORD_HASH with `npm run hash-password -- '<my password>'` and SESSION_SECRET with `openssl rand -base64 48`, run `npm run db:migrate` against the new database, set DATABASE_URL, APP_PASSWORD_HASH and SESSION_SECRET in the Vercel project, and deploy. Do not run the seed script.
07 / What's next
Built fast.
Growing on purpose.
- 01Next
Savings tracking
The feature I haven't built yet: seeing what you keep, not only what you spend.
- 02Planned
One deploy, many people
Share one instance with friends. Each person's data stays private. Not even the admin can read it.
- 03Soon
Deploy walkthrough
A step by step video for getting your own instance live.