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 init-db                          # create the local database
odot add "Buy groceries" -p 2 -c home # add a task
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 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.2.1.tar.gz (9.5 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.2.1-py3-none-any.whl (11.5 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for odot-0.2.1.tar.gz
Algorithm Hash digest
SHA256 23ff9d7a16bcf08b57764da13ad362c7c9a61790851b52e1301cff9fef649821
MD5 00d389100f064c728a56bc0cd8c059ec
BLAKE2b-256 7ffdad180420f2dd9c2b8bfaa4d4da3a064826f52105dfec57e11c48eecfa4bd

See more details on using hashes here.

Provenance

The following attestation bundles were made for odot-0.2.1.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.2.1-py3-none-any.whl.

File metadata

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

File hashes

Hashes for odot-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 32afd7e42a5a32e506eb7e0f42dabfef836cbc7c3a3a54f26fd57ccad0b3b9e2
MD5 bf293c1b544e4fd6e4bce5bd219977d2
BLAKE2b-256 d11490b606396e984ec4bb1a70ba0359fd229330eb33538b811a905491ad67de

See more details on using hashes here.

Provenance

The following attestation bundles were made for odot-0.2.1-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