{"id":35131198,"url":"https://github.com/razbuild/raztodo","last_synced_at":"2026-07-01T01:01:11.083Z","repository":{"id":326287875,"uuid":"1102964440","full_name":"razbuild/raztodo","owner":"razbuild","description":"Local-first CLI task manager with SQLite backend and optional web UI","archived":false,"fork":false,"pushed_at":"2026-06-25T14:54:54.000Z","size":1264,"stargazers_count":2,"open_issues_count":1,"forks_count":2,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-06-25T15:36:48.515Z","etag":null,"topics":["cli","cross-platform","developer-tools","fastapi","privacy","productivity","python","sqlite","task-manager","terminal","todo","todo-cli","web-ui"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/razbuild.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-11-24T09:05:47.000Z","updated_at":"2026-06-25T14:52:42.000Z","dependencies_parsed_at":null,"dependency_job_id":"508048fa-d3a5-461e-bef6-63a53b9f7760","html_url":"https://github.com/razbuild/raztodo","commit_stats":null,"previous_names":["razbuild/raztodo"],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/razbuild/raztodo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/razbuild%2Fraztodo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/razbuild%2Fraztodo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/razbuild%2Fraztodo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/razbuild%2Fraztodo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/razbuild","download_url":"https://codeload.github.com/razbuild/raztodo/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/razbuild%2Fraztodo/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34988714,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-30T02:00:05.919Z","response_time":92,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli","cross-platform","developer-tools","fastapi","privacy","productivity","python","sqlite","task-manager","terminal","todo","todo-cli","web-ui"],"created_at":"2025-12-28T05:14:33.580Z","updated_at":"2026-07-01T01:01:11.074Z","avatar_url":"https://github.com/razbuild.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\r\n  \u003cimg src=\"assets/RazTodo.svg\" alt=\"RazTodo\" width=\"400\" /\u003e\r\n  \u003cbr\u003e\u003cbr\u003e\r\n\r\n[![PyPI Version](https://img.shields.io/pypi/v/raztodo)](https://pypi.org/project/raztodo/)\r\n[![PyPI Downloads](https://static.pepy.tech/badge/raztodo)](https://pepy.tech/project/raztodo/)\r\n\r\n[![CI](https://img.shields.io/github/actions/workflow/status/razbuild/raztodo/ci.yml)](https://github.com/razbuild/raztodo/actions/workflows/ci.yml)\r\n[![Codecov](https://img.shields.io/codecov/c/github/razbuild/raztodo)](https://codecov.io/gh/razbuild/raztodo)\r\n\r\n[![Python Versions](https://img.shields.io/pypi/pyversions/raztodo)](https://pypi.org/project/raztodo/)\r\n\r\n  \u003cp\u003eA modular task manager with a shared core, where CLI, web UI, and shell completion are optional components.\u003c/p\u003e\r\n\u003c/div\u003e\r\n\r\n---\r\n\r\n## Preview\r\n\r\n\u003cp align=\"center\"\u003e\r\n  \u003cb\u003eCLI\u003c/b\u003e\r\n\u003c/p\u003e\r\n\r\n\u003cp align=\"center\"\u003e\r\n  \u003cimg src=\"https://github.com/razbuild/raztodo/raw/master/assets/preview.gif\" width=\"700\"\u003e\r\n\u003c/p\u003e\r\n\r\n\u003cp align=\"center\"\u003e\r\n  \u003cb\u003eWeb UI\u003c/b\u003e\r\n\u003c/p\u003e\r\n\r\n\u003cp align=\"center\"\u003e\r\n  \u003cimg src=\"https://github.com/razbuild/raztodo/raw/master/assets/web-preview.png\" width=\"700\"\u003e\r\n\u003c/p\u003e\r\n\r\n\u003cp align=\"center\"\u003e\r\n  \u003ci\u003eCLI + optional Web UI powered by FastAPI\u003c/i\u003e\r\n\u003c/p\u003e\r\n\r\n---\r\n\r\n## Why RazTodo\r\n\r\nRazTodo is a local-first task manager built around a shared core engine with optional interfaces (CLI, Web UI, and shell completion).\r\n\r\n```\r\nCLI ─┐\r\n     ├── Core Engine ─── SQLite\r\nWeb ─┘\r\n```\r\n\r\nAll interfaces share a single SQLite database, enabling instant synchronization without external services or accounts.\r\n\r\nThe design follows three principles:\r\n- Separation of concerns — core logic is interface-agnostic  \r\n- Local-first storage — all data remains on the user’s machine  \r\n- Composable interfaces — CLI, Web UI, and shell tooling are optional layers\r\n\r\n---\r\n\r\n## Quick Start\r\n\r\n### CLI\r\n\r\n```bash\r\n# Add a task\r\nrt add \"Prepare weekly groceries\" --priority H --due 2026-12-31\r\n\r\n# List all tasks\r\nrt list\r\n\r\n# Mark as done\r\nrt done 1\r\n\r\n# Search\r\nrt search \"groceries\"\r\n\r\n# Get AI explanation of a task\r\nrt explain 1 --short\r\n\r\n# Update\r\nrt update 1 --title \"Weekly groceries: milk, vegetables, essentials\"\r\n\r\n# Delete\r\nrt remove 1\r\n```\r\n\r\n### Web UI\r\n\r\n#### Start the server:\r\n\r\n```bash\r\nrt-web\r\n```\r\nThen open `http://127.0.0.1:8000`.\r\n\r\n\u003e [!NOTE]\r\n\u003e Runs locally only (not exposed to the internet)  \r\n\u003e Single-user design with no authentication layer  \r\n\u003e CLI and Web UI share one SQLite database (real-time sync)  \r\n\u003e Local-first architecture optimized for personal use  \r\n\u003e Built with FastAPI + lightweight static frontend\r\n\u003e AI-powered task explanations (Summary / Deep Analysis / Action Plan) via Ollama\r\n\r\n### Shell Completion\r\n\r\n```bash\r\n# Requires raztodo[completion]\r\neval \"$(rt completion bash)\"\r\n```\r\n\r\nSupports bash, zsh, and fish. For permanent setup see the [Completion Guide](https://github.com/razbuild/raztodo/blob/master/docs/COMPLETION.md).\r\n\r\n---\r\n\r\n## Installation\r\n\r\n```bash\r\n# Recommended (pipx)\r\npipx install raztodo\r\n\r\n# No-install (uv)\r\nuvx --from raztodo rt\r\n\r\n# Standard install\r\npip install raztodo\r\n\r\n# Web UI (optional)\r\npip install \"raztodo[web]\"\r\n\r\n# Shell completion (optional)\r\npip install \"raztodo[completion]\"\r\n\r\n# Everything (web + completion)\r\npip install \"raztodo[all]\"\r\n```\r\nFor virtual environment and source installation, see the [Installation Guide](https://github.com/razbuild/raztodo/blob/master/docs/INSTALLATION.md)\r\n\r\n---\r\n\r\n## Commands\r\n\r\n| Command      | Description                            | Example                             |\r\n|--------------|----------------------------------------|-------------------------------------|\r\n| `add`        | Create a new task                      | `rt add \"Task\" --priority H`        |\r\n| `list`       | List tasks with filters                | `rt list --pending --priority H`    |\r\n| `update`     | Update a task                          | `rt update 1 --title \"New title\"`   |\r\n| `done`       | Toggle task done/undone                | `rt done 1`                         |\r\n| `remove`     | Delete a task                          | `rt remove 1`                       |\r\n| `search`     | Search tasks by keyword                | `rt search \"keyword\"`               |\r\n| `export`     | Export tasks to JSON                   | `rt export backup.json`             |\r\n| `import`     | Import tasks from JSON                 | `rt import backup.json`             |\r\n| `migrate`    | Run database migrations                | `rt migrate`                        |\r\n| `clear`      | Delete all tasks                       | `rt clear --confirm`                |\r\n| `completion` | Output shell completion script         | `rt completion bash`                |\r\n| `explain`    | Get an AI explanation of a task        | `rt explain 1 --plan`               |\r\n\r\n```bash\r\nrt --help\r\nrt add --help\r\n```\r\n\r\n📖 See the [Usage Guide](https://github.com/razbuild/raztodo/blob/master/docs/USAGE.md) for full command documentation.\r\n\r\n---\r\n\r\n## Configuration\r\n\r\n| Variable     | Description                   | Default    |\r\n|--------------|-------------------------------|------------|\r\n| `RAZTODO_DB` | Database filename or path     | `tasks.db` |\r\n| `LOG_LEVEL`  | Logging level                 | `ERROR`    |\r\n\r\n```bash\r\nexport RAZTODO_DB=\"/path/to/custom.db\"\r\nexport LOG_LEVEL=\"DEBUG\"\r\n```\r\n\r\n\u003e [!TIP]\r\n\u003e 📖 See the [Configuration Guide](https://github.com/razbuild/raztodo/blob/master/docs/CONFIGURATION.md)\r\n\r\n---\r\n\r\n## Docker\r\n```bash\r\ndocker build -t raztodo:local .\r\ndocker run --rm -it -v \"$HOME/raztodo-data:/data\" raztodo:local add \"My first task\"\r\n```\r\n\u003e [!NOTE]\r\n\u003e kept CLI-only to minimize image size and dependencies\r\n\r\n\u003e [!TIP]\r\n\u003e 📖 See the [Docker Guide](https://github.com/razbuild/raztodo/blob/master/docs/DOCKER.md)\r\n\r\n---\r\n\r\n## Documentation\r\n\r\nCore:\r\n  - 📦 [Installation Guide](https://github.com/razbuild/raztodo/blob/master/docs/INSTALLATION.md)\r\n  - 📖 [Usage Guide](https://github.com/razbuild/raztodo/blob/master/docs/USAGE.md)\r\n  - ⚙️ [Configuration Guide](https://github.com/razbuild/raztodo/blob/master/docs/CONFIGURATION.md)\r\n\r\nAdvanced:\r\n  - ⌨️ [Completion Guide](https://github.com/razbuild/raztodo/blob/master/docs/COMPLETION.md)\r\n  - 🐳 [Docker Guide](https://github.com/razbuild/raztodo/blob/master/docs/DOCKER.md)\r\n  - 🏗️ [Architecture](https://github.com/razbuild/raztodo/blob/master/docs/ARCHITECTURE.md)\r\n  - 🧪 [Testing](https://github.com/razbuild/raztodo/blob/master/docs/TESTING.md)\r\n  - 📝 [Changelog](https://github.com/razbuild/raztodo/blob/master/CHANGELOG.md)\r\n\r\n---\r\n\r\n## Ecosystem\r\n\r\nRazTodo is part of the [RazBuild](https://github.com/razbuild) ecosystem of open-source developer tools.\r\n\r\n- [RazTint](https://github.com/razbuild/raztint) — Zero-dependency ANSI colors, icons, and terminal formatting utilities powering RazTodo's CLI output.\r\n\r\n---\r\n\r\n## Contributing\r\n\r\n```bash\r\ngit clone https://github.com/razbuild/raztodo\r\ncd raztodo\r\nuv sync\r\n```\r\n\r\n## Quality checks\r\n\r\n```\r\nuv run pytest\r\nuv run ruff check src/ tests/\r\nuv run ruff format src/ tests/\r\nuv run ty check src/\r\n```\r\n\r\n## Workflow\r\n\r\n1. Create feature branch\r\n2. Implement changes\r\n3. Ensure tests pass\r\n4. Submit PR\r\n\r\nSee [CONTRIBUTING](https://github.com/razbuild/.github/blob/main/CONTRIBUTING.md) guide for details.\r\n\r\n---\r\n\r\n## License\r\n\r\n[![License](https://img.shields.io/github/license/razbuild/raztodo)](https://github.com/razbuild/raztodo/blob/master/LICENSE)\r\n\r\n\u003cdiv align=\"center\"\u003e\r\n  \u003cimg src=\"https://raw.githubusercontent.com/razbuild/.github/main/profile/svg/badge.svg\" alt=\"Made by RazBuild\" width=\"160\"\u003e\r\n\u003c/div\u003e\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frazbuild%2Fraztodo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frazbuild%2Fraztodo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frazbuild%2Fraztodo/lists"}