- README: expand the production section with a full systemd recipe
(useradd, chown, uv sync --project, install -d for ReadWritePaths,
.env perms 640), a Caddy block, and backup note.
- AGENTS.md: add the Arch python-uv package-name note and the root-rooted
venv caveat, plus a new "Deploy / production" section documenting the
volundr unit, data location, .env perms, and forward-proxy expectations.
Match the live volundr unit: drop StateDirectory=/var/lib/bike_admin in
favour of ReadWritePaths=/opt/bike_admin/data. systemd requires the
ReadWritePaths target to exist before the service starts, so the unit
documents the one-time install -d prerequisite.
- User-facing brand "bike-admin" -> "volundr" (page titles, top bar,
login header, FastAPI title, README/AGENTS). Directory, remote,
BIKE_ADMIN_* env prefix and bike_admin.db filename are unchanged.
- Add deploy/: systemd unit (bike-admin.service) and a production
.env template (env.production.example).
- README: feature list now covers renewal tracking, the due-soon service
state, and the full event-type set.
- AGENTS: add the three hint settings, compute_renewal_due, favicon.svg,
and test_renewals.py to the layouts.
- Renewal tracking: compute due/overdue status from the most recent
mot/insurance event (renewal_months, renewal_due_soon_days settings),
surfaced on the service card and dashboard.
- Service-status card metrics now render as a two-column label/value
table with row separators instead of wrapping auto-fill grid cells.
- Add a bicycle favicon (favicon.svg) to base + login templates.
Co-Authored-By: opencode <opencode@users.noreply.github.com>