A fast, lightweight command-line task manager built with Python. Add tasks interactively, track progress, set priorities, edit tasks with a single keypress, and get desktop reminders — all without leaving your terminal.
- 🧠 Interactive task creation — just run
add, no flags needed - ✅ Status tracking —
TODO→IN_PROGRESS→DONE - 🔴🟡🟢 Color-coded priorities —
HIGH,MEDIUM,LOW - 🃏 Interactive task view — open any task and edit fields with a single keypress
- 🔍 Filter tasks by status or priority
- 🔔 Desktop reminders — get notified 1 minute before a deadline
- 💾 Persistent storage — tasks saved locally in JSON
- 🧪 Full test suite with
pytest
- Python 3.10+
- Rich — Beautiful terminal UI
- Plyer — Cross-platform desktop notifications
- Readchar — Instant keypress detection
- Pytest — Automated testing
1. Clone the repository
git clone https://github.com/your-username/TaskTracker.git
cd TaskTracker2. Create and activate a virtual environment
# Create
python -m venv venv
# Activate — Mac/Linux
source venv/bin/activate
# Activate — Windows
venv\Scripts\activate3. Install dependencies
pip install -r requirements.txt4. Linux users only — install dbus for notifications
# Arch / Manjaro
sudo pacman -S python-dbus
# Fedora
sudo dnf install python3-dbus
# Debian / Ubuntu
sudo apt install python3-dbusJust run add — it will guide you step by step. No flags needed!
python main.py add╭──────────────────────────────────╮
│ Let's create a new task! │
╰──────────────────────────────────╯
➤ Task description : Build login page
➤ Start time : 2025-06-01 09:00
➤ End time : 2025-06-01 11:00
➤ Priority (H/M/L) : H
➤ Set reminder? : y
Summary:
Description : Build login page
Priority : HIGH
Reminder : 🔔 On
➤ Confirm? (y/n) : y
✔ Task added (ID: 1, Priority: HIGH)
python main.py listpython main.py list --status TODO
python main.py list --status IN_PROGRESS
python main.py list --priority HIGHOpen a task card and edit any field with a single keypress — no flags, no re-typing commands.
python main.py view 1╭─────────── 📋 Task #1 ────────────╮
│ Description : Build login page │
│ Status : TODO │
│ Priority : HIGH │
│ Start Time : 2025-06-01 09:00 │
│ End Time : 2025-06-01 11:00 │
│ Reminder : 🔔 On │
╰───────────────────────────────────╯
[d] Edit Description
[s] Change Status
[p] Change Priority
[t] Edit Times
[r] Toggle Reminder
[x] Delete Task
[q] Quit
python main.py status 1 IN_PROGRESS
python main.py status 1 DONEpython main.py complete 1python main.py delete 1python main.py notifyRuns in the background and sends a desktop alert 1 minute before any task deadline. Press
Ctrl+Cto stop.
TaskTracker/
├── main.py # Core application logic + CLI
├── test_main.py # Automated test suite
├── requirements.txt # Project dependencies
├── .gitignore # Files excluded from version control
├── screenshots/ # README screenshots
└── README.md # You are here
pytest test_main.py -vExpected output:
✅ 27 passed in 0.5s
| Command | Description |
|---|---|
add |
Add a new task (interactive, no flags needed) |
list |
List all tasks |
list --status TODO |
Filter by status (TODO, IN_PROGRESS, DONE) |
list --priority HIGH |
Filter by priority (HIGH, MEDIUM, LOW) |
view <id> |
Open interactive task card — edit with keypresses |
status <id> <STATUS> |
Update task status |
complete <id> |
Mark task as DONE |
delete <id> |
Delete a task |
notify |
Start desktop notification service |
Pull requests are welcome! For major changes, please open an issue first to discuss what you'd like to change.
- Fork the repo
- Create a feature branch (
git checkout -b feature/your-feature) - Commit your changes (
git commit -m "feat: add your feature") - Push to the branch (
git push origin feature/your-feature) - Open a Pull Request
This project is licensed under the MIT License. See LICENSE for details.