A robust, efficient, and easy-to-use command-line tool for managing your tasks. The Task Tracker CLI allows you to add, list, complete, and delete tasks while saving all your data in a JSON file for persistence. This tool is perfect for keeping track of your daily to-dos and longer-term goals.
Sample solution for the task-tracker challenge from roadmap.sh.
- Add tasks: Easily create new tasks.
- Update tasks: Easily update tasks.
- List tasks: View all tasks, including their completion status.
- Mark In-progress tasks: Mark tasks as in-progress.
- Complete tasks: Mark tasks as done.
- Delete tasks: Remove tasks from your list.
- JSON persistence: All tasks are stored in a JSON file for persistent storage, meaning your tasks will remain saved even after you close the CLI. This makes it easy to retrieve and manage your tasks across different sessions.
- Auto-Incrementing Task IDs: Each task is automatically assigned a unique, auto-incrementing ID upon creation, ensuring that each task has a distinct identifier without requiring user input.
To make this tool accessible to developers of varying backgrounds, we plan to implement the Task Tracker CLI in multiple languages:
- Nodejs (Typescript)
- PHP
- Rust
- C/C++
- C#
- JAVA
By providing the tool in different languages, our aim is to help developers learn and compare different programming paradigms through practical experience.
-
Clone the repository:
bash
Copy code
git clone https://github.com/Tam643/task_tracker_cli.git cd task-tracker-cli -
Choose the language you want to work with. Currently, only Nodejs is supported, but more languages (Rust, Python, Java, C++) will be added soon.
-
For Nodejs:
- Navigate to the
nodejsfolder. - Follow the instructions in the Nodejs README to build and run the Task Tracker CLI.
- Navigate to the
-
For other languages (coming soon):
- Check back later or contribute to the roadmap for additional language support.
- Each language folder will contain its own
README.mdwith specific instructions.
-
Add a task:
Add a new task to the tracker with a simple description.
task-cli add "Buy groceries" #Task added successfully (ID: 1)
-
Update Task: Update description task
task-cli update 1 "Buy groceries and cook dinner" #Task updated successfully (ID: 1)
-
Delete a task: Delete a task from the tracker by specifying its ID.
task-cli delete 1 #Task deleted successfully (ID: 1) -
Mark in-progress: Mark in-progress task
task-cli mark-in-progress 1 #Task marked in progress successfully (ID: 1) -
Mark done: Mark done task
task-cli mark-done 1 #Task marked done successfully (ID: 1) -
List all tasks: List all tasks in the tracker.
task-cli list
-
List done tasks: List all tasks in the tracker.
task-cli list done -
List todo tasks: List all tasks in the tracker.
task-cli list todo
-
List in-progress tasks: List all tasks in the tracker.
task-cli list in-progress
This project aims to go beyond being just a utility tool; it is also a learning project for new developers. Each language implementation will come with step-by-step tutorials, explaining:
- How to build CLI applications from scratch.
- How to test or debug my function
- The basics of task management logic (CRUD operations).
- How to work with file-based persistence using formats like JSON.
- Writing efficient and clean code, following best practices in each language.
I aim to make each tutorial beginner-friendly, ensuring new developers feel comfortable experimenting with code, building out features, and gaining confidence in real-world projects.
We welcome contributions from developers at all levels. If you'd like to contribute:
- Fork the repository.
- Create a feature branch (
git checkout -b feature/new-feature). - Commit your changes (
git commit -m 'Add new feature'). - Push to the branch (
git push origin feature/new-feature). - Open a pull request.
This project is licensed under the MIT License. See the LICENSE file for details.
