Milestone 2: the full picture (20261007.12)

Budgets: one amount per category for every month with any month set on its
own, filled from recent spending in one step and copied into the next year.
Home shows what's left to spend, year pacing, insights, balances and upcoming
charges. Insights covers year pacing, money in and out, budget against actual,
categories by month, merchants, balances over time and tags.

Subscriptions and bills are found across every account (rhythm and price
matching plus a built-in catalog), confirmed with one tap, and watched for
price changes, missed charges, charges after cancelling, double billing,
renewals and trials. Alerts are worked out again whenever the data changes.

Also: category, rule, tag and alert settings; Excel and CSV export from a
small built-in writer; the AI module designed in and switched off.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-08 10:59:17 -04:00
parent c3cf0f3eb8
commit 4ecd64132b
62 changed files with 9977 additions and 378 deletions

View File

@@ -4,4 +4,50 @@ A private, self-hosted household budgeting app: import bank and card
statements, categorize in a tap, budget by month, and keep an eye on
subscriptions. Runs as a single container on arm64 or amd64.
Status: planning. The build starts once the plan is approved.
Status: milestones 0 to 2 are built (foundation, money in, the full picture).
Milestone 3, launch hardening, is next.
## What it does
- **Import** CSV statements from Bank of America, Discover, Chase, Capital One,
Citi and Apple Card, plus any other bank through a one-time column mapper.
Duplicates are skipped, card payments and transfers are paired, and any
import can be undone.
- **Review** new transactions with one-tap category suggestions that learn
from every choice. Splits, tags, notes and cash entries are built in.
- **Budget** one amount per category for every month, with any month set on
its own. Fill a year from recent spending in one step; copy it into the next.
- **Home** shows what's left to spend, how the year is pacing, insights, balances
and the charges coming up.
- **Insights**: year pacing, money in and out, budget against actual,
categories by month, merchants, balances over time and tags.
- **Subscriptions and bills** are found automatically across every account,
confirmed with one tap, and watched for price changes, missed charges, charges
after cancelling, double billing, renewals and trials ending.
- **Export** everything to Excel or CSV.
- **AI** features are designed in and switched off; no provider ships with the
app and it makes no outside calls.
## Running it
```bash
cp .env.example .env # adjust the port, time zone and paths
scripts/deploy.sh # builds a versioned image and starts it
```
HTTPS comes from your own reverse proxy (see `deploy/nginx.conf.example`).
The API is documented at `/api/docs` on a running instance.
## Developing
The host only needs Docker; Node 24 runs in a container.
```bash
scripts/dev.sh npm install
scripts/dev.sh npm test
scripts/dev.sh npm run typecheck
```
Statement files never belong in this repository: `samples/` is ignored and a
pre-commit hook blocks statement and database files. Tests use made-up data in
`server/test/fixtures/synthetic` and `server/test/synthetic.ts`.