Minimalist, collaborative lists and task todo manager written in Rust.
Run the official zero-dependency container on port 4403:
docker run -d --name todo -p 4403:4403 -v /mnt/user/appdata/todo:/config ghcr.io/studio2201/todo:latestOpen your browser to http://localhost:4403 to start creating task lists immediately.
On Debian, Ubuntu, Fedora, or RHEL:
curl -fsSL https://studio2201.github.io/packages/install.sh | sudo bashDeploy via the official Unraid Template:
- Copy
todo.xmlto your Unraid flash drive under/boot/config/plugins/dockerMan/templates-user/. - Open Docker -> Add Container -> Select todo from the template dropdown.
- Click Apply.
The backend service can be customized using the following environment variables:
| Variable | Description | Default |
|---|---|---|
PORT |
Network port the web server binds to | 4403 |
TODO_PIN |
Security PIN required for application access | (Disabled) |
TODO_DATA_DIR |
Directory path for persistent data and lists | /config |
TODO_ALLOWED_ORIGINS |
CORS allowed origins list (comma-separated) | * |
TRUST_PROXY |
Honor reverse proxy headers (X-Forwarded-For) |
false |
TRUSTED_PROXY_IPS |
Comma-separated CIDR list of trusted reverse proxies | (None) |
LOG_LEVEL |
Tracing filter (error, warn, info, debug) |
info |
Every container and package includes a built-in administration utility (todo).
Launch interactive TUI dashboard:
docker exec -it todo todo tuiSystem diagnostics and self-healing check:
docker exec -it todo todo doctorCLI Command Reference:
todo tui— Interactive terminal user interface.todo doctor— Diagnoses storage permissions, ports, and database health.todo status— Displays network configuration and security parameters.todo data stats— Shows storage utilization and entry metrics.todo data list— Lists task lists and item entries.
- Axum Web Backend: High-concurrency async HTTP/JSON runtime built on Tokio.
- Yew WebAssembly Frontend: Type-safe client bundle running natively in browser WASM runtime.
- Strict Input & Path Sanitization: Path canonicalization guards preventing directory traversal escapes.
- Fail-Closed Security PIN Authentication: Rate-limited brute force protection with automatic lockout timers.
Distributed under the Apache 2.0 License. See LICENSE for details.