Crates.io | project_management |
lib.rs | project_management |
version | 0.9.3 |
created_at | 2025-08-16 19:37:36.030033+00 |
updated_at | 2025-08-18 01:29:47.49576+00 |
description | Power-CLI project management tool with hierarchical task organisation and a retro-rapid TUI. |
homepage | |
repository | https://github.com/pbower/project_management |
max_upload_size | |
id | 1798792 |
size | 326,143 |
Command-line project management tool with hierarchical task organisation and an optional terminal user interface (TUI).
The key use case is rapid low-effort personal project planning for an individual, avoiding web-tool overhead.
It creates a simple local file ~/.pm/tasks.json which it uses as the database, with basic CSV export, and no external integrations, so you retain complete control.
Change Log: V0.9.3: Added Workflow Ticket Manager V0.9.0-2: Initial Public Release
Hierarchical Task Organisation: Organise work using a four-level hierarchy:
Rich Task Metadata:
Multiple Interfaces:
Flexible Querying and Filtering:
git clone <repository-url>
cd pm
cargo build --release
The binary will be available at target/release/pm
.
Alternatively, install it directly to ~/.cargo/bin with:
cargo install --path .
# Add a simple task
pm add "Implement user authentication"
# Add a task with metadata
pm add "Design login flow" \
--desc "Create wireframes and user flow for login process" \
--project "auth-system" \
--tag "design,ux" \
--due "2024-12-31" \
--kind epic \
--priority must-have \
--urgency urgent-important
# List all open tasks
pm list
# List tasks in tree view
pm list --tree
# View detailed task information
pm view 1
# Update a task
pm update 1 --status in-progress --add-tags "frontend"
# Complete a task
pm complete 1
# Delete a task
pm delete 1
# Natural language dates
pm add "Weekend Task" --due "this weekend"
pm add "Sprint Review" --due "next friday"
pm add "Month End Report" --due "end of month"
pm add "Next Week Task" --due "in 1w"
pm add "Tomorrow's Meeting" --due "tomorrow"
# Create templates for reusable configurations
pm template create "Bug Fix" \
--description "Standard bug fix template" \
--priority must-have \
--tags "bug,fix" \
--process-stage implementation
# Use templates when creating tasks
pm add "Authentication Issue" --template "Bug Fix"
# Save existing tasks as templates
pm template save 42 "My Custom Template"
# Manage templates
pm template list
pm template delete "Old Template"
# Complete all tasks with specific tag
pm complete --tag "sprint-1"
# Delete all tasks in a project
pm delete --project "old-project"
# Complete all open tasks
pm complete --status open
# Export all tasks to CSV
pm export --all
# Export filtered tasks
pm export --tag "bug" --output "bug_report.csv"
pm export --project "web-app" --output "project_tasks.csv"
# Generate completion scripts
pm completions bash > ~/.bash_completion.d/pm
pm completions zsh > ~/.zfunc/_pm
pm completions fish > ~/.config/fish/completions/pm.fish
# Create a product
pm add "E-commerce Platform" --kind product
# Create an epic under the product
pm add "User Management System" --kind epic --parent "E-commerce Platform"
# Create tasks under the epic
pm add "User Registration" --kind task --parent "User Management System"
pm add "User Login" --kind task --parent "User Management System"
# Create subtasks
pm add "Form Validation" --kind subtask --parent "User Registration"
pm add "Email Verification" --kind subtask --parent "User Registration"
Launch the interactive TUI:
pm ui
The Terminal UI (TUI) provides:
--db <PATH>
: Specify custom database file location (default: ~/.pm/tasks.json
)add
- Add a new taskpm add <TITLE> [OPTIONS]
Options:
--desc <TEXT>
: Longer description--project <NAME>
: Project name--tag <TAG>
: Tags (comma-separated, repeatable)--due <DATE>
: Due date with smart parsing ("next friday", "end of week", "in 2w", "YYYY-MM-DD")--parent <NAME>
: Parent task name (or ID for legacy compatibility)--template <NAME>
: Use template for default values--kind <KIND>
: Task kind (product, epic, task, subtask, milestone) [default: task]--priority-level <LEVEL>
: Priority (must-have, nice-to-have, cut-first)--urgency <LEVEL>
: Urgency (urgent-important, urgent-not-important, not-urgent-important, not-urgent-not-important)--process-stage <STAGE>
: Process stage (ideation, design, prototyping, implementation, testing, refinement, release)--status <STATUS>
: Initial status (open, in-progress, done) [default: open]--summary <TEXT>
: One-line summary--user-story <TEXT>
: User story--requirements <TEXT>
: Requirements specification--artifacts <FILES>
: Artifact file paths (comma-separated)--issue-link <URL>
: Issue tracker URL--pr-link <URL>
: Pull request URLlist
- List tasks with filteringpm list [OPTIONS]
Options:
--all
: Include completed tasks--status <STATUS>
: Filter by status--kind <KIND>
: Filter by kind--project <PROJECT>
: Filter by project--tag <TAG>
: Filter by tags (repeatable)--due <FILTER>
: Due date filter (today, this-week, overdue, none)--tree
: Display as hierarchical tree--sort <KEY>
: Sort by (due, priority, id)--limit <N>
: Limit number of resultsview
- View task detailspm view <ID_OR_NAME> [OPTIONS]
Options:
--children
: Show child tasks--parents
: Show parent chainupdate
- Update task fieldspm update <ID_OR_NAME> [OPTIONS]
Options: (Same as add
command, plus)
--add-tags <TAGS>
: Add tags--rm-tags <TAGS>
: Remove tags--clear-due
: Clear due date--clear-parent
: Remove parent relationshipcomplete
- Mark task as donepm complete <ID_OR_NAME> [OPTIONS]
# OR bulk operations:
pm complete --tag <TAG>
pm complete --project <PROJECT>
pm complete --status <STATUS>
Options:
--recurse
: Also complete all descendant tasksreopen
- Reopen completed taskpm reopen <ID_OR_NAME>
delete
- Delete taskpm delete <ID_OR_NAME> [OPTIONS]
# OR bulk operations:
pm delete --tag <TAG>
pm delete --project <PROJECT>
pm delete --status <STATUS>
Options:
--cascade
: Also delete all descendant tasksprojects
- List all projectspm projects
tags
- List all tags with usage countspm tags
ui
- Launch terminal user interfacepm ui
template
- Manage task templatespm template <ACTION>
Actions:
create <NAME> [OPTIONS]
: Create new templatesave <TASK_ID> <NAME>
: Save existing task as templatelist
: List all templatesdelete <NAME>
: Delete a templateexport
- Export tasks to CSVpm export [OPTIONS]
Options:
-o, --output <FILE>
: Output file (default: tasks.csv)--all
: Include completed tasks--project <PROJECT>
: Filter by project--tag <TAG>
: Filter by tagcompletions
- Generate shell completionspm completions <SHELL>
Shells: bash, zsh, fish
Tasks are stored in a JSON file at ~/.pm/tasks.json
by default. You can specify a custom location using the --db
option.
The database format is human-readable JSON, making it easy to backup, sync, or integrate with other tools.
The tool enforces these hierarchical relationships:
Reason: At a personal level I have found this structure supports effective management of large-scale software projects, without being confronted with a sea of low-level task details prematurely.
PM is designed to integrate with modern development workflows:
# Create product
pm add "Task Management App" --kind product
# Create epics
pm add "Core Task System" --kind epic --parent "Task Management App"
pm add "User Interface" --kind epic --parent "Task Management App"
# Create tasks
pm add "Task CRUD Operations" --kind task --parent "Core Task System" --process-stage implementation
pm add "CLI Interface" --kind task --parent "User Interface" --process-stage design
# Create subtasks with development metadata
pm add "Add Task Command" --kind subtask --parent "Task CRUD Operations" \
--desc "Implement the add command with validation" \
--process-stage implementation \
--issue-link "https://github.com/user/repo/issues/42" \
--priority must-have
# Sprint planning
pm add "Sprint 1 Planning" --kind milestone --due "today"
pm add "User Registration" --kind task --due "in 7d" --priority must-have
pm add "User Login" --kind task --due "in 14d" --priority must-have
# View sprint work
pm list --due this-week --tree
cargo test
The TUI is built around a four-level hierarchy designed to manage complex projects from high-level vision down to implementation details:
This structure prevents cognitive overload by allowing you to focus on the appropriate level of abstraction for your current context. Additionally, it enables farming low-level (the low-complexity, time-consuming) work out to LLM's such as Claude Code, within manageable system boundaries.
Basic Navigation:
LEFT/RIGHT
: Navigate between hierarchy levels (Product ↔ Epic ↔ Task ↔ Subtask)UP/DOWN
: Move within the current listENTER
: Select/drill down into itemsESC
: Go back/up one levelAdvanced Navigation:
SHIFT+LEFT/SHIFT+RIGHT
: Move items between hierarchy levels (promote/demote)TAB
: Switch between different views (List, Tree, Calendar, etc.)?
: Help system with full keyboard shortcutsThe LEFT/RIGHT movement lets you "zoom out" to see the big picture or "zoom in" to focus on specific implementation details, while SHIFT+LEFT/RIGHT actually restructures your project hierarchy.
Most terminal-based project management tools fall into two categories:
There are few high-quality options for individual developers who need:
PM fills this gap by providing a personal project management system that scales from quick task capture to complex multi-epic software projects, all while staying in your terminal where development work happens.
The following are potential future enhancements:
All free, and user-local, and development will likely stop there, rather than overcooking things, so that setup remains zero-config and ready-to-go.
MIT Licensed. See LICENSE for details.