Modular task manager with a shared core and optional CLI, web UI, and shell completion components.
Project description
A modular task manager with a shared core, where CLI, web UI, and shell completion are optional components.
Preview
CLI
Web UI
CLI + optional Web UI powered by FastAPI
Why RazTodo
RazTodo is a local-first task manager built around a shared core engine with optional interfaces (CLI, Web UI, and shell completion).
CLI ─┐
├── Core Engine ─── SQLite
Web ─┘
All interfaces share a single SQLite database, enabling instant synchronization without external services or accounts.
The design follows three principles:
- Separation of concerns — core logic is interface-agnostic
- Local-first storage — all data remains on the user’s machine
- Composable interfaces — CLI, Web UI, and shell tooling are optional layers
Quick Start
CLI
# Add a task
rt add "Prepare weekly groceries" --priority H --due 2026-12-31
# List all tasks
rt list
# Mark as done
rt done 1
# Search
rt search "groceries"
# Update
rt update 1 --title "Weekly groceries: milk, vegetables, essentials"
# Delete
rt remove 1
Web UI
Start the server:
rt-web
Then open http://127.0.0.1:8000.
[!NOTE] Runs locally only (not exposed to the internet)
Single-user design with no authentication layer
CLI and Web UI share one SQLite database (real-time sync)
Local-first architecture optimized for personal use
Built with FastAPI + lightweight static frontend
Shell Completion
# Requires raztodo[completion]
eval "$(rt completion bash)"
Supports bash, zsh, and fish. For permanent setup see the Completion Guide.
Installation
# Recommended (pipx)
pipx install raztodo
# No-install (uv)
uvx --from raztodo rt
# Standard install
pip install raztodo
# Web UI (optional)
pip install "raztodo[web]"
# Shell completion (optional)
pip install "raztodo[completion]"
For virtual environment and source installation, see the Installation Guide
Commands
| Command | Description | Example |
|---|---|---|
add |
Create a new task | rt add "Task" --priority H |
list |
List tasks with filters | rt list --pending --priority H |
update |
Update a task | rt update 1 --title "New title" |
done |
Toggle task done/undone | rt done 1 |
remove |
Delete a task | rt remove 1 |
search |
Search tasks by keyword | rt search "keyword" |
export |
Export tasks to JSON | rt export backup.json |
import |
Import tasks from JSON | rt import backup.json |
migrate |
Run database migrations | rt migrate |
clear |
Delete all tasks | rt clear --confirm |
completion |
Output shell completion script | rt completion bash |
rt --help
rt add --help
📖 See the Usage Guide for full command documentation.
Configuration
| Variable | Description | Default |
|---|---|---|
RAZTODO_DB |
Database filename or path | tasks.db |
LOG_LEVEL |
Logging level | ERROR |
export RAZTODO_DB="/path/to/custom.db"
export LOG_LEVEL="DEBUG"
[!TIP] 📖 See the Configuration Guide
Docker
docker build -t raztodo:local .
docker run --rm -it -v "$HOME/raztodo-data:/data" raztodo:local add "My first task"
[!NOTE] kept CLI-only to minimize image size and dependencies
[!TIP] 📖 See the Docker Guide
Documentation
Core:
Advanced:
- ⌨️ Completion Guide
- 🐳 Docker Guide
- 🏗️ Architecture
- 🧪 Testing
- 📝 Changelog
Ecosystem
RazTodo is part of the RazBuild ecosystem of open-source developer tools.
- RazTint — Zero-dependency ANSI colors, icons, and terminal formatting utilities powering RazTodo's CLI output.
Contributing
git clone https://github.com/razbuild/raztodo
cd raztodo
uv sync
Quality checks
uv run pytest
uv run ruff check src/ tests/
uv run ruff format src/ tests/
uv run ty check src/
Workflow
- Create feature branch
- Implement changes
- Ensure tests pass
- Submit PR
See CONTRIBUTING guide for details.
License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file raztodo-0.6.1.tar.gz.
File metadata
- Download URL: raztodo-0.6.1.tar.gz
- Upload date:
- Size: 39.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.25 {"installer":{"name":"uv","version":"0.11.25","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e19b478c2d0bd489ae45f1718eaac3b31c1611268fbf38367ec588bd911c12c8
|
|
| MD5 |
12a4f232d996417732b77eae0288540d
|
|
| BLAKE2b-256 |
d74f9cd1e7153f93dd2b527d3cea1729eab72bb8031035fe651236ac68ebe7b6
|
File details
Details for the file raztodo-0.6.1-py3-none-any.whl.
File metadata
- Download URL: raztodo-0.6.1-py3-none-any.whl
- Upload date:
- Size: 64.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.25 {"installer":{"name":"uv","version":"0.11.25","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d5a4979e976e8669832e6e02af0842f531d146a7e75c9b9910bb8202630ada34
|
|
| MD5 |
c8eb0ff1bd95efc951c34d538e990cce
|
|
| BLAKE2b-256 |
2bdc9e4f8b6e7b0b22ba1c860ce3578d9e016c2bc53e424eb15262db8320f4f9
|