A beginner-friendly Python package for managing tasks from the command line.
Built with Python + Click. Tasks are stored in ~/.tasker_data.json so they survive between terminal sessions.
tasker/
├── pyproject.toml ← package config & dependencies
├── requirements.txt ← dependencies list
├── README.md
├── LICENSE
├── src/
│ └── tasker/
│ ├── __init__.py ← public API
│ ├── manager.py ← core logic (TaskManager class)
│ └── cli.py ← Click CLI commands
└── tests/
└── test_manager.py ← unit tests
git clone https://github.com/gautam-oss/tasker.git
cd tasker
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -e .pip install -r requirements.txtAfter installation the tasker command is available anywhere in your terminal.
tasker add-task "Buy groceries"
tasker add-task "Write unit tests"tasker list-taskstasker list-tasks --pendingtasker complete-task 1tasker delete-task 2tasker --help
tasker add-task --helpfrom tasker import TaskManager
manager = TaskManager()
task = manager.add_task("Learn Python packaging")
print(task.task_id, task.title) # 1 Learn Python packaging
manager.complete_task(task.task_id)
for t in manager.list_tasks():
status = "✔" if t.completed else "○"
print(f"[{status}] {t.task_id}. {t.title}")Tasks are saved to ~/.tasker_data.json automatically. You can inspect it anytime:
cat ~/.tasker_data.json[
{
"task_id": 1,
"title": "Buy groceries",
"completed": true,
"created_at": "2024-01-15 10:30:00"
}
]pip install pytest
pytest tests/ -vExpected: 12 tests passing ✅
| File | Role |
|---|---|
manager.py |
Task class + TaskManager — all logic for add/list/complete/delete, reads & writes JSON |
cli.py |
Click commands that wrap TaskManager with coloured terminal output |
__init__.py |
Makes tasker importable as a Python library |
pyproject.toml |
Declares click dependency, registers tasker console script entry point |
requirements.txt |
Flat list of dependencies for manual installs |
MIT © 2026 Gautam Kumar