A command-line task and effort tracking utility for managing daily tasks with priorities, effort estimates, and status tracking.
Project description
jps-effort-tracker-utils
A command-line task and effort tracking utility for managing daily tasks with priorities, effort estimates, and status tracking.
Table of Contents
- Overview
- Features
- Installation
- Quick Start
- Usage
- Task Properties
- Configuration
- Development
- Testing
- Contributing
- License
Overview
jps-effort-tracker-utils is a Python package that provides command-line tools for tracking tasks and effort. It helps you organize your daily work by managing tasks with detailed attributes including priority levels, effort estimates, due dates, status tracking, and integration with issue trackers.
Tasks are stored in YAML files organized by date, making it easy to track your work history and transfer incomplete tasks between days automatically.
Features
✅ Task Management: Add, view, delete, and update tasks via simple CLI commands
✅ Rich Task Attributes:
- Task ID (auto-generated timestamps)
- Title and description
- Priority levels (1-5)
- Due dates
- Status tracking (pending, in-progress, completed, deleted, not started)
- Effort estimates (in minutes)
- Level of effort categories (Easy, Medium, Hard, Complex)
- Issue tracker integration
- Issue types (enhancement, bugfix, documentation, etc.)
✅ Smart Features:
- Automatic transfer of incomplete tasks to the next day
- Date-based task file organization
- Beautiful Rich tables for task viewing with configurable columns
- Interactive task selection and detailed views
- Colored console output for better readability
- YAML-based storage for easy inspection and editing
- Configurable task storage directory
✅ Developer-Friendly:
- Comprehensive test suite with pytest
- Type hints throughout
- Rich console output with Typer CLI framework
- Detailed logging
Installation
For detailed installation instructions, see INSTALL.md.
Quick Install
pip install jps-effort-tracker-utils
From Source
git clone https://github.com/jai-python3/effort-tracker-utils.git
cd effort-tracker-utils
pip install -e .
Quick Start
# View all available commands
jps-effort-tracker --help
# Add a new task
jps-effort-tracker add-task
# View tasks for today
jps-effort-tracker view-tasks
# Update an existing task
jps-effort-tracker update-task
# Delete a task
jps-effort-tracker delete-task
# Show version
jps-effort-tracker version
Usage
All commands are accessed through the main jps-effort-tracker CLI tool.
Add Task
Interactively add a new task with all properties:
jps-effort-tracker add-task
With options:
jps-effort-tracker add-task --config-file /path/to/config.yaml --verbose
Options:
--config-file,-c: Configuration file path (default: built-in config)--task-file,-t: Specific task file to use (default: today's file)--logfile,-l: Log file path--outdir,-o: Output directory for logs--verbose,-v: Enable verbose output
View Tasks
View and browse your tasks in a beautiful Rich table:
jps-effort-tracker view-tasks
This will:
- Display all tasks in a formatted table with configurable columns
- Allow you to select a task by number to view full details
- Show detailed task information in a formatted table
- Press Enter to return or quit
Table Configuration:
The columns displayed in the tasks table are configured in your config.yaml:
view_tasks:
fields:
- title
- status
- priority
- level_of_effort
- effort_estimate
- due_date
You can customize which fields appear and their order by editing this configuration.
Delete Task
Remove a task from the list:
jps-effort-tracker delete-task
Select the task number you want to delete.
Update Task
Modify an existing task:
jps-effort-tracker update-task
This will:
- Display all current tasks
- Prompt you to select a task by number
- Allow you to update any field (press Enter to keep current value)
- Save the changes to the task file
You can update all task properties including title, description, priority, status, effort estimate, level of effort, issue tracker details, and due date. Current values are shown in brackets for reference.
Version
Show version information:
jps-effort-tracker version
Task Properties
Each task includes:
| Property | Type | Description |
|---|---|---|
task_id |
string | Auto-generated timestamp ID (YYYY.MM.DD.HH.MM.SS) |
title |
string | Short task title |
description |
string | Detailed task description |
priority |
int | Priority level (1-5) |
due_date |
datetime | When the task is due |
date_created |
datetime | When the task was created |
status |
string | Current status (pending, in-progress, completed, etc.) |
completed |
bool | Whether the task is completed |
issue_tracker_id |
string | External issue tracker reference |
issue_type |
string | Type of work (enhancement, bugfix, etc.) |
effort_estimate |
int | Estimated duration in minutes |
level_of_effort |
string | Complexity category (Easy, Medium, Hard, Complex) |
Configuration
Default configuration is stored at src/jps_effort_tracker_utils/conf/config.yaml. You can provide a custom configuration:
tasks_dir: /path/to/your/tasks
By default, tasks are stored in: ~/effort-tracker-utils/tasks/
Each day gets its own YAML file: YYYY-MM-DD.yaml
Development
Setup Development Environment
git clone https://github.com/jai-python3/effort-tracker-utils.git
cd effort-tracker-utils
python -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
pip install -e ".[dev]"
Code Quality Tools
The project uses:
- Typer for CLI framework
- Rich for beautiful terminal output
- Black for code formatting
- isort for import sorting
- flake8 for linting
- mypy for type checking
- pylint for additional linting
- pytest for testing
# Format code
black src tests
# Sort imports
isort src tests
# Run linters
flake8 src
mypy src
# Run tests
pytest tests/
Testing
The project has a comprehensive test suite covering:
- Constants and configuration
- Task manager and Task model
- Package metadata
- CLI functionality
# Run all tests
pytest tests/ -v
# Run with coverage
pytest tests/ --cov=src/jps_effort_tracker_utils --cov-report=term-missing
# Run specific test file
pytest tests/test_manager.py -v
Contributing
Contributions are welcome! Please follow these steps:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes
- Run tests and linters
- Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
For major changes, please open an issue first to discuss what you would like to change.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file jps_effort_tracker_utils-1.1.0.tar.gz.
File metadata
- Download URL: jps_effort_tracker_utils-1.1.0.tar.gz
- Upload date:
- Size: 20.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4ce97fb0c4fd45fdafb89f55efed43bca86e01ef8900306da21c037e6b0bea68
|
|
| MD5 |
0895fed67b5aea751739982ac515dbbd
|
|
| BLAKE2b-256 |
5786d07feae8efc926aaf46848a9d820d092fd1fef4529a897446b1a99716229
|
File details
Details for the file jps_effort_tracker_utils-1.1.0-py3-none-any.whl.
File metadata
- Download URL: jps_effort_tracker_utils-1.1.0-py3-none-any.whl
- Upload date:
- Size: 13.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c84c74cdc9277f66ae3c1453fd4bc653b3e2aabb53a91ddffa2b2c40266903ee
|
|
| MD5 |
a085a3bd6cba702c856b8876b42c737a
|
|
| BLAKE2b-256 |
1efe4cc442b0bc6e401ccf94c7c6424f2945d7ff6550684ff335fc4e60978290
|