A modern, lightweight command-line task management application built with C++ that helps you organize and track your daily tasks efficiently.
- π Fast & Lightweight: Minimal resource usage with instant startup
- πΎ JSON Persistence: Automatic save/load with human-readable JSON format
- π Smart Filtering: Filter tasks by completion status
- β° Timestamp Tracking: Automatic creation and update timestamps
- π― Auto-ID Management: Sequential task IDs with collision avoidance
- π‘οΈ Error Handling: Graceful error management and user feedback
- π Cross-Platform: Works on Windows, Linux, and macOS
- π¦ Self-Contained: No external dependencies required
- CMake: Version 4.0 or higher
- C++ Compiler: Supporting C++14 standard (GCC, Clang, MSVC)
-
Clone the repository
git clone https://github.com/OriC28/TaskTrackerCLI.git cd TaskTrackerCLI -
Create build directory
mkdir build cd build -
Configure with CMake
cmake ..
-
Build the application
cmake --build . -
Run TaskTracker CLI
./TaskTrackerCLI --help # Linux/macOS # or TaskTrackerCLI.exe --help # Windows
-
Add your first task
./TaskTrackerCLI add -d "Buy groceries" -s "incomplete"
-
List all tasks
./TaskTrackerCLI list
-
Mark a task as complete
./TaskTrackerCLI update --id 1 -d "Buy groceries" -s "completed"
-
View only completed tasks
./TaskTrackerCLI list -f completed
TaskTracker CLI uses a subcommand architecture for intuitive task management:
Add a new task to your task list.
Usage:
./TaskTrackerCLI add -d "DESCRIPTION" -s "STATUS"Options:
-d, --description(required): Task description-s, --status(required): Task status (incompleteorcompleted)
Example:
./TaskTrackerCLI add -d "Finish project documentation" -s "incomplete"Display tasks with optional status filtering.
Usage:
./TaskTrackerCLI list [-f FILTER]Options:
-f, --filter(optional): Filter by statusall(default): Show all taskscompleted: Show only completed tasksincomplete: Show only incomplete tasks
Examples:
./TaskTrackerCLI list # Show all tasks
./TaskTrackerCLI list -f completed # Show completed tasks only
./TaskTrackerCLI list -f incomplete # Show incomplete tasks onlyUpdate an existing task's description and/or status.
Usage:
./TaskTrackerCLI update --id ID -d "DESCRIPTION" -s "STATUS"Options:
--id(required): Task ID to update-d, --description(required): New task description-s, --status(required): New status (incompleteorcompleted)
Example:
./TaskTrackerCLI update --id 1 -d "Complete project documentation" -s "completed"Remove a task from your task list.
Usage:
./TaskTrackerCLI remove --id IDOptions:
--id(required): Task ID to remove
Example:
./TaskTrackerCLI remove --id 1# Start your day by adding tasks
./TaskTrackerCLI add -d "Review morning emails" -s "incomplete"
./TaskTrackerCLI add -d "Attend team standup" -s "incomplete"
./TaskTrackerCLI add -d "Work on feature X" -s "incomplete"
# Check your task list
./TaskTrackerCLI list
# Complete tasks as you finish them
./TaskTrackerCLI update --id 1 -d "Review morning emails" -s "completed"
./TaskTrackerCLI update --id 2 -d "Attend team standup" -s "completed"
# View your progress
./TaskTrackerCLI list -f completed
# Remove tasks you no longer need
./TaskTrackerCLI remove --id 5ID: 1
Description: Review morning emails
Status: completed
Created: 2025-10-11T09:15:30
Updated: 2025-10-11T10:45:22
- Location: Tasks are stored in
tasks.jsonin the application directory - Format: Human-readable JSON format
- Backup: Recommended to backup
tasks.jsonregularly
[
{
"id": 1,
"description": "Buy groceries",
"status": "completed",
"createdAt": "2025-10-11T09:15:30",
"updatedAt": "2025-10-11T10:45:22"
},
{
"id": 2,
"description": "Finish project",
"status": "incomplete",
"createdAt": "2025-10-11T09:20:15",
"updatedAt": "2025-10-11T09:20:15"
}
]TaskTrackerCLI/
βββ include/ # Header files
β βββ Task.h # Task data structure
β βββ TaskManager.h # Task management logic
βββ src/ # Source files
β βββ main.cpp # CLI interface & entry point
β βββ Task.cpp # Task implementation
β βββ TaskManager.cpp # TaskManager implementation
βββ vendor/ # Third-party libraries
β βββ cli/ # CLI11 command-line parsing
β βββ nlohmann/ # JSON library
βββ CMakeLists.txt # Build configuration
βββ tasks.json # Task data storage
βββ README.md # This file
- CLI11: Modern command-line parsing (header-only)
- nlohmann/json: JSON parsing library (header-only)
# Debug build
cmake -DCMAKE_BUILD_TYPE=Debug ..
cmake --build .
# Release build
cmake -DCMAKE_BUILD_TYPE=Release ..
cmake --build .- C++ Standard: C++14
- Naming Convention: camelCase for variables, PascalCase for classes
- Indentation: 4 spaces
- Line Endings: Platform-appropriate
We welcome contributions! Here's how you can help:
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Make your changes
- Test thoroughly
- Commit your changes:
git commit -m 'Add amazing feature' - Push to the branch:
git push origin feature/amazing-feature - Open a Pull Request
- β Core task management (CRUD operations)
- β JSON persistence
- β CLI interface with subcommands
- β Status filtering
- β Timestamp tracking
- β Cross-platform support
β οΈ Beta release - some features still being polished
- Task timestamps may not display timezone information
- Large task lists (>1000 tasks) may have slower performance
- CLI help text could be more detailed
This project is licensed under the MIT License - see the LICENSE file for details.
- CLI11 for excellent command-line parsing
- nlohmann/json for robust JSON handling
- The C++ community for inspiration and best practices
Made with β€οΈ by OriC28
TaskTracker CLI - Simple, Fast, Effective Task Management