Simple CLI Task Manager in Python (JSON-Based)

3 months ago 21

A sleek, lightweight command-line task management tool built with Python. Keep your productivity on track with simple commands and JSON-based storage.

  • Simple & Fast: Add, update, delete, and manage tasks with single commands
  • Status Tracking: Organize tasks with todo, in-progress, and done statuses
  • Timestamp Management: Automatic creation and update timestamps
  • Flexible Filtering: List tasks by status or view all at once
  • JSON Storage: Human-readable task storage in tasks.json
  • Error Handling: Robust input validation and helpful error messages
# Clone the repository git clone https://github.com/oheyek/Task-Tracker-CLI.git cd Task-Tracker-CLI # Install dependencies pip install -r requirements.txt # Install as a CLI tool (optional) pip install -e .

After installation, you can use task-cli directly:

task-cli add "Learn Python"

Alternatively, run directly with Python:

python main.py add "Learn Python"
# Add a new task task-cli add "Complete project documentation" task-cli add "Review pull requests"
# List all tasks task-cli list # List tasks by status task-cli list todo task-cli list in-progress task-cli list done
# Update task description task-cli update 1 "Complete comprehensive project documentation"
# Mark task as in-progress task-cli mark-in-progress 1 # Mark task as done task-cli mark-done 1 # Mark task back to todo task-cli mark-todo 1
# Delete a task by ID task-cli delete 1
Command Arguments Description Example
add <description> Add a new task task-cli add "Buy groceries"
list [status] List tasks (all, todo, in-progress, done) task-cli list done
update <id> <description> Update task description task-cli update 2 "New description"
delete <id> Delete a task task-cli delete 3
mark-todo <id> Mark task as todo task-cli mark-todo 1
mark-in-progress <id> Mark task as in-progress task-cli mark-in-progress 1
mark-done <id> Mark task as completed task-cli mark-done 1

Each task is stored with the following structure:

{ "id": 1, "description": "Complete project documentation", "status": "todo", "createdAt": "2025-01-15T10:30:00", "updatedAt": "2025-01-15T10:30:00" }
  • todo - Task is pending
  • in-progress - Task is currently being worked on
  • done - Task is completed
Task-Tracker-CLI/ ├── main.py # Main application logic ├── tasks.json # Task storage (auto-generated) ├── requirements.txt # Python dependencies ├── setup.py # Package setup configuration └── README.md # This file
  • Language: Python 3.8+
  • Storage: JSON file-based persistence
  • Dependencies: Standard library + datetime package
  • Error Handling: Comprehensive input validation
  • ID Management: Auto-incrementing task IDs

The CLI provides helpful error messages for common issues:

  • Invalid task IDs
  • Missing required arguments
  • Invalid status values
  • File operation errors
  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request
# Add some tasks task-cli add "Set up development environment" task-cli add "Write unit tests" task-cli add "Deploy to production" # Start working on first task task-cli mark-in-progress 1 # Check progress task-cli list in-progress # Complete and move to next task-cli mark-done 1 task-cli mark-in-progress 2 # View all completed tasks task-cli list done

This project is open source and available under the MIT License.


Happy Task Tracking! 🎉

Made with ❤️ by ohey
Buy Me A Coffee


If you find this project useful, consider buying me a coffee!

https://roadmap.sh/projects/task-tracker

Read Entire Article