Skip to content
quantuumhedgehog edited this page Nov 29, 2024 · 8 revisions

Welcome to Task Tracker CLI Wiki! πŸ“

A robust command-line task management application built in Python that helps you organize and track your tasks efficiently.

This is an implementation of the Task Tracker Project from roadmap.sh.

Quick Navigation πŸ“

πŸ“š Additional Resources:

Overview πŸ“š

Task Tracker CLI is a powerful yet simple command-line application that helps you manage your tasks effectively. Whether you're a developer managing project tasks or someone looking to organize personal todos, Task Tracker CLI provides an efficient way to track your work.

Documentation Structure πŸ“‘

The project documentation is organized into several key files:

  • README.md - Main project documentation and quick start guide
  • CHANGELOG.md - Tracks all project changes and version history
  • FUTURELOG.md - Outlines planned features and improvements
  • Sphinx Documentation - Comprehensive API documentation and guides

For detailed information about specific aspects of the project, please refer to the wiki sections listed in Quick Navigation above.

Quick Start πŸš€

# Install the application
pip install task-tracker-cli

# Create your first task
task-cli add "Complete the project documentation"

# List all tasks
task-cli list

Support and Resources πŸ“š

  • Check the User Guide for detailed usage instructions
  • Join our community discussions in Social Sharing
  • Report issues on our GitHub repository

License and Credits πŸ“œ

This project is licensed under the MIT License. See the LICENSE file in the main repository for details.

Features πŸŽ‰

  • Task Management

    • Create tasks with descriptions
    • List all tasks or filter by status
    • Update task descriptions
    • Mark tasks as todo/in-progress/done
  • Data Persistence

    • Automatic JSON storage
    • Timestamps for creation and updates
    • Data integrity checks

Prerequisites πŸ“

  • Python 3.10 or higher
  • pip (Python package installer)

Installation πŸ“¦

From Source

  1. Clone the repository:
git clone <repository-url>
cd roadmaps-python-task-tracker
  1. Install in development mode:
# Install with development dependencies
pip install -e ".[dev]"

# Or install just the application
pip install -e .

Via pip (when published)

pip install task-tracker-cli

Build from Source

# Install build dependencies
pip install build

# Build the package
python -m build

# Install the built package
pip install dist/task_cli-0.1.0-py3-none-any.whl

Usage πŸ“š

The task-cli command provides several subcommands for task management:

Task Creation

# Add a new task
task-cli add "Complete the project documentation"

Task Listing

# List all tasks
task-cli list

# List tasks by status
task-cli list todo
task-cli list in-progress
task-cli list done

Task Updates

# Edit task description
task-cli edit <task-id> "Updated task description"

# Update task status
task-cli mark-todo <task-id>
task-cli mark-progress <task-id>
task-cli mark-done <task-id>

Development πŸ“ˆ

Testing

The project includes two testing implementations to demonstrate different Python testing approaches:

Using unittest

The unittest implementation follows Python's built-in testing framework approach:

# Run unittest tests
python -m unittest tests/test_task_cli_unittests.py -v

Key features:

  • Uses Python's standard library testing framework
  • Class-based test organization
  • Built-in assertion methods
  • Test discovery and execution

Using pytest

The pytest implementation offers a more modern and feature-rich testing approach:

# Run basic tests
pytest tests/test_task_cli_pytest.py -v

# Run tests with coverage report
pytest tests/test_task_cli_pytest.py -v --cov=src/task_cli

# Generate HTML coverage report
pytest tests/test_task_cli_pytest.py --cov=src/task_cli --cov-report=html

Key features:

  • Fixtures for better test setup and teardown
  • Powerful assertion introspection
  • Built-in parameterization
  • Rich plugin ecosystem
  • Coverage reporting
  • Parallel test execution (with pytest-xdist)

Project Structure

task-tracker-cli/           # Root project directory
β”œβ”€β”€ src/                    # Source code directory
β”‚   └── task_cli/          # Main package directory
β”‚       β”œβ”€β”€ __init__.py    # Package initialization
β”‚       β”œβ”€β”€ __main__.py    # Entry point for CLI
β”‚       └── task_cli.py    # Core implementation
β”œβ”€β”€ tests/                  # Test files directory
β”‚   β”œβ”€β”€ test_task_cli_pytest.py  # Pytest test suite
β”‚   └── test_task_cli_unittests.py  # Unittest test suite
β”œβ”€β”€ README.md              # Project documentation
└── pyproject.toml         # Project metadata and dependencies

Data Storage πŸ“

Tasks are stored in a JSON file (tasks.json by default) with the following schema:

[
    {
        "id": 1,
        "description": "Task description",
        "status": "todo",
        "createdAt": "2024-01-01T10:00:00",
        "updatedAt": "2024-01-01T10:30:00"
    }
]

Acknowledgments πŸ™

This project is prepared within the Python Developer path on Roadmap.sh.