YNAB's engine is a handful of rules about money you already have: every dollar gets a category, overspending has to be covered from somewhere, leftovers roll into next month and card spending moves money to the card payment. That fits in a local web app on SQLite in one sitting, and Actual Budget proves the same method works as free software. What a one-session build won't have is direct bank import, the phone apps and a plan shared with a partner, which is where YNAB still earns its fee for many households.
Before you buildYNAB has no free plan, only a 34-day trial (a year for college students). Before building, try Actual Budget: it is free, follows the same method and already has desktop apps.
Build me a zero-based budgeting app to replace YNAB. Requirements: - Node.js 22 + TypeScript: a Fastify API and a React front end built with Vite. `npm start` builds the UI and serves it on http://127.0.0.1:4700 only. - Storage: better-sqlite3 in ./data/budget.db. Money is integer cents, never floats, and every write runs in a database transaction. - Accounts (checking, savings, cash, credit card) and transactions with date, payee, category, memo, amount, cleared flag, splits and transfers. - Monthly plan: category groups and categories with assigned, activity and available per month. Ready to Assign = all income minus everything assigned. Available rolls into next month; overspent cash shows red and comes out of next month's Ready to Assign. - Credit cards: spending on a card in a funded category moves that amount to the card's payment category; a payment from checking draws it down. - Targets per category: a fixed monthly amount or a total by a date, with "needed this month" shown next to available. - Import CSV (papaparse) and OFX/QFX (ofx-js): map columns once per account, skip duplicates by FITID or date + amount + payee, apply payee rename rules. - Reports with Recharts: spending by category per month, net worth over time. - Single user. No accounts, no telemetry, no network calls, local-first. - Out of scope: bank sync, mobile apps and sharing a plan with other people. - README: setup, where the data lives, how to back it up, and how to check the numbers against one month of my old YNAB plan.
Opens your agent with the prompt filled in, you press enter. Or copy it and paste it into an empty folder.
The first prompt builds the core. Run these one at a time in the same folder to grow it into your own YNAB.
Add a YNAB importer to the budgeting app in this folder. Requirements: - A command that takes the two files from YNAB's Export Plan: the plan file (categories and monthly assigned amounts) and the register file (transactions). - Read both header rows first, print the column mapping and ask before importing. - Create accounts, category groups and categories, then transactions with their cleared flags, and the assigned amount for every past month. - Turn transfers between two imported accounts into linked transfers. - After import, compare each account balance with the sum in the file and print any differences instead of hiding them. - Running it twice must not duplicate anything. - Update the README with the export steps and the import command.
Add a phone-friendly quick-entry page to the budgeting app in this folder. Requirements: - A page at /quick with three fields (amount, payee, category) and an account picker that remembers the last one used; installable as a PWA. - Payees autocomplete and suggest the category used last time. - If the server can't be reached, queue entries in IndexedDB and send them later. - Protect the page with a passphrase from .env when the server listens on anything other than 127.0.0.1. - Update the README with how to reach it from a phone through Tailscale.
Add bank sync through SimpleFIN Bridge to the budgeting app in this folder. Requirements: - Read the SimpleFIN access URL from .env; never log it. - Once a day (node-cron) and on a Sync button, fetch new transactions for the accounts I link in settings. - Run them through the same duplicate check and payee rules as file imports. - New transactions arrive uncleared and uncategorized in a Needs review list. - Show the last successful sync time per account and any error in plain words. - Update the README with SimpleFIN setup and a note that it is a paid service.
People pay for the habit as much as the software: the method, the workshops and the community keep them engaged, and the phone app makes it easy to log spending on the spot. Couples run one shared plan, and direct import saves typing even though users say bank connections break now and then. After years of history, the annual fee feels cheaper than starting over, despite several price rises.
Estimate · On your own computer it costs nothing to run. Reaching it from your phone through a small VPS adds a few dollars a month; a private network like Tailscale on a machine you already have keeps it free. The build is token usage on your agent plan.
| Plan | Monthly | Annual, per month | What you get |
|---|---|---|---|
| Monthly | $14.99 | — | All features: sync across devices, phone apps, targets, loan planner, direct bank import where supported, sharing with up to 6 people. |
| Annual | — | $9.08 | Same features as Monthly. |
| College program | $0 | $0 | Full app for 365 days. |
Yes. An AI coding agent such as Claude Code, Codex or Cursor can build a usable personal version in one session with the prompt on this page, running on your own machine.
About $14.99 a month on the Monthly plan, $179.88 a year (checked 2026-10-13).
Direct import from linked bank accounts; Phone apps for logging a purchase at the till; One plan shared with a partner or family (up to 6 people); Workshops, guides and a support team; Sync between devices without running your own server. If any of those matter to you, keep paying.
Yes: Actual Budget (open source), budgetzero (open source), Firefly III (open source).