An open-source replacement for NCH MoneyLine. A fast, modern web app for personal finance management that reads and writes the same SQLite database format (.vdb files) — so your existing data works seamlessly.
- Account management — Checking, Savings, Credit Card, and Investment accounts
- Transaction CRUD — Create, edit, and soft-delete transactions with running balance
- Payee autocomplete — Auto-creates new payees on the fly
- Category hierarchy — Income and expense categories with grouping
- Sortable columns — Click any column header to sort
- Date filtering — Period presets (This Month, Last 2 Months, This Year, etc.) or custom range
- Reports — Income & Expense, Expenses by Payee, Account Activity
- Keyboard shortcuts —
nnew,Enteredit,Deletedelete
- Backend: Node.js, Express, better-sqlite3
- Frontend: Vanilla HTML/CSS/JS (no framework, no build step)
- Database: SQLite (.vdb file, MoneyLine-compatible format)
- Deployment: Docker
Place your moneyline.vdb file in ~/Documents/Money/, then:
docker-compose up --buildJust run it — a new empty database will be created automatically in ~/Documents/Money/:
docker-compose up --buildAll user data lives in ~/Documents/Money/, separate from the codebase:
~/Documents/Money/
├── moneyline.vdb ← database
└── backups/
├── moneyline-startup-*.vdb ← created on each server start
└── moneyline-*.vdb ← scheduled backups (default every 24h)
A Money.app bundle is included. Copy it to /Applications and drag to the Dock. It opens the web app in your default browser.
cp -R Money.app /Applications/npm install
node server.jsThe docker-compose.yml mounts ~/Documents/Money into the container as /data.
services:
moneyline:
build: .
ports:
- "3000:3000"
volumes:
- ~/Documents/Money:/data
environment:
- DB_PATH=/data/moneyline.vdb
- BACKUP_DIR=/data/backups