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