diff --git a/README.md b/README.md index b7bdc5d..78362cf 100644 --- a/README.md +++ b/README.md @@ -2,19 +2,22 @@ Household budget tracker. FastAPI + HTMX frontend, SQLite backend. -## Sections +## Pages -The budget page shows one card per section. Every section accepts a name and -amount per entry and displays a running total, except *Primary Debt Target*, -which is a pointer to one of the *Debt Minimums* rows. +* `/` budget configuration. One section per category (Incomes, Fixed Amount + Bills, Debt Minimums, Primary Debt Target, Food and Essentials, + Subscriptions, Other). Every section accepts name + amount entries and + shows a running total. The Primary Debt Target is a pointer to a Debt + Minimums row. +* `/month/YYYY-MM` monthly view. Snapshots the budget at creation time and + tracks an `applied` amount per entry alongside the planned amount. Each + row is annotated when its name or planned value has been edited away + from the snapshot, or when the row was added after creation. Per-month + debt target is independent of the budget's target after snapshot. -* Incomes -* Fixed Amount Bills -* Debt Minimums -* Primary Debt Target (pointer) -* Food and Essentials -* Subscriptions -* Other +Navigate between months with the prev / next buttons or the dropdown +picker. A "This month" link on `/` jumps to the current `YYYY-MM`; if it +has not been created yet, you land on the create flow. ## Requirements @@ -51,19 +54,22 @@ Tests run against an in-memory SQLite database; no migration step needed. ``` src/quartermaster/ - main.py FastAPI app factory - routes.py HTTP handlers, HTMX partials - service.py Queries, totals, target logic - models.py SQLAlchemy models and Section enum - db.py Engine, session, PRAGMA foreign_keys=ON - config.py DB URL resolution - templates/ Jinja2 templates (base, index, partials) - static/ CSS -alembic/ Migrations -tests/ pytest suite + main.py FastAPI app factory + routes.py Budget configuration HTTP handlers + routes_month.py Monthly view HTTP handlers + service.py Budget queries, totals, target logic + month_service.py Snapshot, deviation, per-month CRUD + models.py SQLAlchemy models and Section enum + db.py Engine, session, PRAGMA foreign_keys=ON + config.py DB URL resolution + templates/ Jinja2 templates (base, index, month, partials) + static/ CSS +alembic/ Migrations +tests/ pytest suite ``` -## Scope +## Deferred -Single-month budget. Multi-month support is planned for a later milestone -and is intentionally not modelled yet. +A transaction log that rolls up into `applied` on a per-entry per-month +basis is deferred. Once implemented it may replace the hand-edited applied +field.