Skip to content

A modern, lightweight command-line task management application built with C++ that helps you organize and track your daily tasks efficiently.

License

Notifications You must be signed in to change notification settings

OriC28/TaskTrackerCLI

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

9 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ“‹ TaskTracker CLI

A modern, lightweight command-line task management application built with C++ that helps you organize and track your daily tasks efficiently.

Version C++ Platform License

✨ Features

  • πŸš€ 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

πŸ“– Table of Contents

πŸš€ Installation

Prerequisites

  • CMake: Version 4.0 or higher
  • C++ Compiler: Supporting C++14 standard (GCC, Clang, MSVC)

Build from Source

  1. Clone the repository

    git clone https://github.com/OriC28/TaskTrackerCLI.git
    cd TaskTrackerCLI
  2. Create build directory

    mkdir build
    cd build
  3. Configure with CMake

    cmake ..
  4. Build the application

    cmake --build .
  5. Run TaskTracker CLI

    ./TaskTrackerCLI --help  # Linux/macOS
    # or
    TaskTrackerCLI.exe --help  # Windows

⚑ Quick Start

  1. Add your first task

    ./TaskTrackerCLI add -d "Buy groceries" -s "incomplete"
  2. List all tasks

    ./TaskTrackerCLI list
  3. Mark a task as complete

    ./TaskTrackerCLI update --id 1 -d "Buy groceries" -s "completed"
  4. View only completed tasks

    ./TaskTrackerCLI list -f completed

πŸ“‹ Commands

TaskTracker CLI uses a subcommand architecture for intuitive task management:

add - Create New Tasks

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 (incomplete or completed)

Example:

./TaskTrackerCLI add -d "Finish project documentation" -s "incomplete"

list - View Tasks

Display tasks with optional status filtering.

Usage:

./TaskTrackerCLI list [-f FILTER]

Options:

  • -f, --filter (optional): Filter by status
    • all (default): Show all tasks
    • completed: Show only completed tasks
    • incomplete: 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 only

update - Modify Tasks

Update 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 (incomplete or completed)

Example:

./TaskTrackerCLI update --id 1 -d "Complete project documentation" -s "completed"

remove - Delete Tasks

Remove a task from your task list.

Usage:

./TaskTrackerCLI remove --id ID

Options:

  • --id (required): Task ID to remove

Example:

./TaskTrackerCLI remove --id 1

πŸ’‘ Usage Examples

Daily Workflow Example

# 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 5

Task Output Format

ID: 1
Description: Review morning emails
Status: completed
Created: 2025-10-11T09:15:30
Updated: 2025-10-11T10:45:22

βš™οΈ Configuration

Data Storage

  • Location: Tasks are stored in tasks.json in the application directory
  • Format: Human-readable JSON format
  • Backup: Recommended to backup tasks.json regularly

Sample tasks.json Structure

[
    {
        "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"
    }
]

πŸ› οΈ Development

Project Structure

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

Dependencies

  • CLI11: Modern command-line parsing (header-only)
  • nlohmann/json: JSON parsing library (header-only)

Building for Development

# Debug build
cmake -DCMAKE_BUILD_TYPE=Debug ..
cmake --build .

# Release build
cmake -DCMAKE_BUILD_TYPE=Release ..
cmake --build .

Code Style

  • C++ Standard: C++14
  • Naming Convention: camelCase for variables, PascalCase for classes
  • Indentation: 4 spaces
  • Line Endings: Platform-appropriate

🀝 Contributing

We welcome contributions! Here's how you can help:

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature/amazing-feature
  3. Make your changes
  4. Test thoroughly
  5. Commit your changes: git commit -m 'Add amazing feature'
  6. Push to the branch: git push origin feature/amazing-feature
  7. Open a Pull Request

πŸ“ Release Notes

v0.1.0-beta (Current)

  • βœ… 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

πŸ› Known Issues

  • Task timestamps may not display timezone information
  • Large task lists (>1000 tasks) may have slower performance
  • CLI help text could be more detailed

πŸ“„ License

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

πŸ™ Acknowledgments

  • 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

About

A modern, lightweight command-line task management application built with C++ that helps you organize and track your daily tasks efficiently.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published