Skip to content

Latest commit

History

23 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

📋 Task Manager CLI

A lightweight, keyboard-driven task management tool for developers who value speed and simplicity.

PythonLicense: MITGitHub starsGitHub issuesGitHub last commit


📖 About

Task Manager CLI is a simple yet powerful command-line application built with Python that helps you manage your daily tasks efficiently. With persistent JSON storage, status tracking (TODO/DOING/DONE), and an intuitive CLI, it's perfect for developers who prefer terminal-based productivity tools.

This project was built as a hands-on learning experience to master:

  • Python OOP and data modeling
  • Working with dates and statuses
  • File I/O and JSON serialization
  • Professional Git workflow (branches, PRs, code reviews)
  • CLI design and user experience

✨ Features

FeatureDescription
Add TasksCreate tasks with a title and optional description
📋 List TasksView all tasks with status, description, and creation date
Complete TasksMark tasks as done with a simple command
🗑️ Delete TasksRemove tasks you no longer need
💾 Persistent StorageAll tasks are automatically saved to a JSON file
📅 Date TrackingEach task stores creation and last-updated timestamps
🚀 LightweightNo external dependencies — just Python!
🎨 User-FriendlyColorful emoji-based output and helpful error messages

📸 Screenshots


📋 Your Tasks (2/4 completed)
============================================================
1. Buy groceries
Status: ✅ DONE
Description: From supermarket
📅 Created: 2026-07-30
---
1. Read book
Status: ⏳ TODO
Description: Finish chapter 3
📅 Created: 2026-07-30
---
1. Write project docs
Status: 🔄 DOING
📅 Created: 2026-07-31
---
1. Call plumber
Status: ⏳ TODO
Description: Fix kitchen sink
📅 Created: 2026-07-31
---

🚀 Installation

Prerequisites

  • Python 3.8 or higher
  • Git (optional, for cloning)

Step 1: Clone the repository

git clone git@github.com:dev-awa/task-manager.git
cd task-manager

Step 2: (Optional) Create a virtual environment

python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate

Step 3: Install dependencies

pip install -r requirements.txt

Note: This project has no external dependencies, so requirements.txt is currently empty.


📖 Usage

Basic Commands

Command Description

python task_manager.py add "Title" "Description" Add a new task

python task_manager.py list Show all tasks

python task_manager.py complete Mark a task as done

python task_manager.py delete Delete a task

python task_manager.py help Show help message

Examples

# Add a task with title and description
python task_manager.py add "Buy milk""From the supermarket"# Add a task without description
python task_manager.py add "Call mom"# List all tasks
python task_manager.py list
# Complete task number 2
python task_manager.py complete 2
# Delete task number 1
python task_manager.py delete 1
# Show help
python task_manager.py help

Example Session

$ python task_manager.py add "Buy groceries"
✅ Task added: Buy groceries
$ python task_manager.py add "Read book""Finish chapter 3"
✅ Task added: Read book
$ python task_manager.py list
📋 Your Tasks (0/2 completed)
============================================================
1. Buy groceries
Status: ⏳ TODO
📅 Created: 2026-07-30
------------------------------------------------------------
2. Read book
Status: ⏳ TODO
Description: Finish chapter 3
📅 Created: 2026-07-30
------------------------------------------------------------
$ python task_manager.py complete 1
✅ Task completed: Buy groceries
$ python task_manager.py list
📋 Your Tasks (1/2 completed)
============================================================
1. Buy groceries
Status: ✅ DONE
📅 Created: 2026-07-30
------------------------------------------------------------
2. Read book
Status: ⏳ TODO
Description: Finish chapter 3
📅 Created: 2026-07-30
------------------------------------------------------------

📁 Project Structure

task-manager/
├── src/
│ ├── models/
│ │ └── task.py # Task class with status and dates
│ ├── services/
│ │ └── file_service.py # JSON file storage (CRUD operations)
│ └── cli/
│ └── commands.py # CLI command implementations
├── tests/
│ ├── test_task.py # Unit tests for Task model
│ └── test_file_service.py # Unit tests for file service
├── .gitignore # Git ignore rules
├── LICENSE # MIT License
├── README.md # Project documentation
├── requirements.txt # Python dependencies (empty)
└── task_manager.py # Main entry point

📦 Dependencies

Package Version Purpose

Python 3.8+ Core language

json Built-in JSON serialization

os Built-in File system operations

datetime Built-in Date and time handling

Zero external dependencies! This project uses only Python's standard library.


🔮 Feature Improvements

Future enhancements planned for this project:

· Add DOING (IN_PROGRESS) status

· Add due dates for tasks

· Add search by title or description

· Add filter by status

· Add sorting by date or status

· Add task tags/categories

· Add export/import (CSV, JSON)

· Add database support (SQLite)

· Add color-coded output using rich library

· Add interactive mode with menu

· Add unit tests with pytest


🤝 Contributing

Contributions are welcome! Here's how you can help:

  1. Fork the repository
  2. Create a new branch: git checkout -b feature/your-feature
  3. Make your changes and commit: git commit -m "feat: add your feature"
  4. Push to your fork: git push origin feature/your-feature
  5. Open a Pull Request

Please make sure your code follows the existing style and includes appropriate comments.


🔄 Development Workflow

This project follows a professional Git workflow:

# 1. Create a new branch for each feature
git checkout -b feature/your-feature
# 2. Make your changes and commit
git add .
git commit -m "feat: add your feature"# 3. Push to GitHub
git push origin feature/your-feature
# 4. Create a Pull Request on GitHub# 5. After PR is merged, delete the branch
git checkout main
git pull origin main
git branch -d feature/your-feature

Branch Naming Convention

Branch TypeNaming PatternExample
Featurefeature/descriptionfeature/task-model
Chorechore/descriptionchore/initial-setup
Docsdocs/descriptiondocs/final-polish
Bugfixbugfix/descriptionbugfix/status-transition

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

License: MIT


🙏 Acknowledgements

· Inspired by various CLI tools in the Python ecosystem

· Built as a learning project to master Git and Python

· Thanks to the open-source community for inspiration


📬 Contact & Support

PlatformLink
GitHub Profilegithub.com/dev-awa
Repositorygithub.com/dev-awa/task-manager
Report Issuesgithub.com/dev-awa/task-manager/issues
Emailmiladzadehsoltani@gmail.com

⭐ Support This Project

If you find this project useful, please consider giving it a star ⭐ on GitHub!
It helps others discover it and motivates further development.

GitHub stars

⭐ Click here to star this project on GitHub


Built with ❤️ using Python

About

CLI task manager with persistent storage and status management

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages