Skip to main content

A minimalist, interactive command-line task manager built with Python.

Project description

odot

CI PyPI Python License: MIT

A minimalist, interactive command-line task manager built with Python.

odot demo


Features

  • Interactive prompts — arrow-key navigable menus when you omit an argument
  • Rich output — clean, formatted tables via the rich library
  • Filtering & sorting — slice your task list by status, category, priority, or date
  • Import / export — move tasks between machines with JSON
  • Reports — generate Markdown or HTML reports with one command
  • Local first — SQLite-backed, zero-configuration, works offline

Installation

# uv (recommended)
uv tool install odot

# pipx
pipx install odot

# pip
pip install odot

Quick Start

odot add "Buy groceries" -p 2 -c home # add a task (database created automatically)
odot list                             # view all tasks
odot list --todo --sort priority      # open tasks, sorted by priority

The database defaults to ~/.odot/db.sqlite. Override with the ODOT_DB_PATH environment variable.

Usage

Managing Tasks

odot add "Submit quarterly report" -p 3 -c work   # add
odot show                                          # interactive detail view
odot done 1                                        # mark task 1 as done
odot undo 1                                        # re-open task 1
odot update                                        # interactive update
odot update 1 --content "Revised name" --done      # explicit update
odot rm                                            # interactive delete
odot rm 1 --force                                  # skip confirmation

Searching & Filtering

odot search "groceries"
odot list --done                       # completed tasks only
odot list -c work --todo               # open work tasks
odot list --sort priority --reverse    # descending priority

Import, Export & Reports

odot export backup.json --todo         # export open tasks
odot import backup.json                # append from file
odot import backup.json --clear        # replace all tasks
odot report tasks.md --sort priority   # Markdown report
odot report work.html --todo -c work   # filtered HTML report

Bulk Operations

odot clean          # remove completed tasks (prompts for confirmation)
odot clean --force  # skip confirmation
odot purge          # remove all tasks (prompts for confirmation)
odot purge --force  # skip confirmation

Development

Prerequisites: uv, just, gh

git clone https://github.com/jkomalley/odot.git && cd odot
uv sync
just test          # run pytest
just test-cov      # enforce 100% coverage
just check         # ruff + ty + tests

License

MIT

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

odot-0.3.0.tar.gz (9.3 kB view details)

Uploaded Source

Built Distribution

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

odot-0.3.0-py3-none-any.whl (11.2 kB view details)

Uploaded Python 3

File details

Details for the file odot-0.3.0.tar.gz.

File metadata

  • Download URL: odot-0.3.0.tar.gz
  • Upload date:
  • Size: 9.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for odot-0.3.0.tar.gz
Algorithm Hash digest
SHA256 f2ee7aca08a6a9346d2b51ae2abb43d34f57b0b26cf50b1f0903c9abb486be3c
MD5 37a9855c660f2b01d806d08db75bd9eb
BLAKE2b-256 9e73b603bd41fc31d091a8ba1cb2350e36744f6bfda9d3d4e5bc5fc5b35ab447

See more details on using hashes here.

Provenance

The following attestation bundles were made for odot-0.3.0.tar.gz:

Publisher: release.yml on jkomalley/odot

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file odot-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: odot-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 11.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for odot-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b0607a0f97eba6678ff7d692a78c65212d7699a0ba3edc073a49eaed708162ea
MD5 6bb245f2c3fd0f6b157140e92a6c6ad2
BLAKE2b-256 e67cbfdb7da9d4596c7449a9a7a9684cdb7f823ed5879c4bfb59da586567902f

See more details on using hashes here.

Provenance

The following attestation bundles were made for odot-0.3.0-py3-none-any.whl:

Publisher: release.yml on jkomalley/odot

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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