- Python 92%
- HTML 6%
- Roff 1.5%
- Dockerfile 0.4%
- Shell 0.1%
|
Some checks failed
deb / deb (push) Has been cancelled
Chrome refused to install it ("no-manifest"). Add manifest.json
(standalone, page colours) with 192/512 px icons and a maskable 512 px
one, drawn by tools/make-icons.py, and allow them in the CSP
(manifest-src/img-src 'self', in both the <meta> and the nginx header).
The browser tests' nginx now takes its headers from
deploy/breadbox.nginx.conf, and a new test asks Chrome for
installability errors. The Debian package ships the new files.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q8mYTN3K2MEr4Kvus6oCNB
|
||
|---|---|---|
| .forgejo/workflows | ||
| breadbox | ||
| debian | ||
| deploy | ||
| docs | ||
| tests | ||
| tools | ||
| .dockerignore | ||
| .gitignore | ||
| Dockerfile | ||
| LICENSE | ||
| pyproject.toml | ||
| README.md | ||
| SPEC.md | ||
breadbox
A single-user todo list where new items go on top. It has one SQLite database, a small Python backend that owns it, and two thin clients: a curses CLI and a single web page.
current all deleted breadbox
──────────────────────────────────────────────────
> ▢ call the plumber
▢ book train to Brno
✓ send the invoice
▢ reply to Martin
- Backend: FastAPI on a Unix socket (
/run/breadbox/breadbox.sock), with token auth. Tokens are stored as SHA-256 hashes. - CLI (
breadbox): standard library only. It talks to the socket directly or over an SSH-forwarded socket. It also has script-friendly subcommands (add,ls,done,rm). - Web page: one hand-written HTML file, served by nginx over HTTPS. No build step.
- Admin (
breadbox-admin): schema migrations and token management.
Install
On Debian trixie, from the Forgejo package registry:
apt install breadbox
You need to add the repository first, and nginx, TLS and the first token are still manual steps. docs/deployment.md covers all of that and the manual install for other systems.
To run only the backend in rootless podman, with no network and the API reachable through a Unix socket, see docs/container.md.
Use
- docs/user-manual.md covers the CLI and the web page.
man breadboxis the command and key reference.
Develop
apk add python3 py3-pip sqlite # Debian: apt install python3-venv sqlite3
python3 -m venv .venv
.venv/bin/pip install -e ".[server,dev]"
.venv/bin/python -m pytest
The webapp tests drive headless Chromium through selenium. They skip
themselves when chromium and chromedriver aren't on PATH. To build
the Debian package, run ./debian/build.sh on a trixie machine (see
docs/deployment.md).
| Path | What |
|---|---|
breadbox/ |
backend (api.py, store.py, auth.py, migrations/), CLI (cli/), web page (web/index.html) |
deploy/ |
systemd units, nginx config, backup script, man page, env file template; deploy/podman/ has the Quadlet and backup timer units |
debian/ |
Debian packaging and the build/publish scripts used by CI |
Dockerfile |
backend-only container image (see docs/container.md) |
.forgejo/workflows/ |
CI: builds the package, publishes it from main |
tools/ |
make-icons.py, which draws the app icons in breadbox/web/ |
docs/ |
deployment guide, container guide and user manual. docs/superpowers/ holds design specs and implementation plans |
| SPEC.md | the original design spec |
Licence
MIT. See LICENSE.