A command-line todo list application with natural language input
Project description
Todo CLI
A command-line todo list application that accepts natural language input.
Features
- Natural language input - No need to remember exact commands
- Intent classification - Automatically understands what you want to do
- Local persistence - Todos saved to
~/.todo/todos.json - Simple and fast - Operations complete in under 0.5 seconds
Installation
From PyPI
pip install todo-cli-nl
From Source
Requires Python 3.10+ and uv.
git clone https://gitlab.com/roscom/todo.git
cd todo
uv sync
Usage
# If installed via pip
todo <command>
# If running from source
uv run todo <command>
Add a Todo
uv run todo add buy groceries
uv run todo "remember to call mom"
uv run todo "I need to finish the report"
List Open Todos
uv run todo list
uv run todo "show my todos"
uv run todo "what do I need to do"
Output:
Open todos:
#1 buy groceries
#2 call mom
#3 finish the report
Complete a Todo
By ID:
uv run todo "done #1"
uv run todo "complete #2"
By title:
uv run todo "done buy groceries"
uv run todo "finish the report"
Delete a Todo
uv run todo "delete #1"
uv run todo "remove call mom"
Help
uv run todo
uv run todo help
uv run todo --help
Supported Commands
| Intent | Keywords |
|---|---|
| Add | add, create, new, remember, need to, todo |
| List | list, show, display, what, todos, tasks |
| Complete | done, complete, finish, finished, check |
| Delete | delete, remove, cancel, drop |
Data Storage
Todos are stored in JSON format at ~/.todo/todos.json.
To reset all todos:
rm -rf ~/.todo
Development
Run Tests
# All tests
uv run pytest
# Unit tests only
uv run pytest tests/unit -v
# Integration tests only
uv run pytest tests/integration -v
# With coverage
uv run pytest --cov=src
Lint
uvx ruff check src/ tests/
Project Structure
src/
├── models/todo.py # TodoItem model + Intent enum
├── services/
│ ├── storage.py # JSON file persistence
│ └── classifier.py # Intent classification
├── cli/main.py # CLI entry point
└── lib/utils.py # Utilities
tests/
├── unit/ # Unit tests
└── integration/ # CLI integration tests
License
MIT
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
todo_cli_nl-0.1.0.tar.gz
(89.9 kB
view details)
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 todo_cli_nl-0.1.0.tar.gz.
File metadata
- Download URL: todo_cli_nl-0.1.0.tar.gz
- Upload date:
- Size: 89.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.21 {"installer":{"name":"uv","version":"0.9.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"25.04","id":"plucky","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
40f3ed1bb2ca582be9d516214b11f30c33fa16bacfe982c1ef4ed363989eff5a
|
|
| MD5 |
413f62ab709c954f8680c77c02cce762
|
|
| BLAKE2b-256 |
fccdc6210387a85b8cf75f392ef890894d2c7af36cc1f7b22eeace22fc526ad5
|
File details
Details for the file todo_cli_nl-0.1.0-py3-none-any.whl.
File metadata
- Download URL: todo_cli_nl-0.1.0-py3-none-any.whl
- Upload date:
- Size: 10.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.21 {"installer":{"name":"uv","version":"0.9.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"25.04","id":"plucky","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
57520d08f548bf90a9a3fc141dc1222bcd64cba639557a3798db55b16cd2a320
|
|
| MD5 |
0382154568f8075a28a4db461876e39d
|
|
| BLAKE2b-256 |
32ba6c93691d0b1222ed14b21413c18f39a7b2a96cf4848e649ba1fa750ea0ff
|