A small, LAN-only web app for tracking household tasks & chores — a shared list the whole house works from. It runs on a home server and shows up as a tile on the house dashboard, usable from a phone or a wall-mounted kitchen iPad. All logic and data live on the server.
A learning / portfolio project, built deliberately with no front-end framework and no build step — just Python, server-rendered HTML, and HTMX. Sibling of pantryapp; same stack, same rootless-container deploy pattern.
- Add tasks with a title, optional description, priority (high / medium / low), area (Kitchen, Cleaning, Yard, Bills, Pets, Errands, Maintenance, Other), an optional due date, and a repeat schedule (one-off, daily, weekly, biweekly, monthly).
- Shared list — no per-person assignment; anyone picks up anything.
- Active list sorts by due date (soonest first, undated last), then priority, then entry date. Overdue tasks are highlighted.
- Complete a task and it moves to a collapsible Done history (with
Reopen). Completing a recurring chore automatically spawns its next
occurrence, due a
recurrenceinterval from the completion date. - Filter the active list by area / priority and search by title.
- Backend: FastAPI (Python 3.14)
- Data: SQLite via SQLModel — one class defines both the table and its validation; the whole task list is a single file
- Frontend: Jinja2 server-rendered templates + HTMX
for dynamic updates — no JS framework, no bundler. HTMX is vendored locally
(the server may have no internet). One fragment (
_lists.html) is the single HTMX swap target, holding both the active list and the Done section - PWA: a web manifest + Apple meta tags make it installable / fullscreen. No service worker (plain-HTTP LAN isn't a secure context)
- Runtime: rootless Podman container managed by systemd (Quadlet), data on a persistent volume, daily SQLite backups
python3 -m venv .venv
.venv/bin/pip install -r requirements.txt
.venv/bin/uvicorn app.main:app --reload # http://127.0.0.1:8000The SQLite file (chores.db) is created automatically on first start. The
interactive API browser is at /docs.
Rootless Podman + systemd, data on a named volume, daily backups. Full runbook
in deploy/README.md.
MIT.