Skip to main content

A fast, minimal dependency command-line todo/task manager backed by SQLite

Project description

Logo

GitHub License GitHub Actions Workflow Status Codecov PyPI - Version Python Version from PEP 621 TOML


RazTodo

A lightweight, cross-platform, privacy-first CLI task manager powered by SQLite.

Preview
Preview

Why RazTodo?

Lightweight & Fast — Minimal dependencies, SQLite-powered, optimized for speed
Privacy-First — Your data stays local, no cloud services, no tracking
Developer-Friendly — Clean Architecture, well-tested, type-safe, modern Python
Simple & Powerful — Intuitive CLI, works out of the box, rich features
Cross-Platform — Works seamlessly on Linux, macOS, and Windows

Perfect for developers, power users, and anyone who wants a fast, reliable, local-first task manager.


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 experience.

Quick Start

Installation

# Recommended: Install via pipx (isolated environment)
pipx install raztodo

# Alternative: Install via pip
pip install raztodo

# Install the optional web UI
pip install "raztodo[web]"

The base install provides the CLI. Install raztodo[web] if you also want the rt-web command.

📖 For more installation options (virtual environments, from source), see the Installation Guide

Basic Usage

# Create a task with priority and due date
rt add "Buy groceries" --priority H --due 2024-12-31

# List all tasks
rt list

# Mark task as done
rt done 1

# Search for tasks
rt search "groceries"

# Update a task
rt update 1 --title "Buy groceries and milk"

# Delete a task
rt remove 1

Shell Completion

rt supports native <Tab> completion for bash, zsh and fish. For bash/zsh completion support, install the optional extra first:

pip install "raztodo[completion]"

Quick activation (bash/zsh):

eval "$(rt completion bash)"

Now try:

rt <Tab>
rt add --<Tab>

📖 For permanent setup and other shells (zsh, fish), see the Completion Guide


Docker (Optional)

RazTodo can also be run as a Docker container for isolated or portable usage.

# Build the image
docker build -t raztodo:local .

# Add a task
docker run --rm -it -v "$HOME/raztodo-data:/data" raztodo:local add "My first docker task"

📖 For Docker usage and persistence details, see the Docker Guide


Features

  • 📝 Task Management — Create, update, delete, and organize tasks
  • 🏷️ Tags & Projects — Organize tasks with tags and project names
  • 🔍 Search — Search task titles and descriptions with optional filters
  • 📅 Due Dates & Priority — Set deadlines and priority levels (L/M/H)
  • 💾 Import/Export — Backup and restore tasks via JSON
  • 🎨 Colored Output — Beautiful ANSI colors and icons
  • 🗄️ SQLite Storage — No external services required
  • 🚀 Cross-Platform — Works on Linux, macOS, and Windows
  • Fast Performance — Lazy loading and optimized architecture
  • 🏗️ Clean Architecture — Maintainable and testable codebase
  • Shell Autocompletion — Tab completion for bash, zsh, and fish

Commands

Command Description Example
add Create a new task rt add "Task title" --priority H
list List tasks with filters rt list --pending --priority H
update Update a task rt update 1 --title "New title"
done Mark task as done/undone rt done 1
remove Delete a task rt remove 1
search Search tasks rt search "keyword"
export Export to JSON rt export backup.json
import Import from JSON rt import backup.json
migrate Run database migration rt migrate
clear Delete all tasks rt clear --confirm
completion Output shell completion script rt completion bash
# Get help for any command
rt --help
rt add --help

📖 See the Usage Guide for detailed command documentation


Configuration

RazTodo can be configured using environment variables:

Variable Description Default
RAZTODO_DB Database filename or path tasks.db
LOG_LEVEL Logging level ERROR

Example:

# Use a custom database location
export RAZTODO_DB="/path/to/custom.db"

# Enable debug logging
export LOG_LEVEL="DEBUG"

📖 For detailed configuration options, see the Configuration Guide


Documentation

Complete documentation is available in the docs/ directory:


Contributing

Contributions are welcome! Here's how you can help:

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature/your-feature-name
  3. Make your changes and ensure quality:
    # Run tests
    uv run pytest
    
    # Check code quality
    uv run ruff format --check src/ tests/
    uv run ruff check src/ tests/
    uv run ty check src/
    
  4. Submit a pull request

For detailed guidelines, see the shared RazBuild contributing guide.


License

MIT License


Support

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

raztodo-0.5.0.tar.gz (33.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

raztodo-0.5.0-py3-none-any.whl (56.7 kB view details)

Uploaded Python 3

File details

Details for the file raztodo-0.5.0.tar.gz.

File metadata

  • Download URL: raztodo-0.5.0.tar.gz
  • Upload date:
  • Size: 33.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.19 {"installer":{"name":"uv","version":"0.11.19","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

Hashes for raztodo-0.5.0.tar.gz
Algorithm Hash digest
SHA256 c52e98b93d0218ba121d6f4b808ff378c5f70c1fbeea0a0d80abceb4acd3587f
MD5 4fe8ba2b7ef78a7191e5d07cdd40508d
BLAKE2b-256 7c2d14d51abe4583c00d5b2452f2a8e177c3ec12d0f8357388a6516653daee62

See more details on using hashes here.

File details

Details for the file raztodo-0.5.0-py3-none-any.whl.

File metadata

  • Download URL: raztodo-0.5.0-py3-none-any.whl
  • Upload date:
  • Size: 56.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.19 {"installer":{"name":"uv","version":"0.11.19","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

Hashes for raztodo-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2e8157431bd1dbb5666213fa2f28b9ed56cfd7bf13c55976866704b45391ed1f
MD5 f315b66a151db63078bd82a92bdb89b9
BLAKE2b-256 dce9f66d5a8b74d53e383caad0e4663708de92d832beda8b8f6955ef957fc310

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page