docs(roadmap): add template edit, healthz, JSON logs to shipped; add deploy pipeline to next-up

claude-code 2026-04-19 12:30:42 -06:00
parent ff15cb645f
commit 8f3bd78a14

@ -14,6 +14,27 @@
| 15 | Month lifecycle: Planning, Active, Closed with reconciliation gate | 2026-04-17 | | 15 | Month lifecycle: Planning, Active, Closed with reconciliation gate | 2026-04-17 |
| 17 | UI redesign: condensed-sans ledger style with logo in the zero hero | 2026-04-17 | | 17 | UI redesign: condensed-sans ledger style with logo in the zero hero | 2026-04-17 |
| 19 | Backing transaction ledger: replace applied field with Postings | 2026-04-17 | | 19 | Backing transaction ledger: replace applied field with Postings | 2026-04-17 |
| 21 | Budget-side inline edit of entry name and amount | 2026-04-17 |
| 26 | `/healthz` endpoint for container healthcheck | 2026-04-19 |
| 27 | Emit structured JSON logs to stdout (Loki-ready) | 2026-04-19 |
## Next up — deploy to home-ctr-onyx
Tracked by the platform-contract intake (#25, closed). Platform side is
provisioned (DNS, Traefik middlewares, bind mount, basic-auth creds —
see [PlatformContractQuartermaster](https://forgejo.labbity.unbiasedgeek.com/homelab/homelab-IaC/wiki/PlatformContractQuartermaster)).
App side is broken into three dependent issues:
| # | Title | Depends on |
|---|---|---|
| 28 | Dockerfile for quartermaster-web container | — |
| 29 | compose.yml for home-ctr-onyx deploy | #28 |
| 30 | Forgejo Actions workflow for deploy | #28 + #29 |
| 31 | Small cleanups from platform-prep code review | — |
#31 is non-blocking polish (logger placement in `service.py`,
middleware-vs-router comment in `routes_health.py`, richer
`template_entry_updated` extras). Land when convenient.
## Deferred ## Deferred
@ -64,11 +85,11 @@ schema. First pass: a sparkline per category across the last N months.
Bulk in for seeding a fresh install, bulk out for taxes or external Bulk in for seeding a fresh install, bulk out for taxes or external
analysis. Month-scoped and budget-scoped variants. analysis. Month-scoped and budget-scoped variants.
### Auth ### App-level auth (future)
Single-user, local-only today. If the app ever runs on a LAN or is Today auth is Traefik-side (basic auth at the edge). If the app ever
exposed externally, add a simple password gate or run behind an needs per-user views or a richer session model, an app-level login
SSO-aware reverse proxy. would slot in. Until then, there is no login page inside Quartermaster.
### localStorage persistence of collapsed groups ### localStorage persistence of collapsed groups
@ -76,12 +97,13 @@ Today the open/closed state of section groups resets on every page
load. A tiny `localStorage` hook would remember which groups a given load. A tiny `localStorage` hook would remember which groups a given
browser last had open. browser last had open.
### Budget entry name / amount edit ### Observability follow-ups
Budget entries currently require delete-and-recreate to change the The launch alert set is container-down + TLS expiry + elevated 5xx
name or amount. Notes are editable inline. Extending the inline edit rate, all wired platform-side. Richer signal (histograms for
pattern to name and amount on the budget page would mirror what the `http_request` latency, a Grafana dashboard for Quartermaster events,
month page already allows. Prometheus `/metrics` endpoint) is out of scope for launch. File if
the single-user Loki view ever proves insufficient.
## Out of scope (probably forever) ## Out of scope (probably forever)