Simple. Fast. Git-friendly.
A lightweight task management system that lives in your project directory. Perfect for developers who want todo lists without leaving the terminal.
Problem: Most task managers are either:
- π Heavy GUI applications (Trello, Asana, Jira)
- βοΈ Cloud-based (requires account, internet, privacy concerns)
- π° Expensive subscriptions
- π Not integrated with development workflow
Solution: TaskFlow gives you:
- β CLI-first - Fast, keyboard-driven workflow
- β
Per-project - Tasks live in
.taskflow.jsonin project root - β Git-friendly - JSON format, easy to track and merge
- β Zero dependencies - Pure Python, no external packages
- β Cross-platform - Works on Windows, macOS, Linux
- β Markdown export - Share tasks in TASKS.md
- β Priority & tags - Organize however you want
- β Lightweight - < 500 lines of code
# Clone or download
cd TaskFlow
# Make executable (Unix/Linux/Mac)
chmod +x taskflow.py
# Run directly
python taskflow.py init# Navigate to your project
cd ~/my-project
# Initialize TaskFlow
python path/to/taskflow.py init
# β
TaskFlow initialized!
# Task file: .taskflow.json# Simple add
python taskflow.py add "Implement user authentication"
# With priority
python taskflow.py add "Fix critical bug" --priority high
# With tags
python taskflow.py add "Write tests" --tags testing,important
# With due date
python taskflow.py add "Deploy v2.0" --due 2026-01-15
# Everything
python taskflow.py add "Refactor database" --priority medium --tags backend,refactor --due 2026-01-20# List all tasks
python taskflow.py list
# Output:
# π TaskFlow - 5 task(s)
#
# π π΄ [1] Fix critical bug
# β¬ π‘ [2] Implement user authentication
# β¬ π‘ [3] Refactor database
# β¬ π’ [4] Write tests
# β
π‘ [5] Deploy v2.0
# Filter by status
python taskflow.py list --status todo
python taskflow.py list --status in_progress
python taskflow.py list --status done
# Filter by priority
python taskflow.py list --priority high
# Filter by tag
python taskflow.py list --tag urgent
# Show details
python taskflow.py list --details# Mark as in progress
python taskflow.py start 1
# π Task started: [1] Fix critical bug
# Mark as done
python taskflow.py done 1
# β
Task completed: [1] Fix critical bug
# Mark as blocked
python taskflow.py block 3
# π« Task blocked: [3] Refactor database# Change title
python taskflow.py edit 2 --title "Implement OAuth authentication"
# Change priority
python taskflow.py edit 2 --priority high
# Update tags
python taskflow.py edit 2 --tags auth,security,urgent
# Update due date
python taskflow.py edit 2 --due 2026-01-12
# Multiple updates
python taskflow.py edit 2 --title "New title" --priority high --tags new,tags# Delete task
python taskflow.py delete 4
# ποΈ Task deleted: [4] Write tests# Export all tasks
python taskflow.py export
# Custom output file
python taskflow.py export --output TODO.md
# Creates formatted TASKS.md with all tasks organized by status# Show task stats
python taskflow.py stats
# Output:
# π TaskFlow Statistics
#
# Total Tasks: 10
#
# By Status:
# β¬ Todo: 5 (50.0%)
# π In Progress: 2 (20.0%)
# π« Blocked: 1 (10.0%)
# β
Done: 2 (20.0%)
#
# By Priority:
# π΄ High: 3 (30.0%)
# π‘ Medium: 5 (50.0%)
# π’ Low: 2 (20.0%)# Initialize TaskFlow
$ cd ~/new-project
$ python taskflow.py init
β
TaskFlow initialized!
# Add initial tasks
$ python taskflow.py add "Setup project structure" --priority high
$ python taskflow.py add "Write README" --priority medium
$ python taskflow.py add "Configure CI/CD" --priority low --tags devops
# View all tasks
$ python taskflow.py list
π TaskFlow - 3 task(s)
β¬ π΄ [1] Setup project structure
β¬ π‘ [2] Write README
β¬ π’ [3] Configure CI/CD
π Summary:
β¬ Todo: 3
# Start working
$ python taskflow.py start 1
π Task started: [1] Setup project structure# Add bugs with tags
$ python taskflow.py add "Login fails on mobile" --priority high --tags bug,mobile,urgent
$ python taskflow.py add "Memory leak in dashboard" --priority high --tags bug,performance
$ python taskflow.py add "Typo in footer" --priority low --tags bug,ui
# List all bugs
$ python taskflow.py list --tag bug
# Mark bug fixed
$ python taskflow.py done 1# Add sprint tasks
$ python taskflow.py add "User stories for auth" --priority high --tags sprint-1,planning
$ python taskflow.py add "API endpoint design" --priority high --tags sprint-1,backend
$ python taskflow.py add "UI mockups" --priority medium --tags sprint-1,frontend
# View sprint tasks
$ python taskflow.py list --tag sprint-1
# Export for team
$ python taskflow.py export --output SPRINT_1.md# Morning: Check what's in progress
$ python taskflow.py list --status in_progress
# Start new task
$ python taskflow.py start 5
# Complete a task
$ python taskflow.py done 3
# Add new urgent task
$ python taskflow.py add "Hotfix: API rate limiting" --priority high --tags hotfix,urgent
# Evening: Check stats
$ python taskflow.py statsTaskFlow stores tasks in .taskflow.json - a Git-friendly JSON file.
# Track tasks in Git
git add .taskflow.json
git commit -m "Update project tasks"
# Share with team
git push
# Team members pull and see your tasks
git pull
python taskflow.py listPro tip: Add .taskflow.json to .gitignore if you want personal-only tasks, or commit it for team visibility.
Make TaskFlow even faster:
# Bash/Zsh (~/.bashrc or ~/.zshrc)
alias tf='python /path/to/taskflow.py'
# Now use:
tf add "Quick task"
tf list
tf done 3# PowerShell ($PROFILE)
function tf { python C:\path\to\taskflow.py $args }
# Now use:
tf add "Quick task"
tf list
tf done 3Each project gets its own .taskflow.json:
# Project A
cd ~/project-a
python taskflow.py list # Shows Project A tasks
# Project B
cd ~/project-b
python taskflow.py list # Shows Project B tasks# Export tasks every Friday
python taskflow.py export --output WEEKLY_TASKS.md
# Commit to Git
git add WEEKLY_TASKS.md
git commit -m "Weekly task update"TaskFlow stores tasks in .taskflow.json:
{
"tasks": [
{
"id": 1,
"title": "Implement feature X",
"priority": "high",
"status": "in_progress",
"tags": ["feature", "urgent"],
"due_date": "2026-01-15",
"created": "2026-01-09T08:00:00",
"updated": "2026-01-09T10:30:00"
}
],
"last_updated": "2026-01-09T10:30:00"
}Fields:
id- Unique task identifier (auto-generated)title- Task descriptionpriority-high,medium, orlowstatus-todo,in_progress,done, orblockedtags- Array of strings for categorizationdue_date- ISO format date (optional)created- ISO timestampupdated- ISO timestamp
TaskFlow uses visual indicators for quick scanning:
Status Icons:
- β¬
todo- Not started - π
in_progress- Currently working - β
done- Completed - π«
blocked- Waiting on something
Priority Colors:
- π΄
high- Urgent, do first - π‘
medium- Normal priority - π’
low- Do when time permits
Special Indicators:
β οΈ - Task is overdue
| Command | Description | Example |
|---|---|---|
init |
Initialize TaskFlow in current directory | taskflow init |
add |
Add new task | taskflow add "Task title" --priority high |
list |
List all tasks | taskflow list --status todo |
start |
Mark task as in progress | taskflow start 3 |
done |
Mark task as done | taskflow done 5 |
block |
Mark task as blocked | taskflow block 2 |
edit |
Edit task properties | taskflow edit 4 --priority high |
delete |
Delete task | taskflow delete 7 |
export |
Export to Markdown | taskflow export --output TASKS.md |
stats |
Show task statistics | taskflow stats |
- Track bugs and features per project
- Sprint planning and management
- Daily task lists synced with Git
- Personal TODO alongside codebase
- Commit
.taskflow.jsonfor shared visibility - Export to Markdown for status updates
- Tag-based organization (sprints, epics)
- Lightweight alternative to Jira
- Track assignments per course
- Organize study tasks by priority
- Export for study group sharing
- Due date reminders
- Per-client task tracking
- Priority management across projects
- Quick status updates for clients
- No subscription costs
A:
- β CLI-first - No GUI overhead, keyboard-driven
- β Per-project - Tasks live with your code
- β Git-friendly - JSON format, easy to track
- β Zero cost - No subscriptions, no accounts
- β Lightweight - One Python file, no dependencies
A: Yes! Commit .taskflow.json to Git and your team sees the same tasks. Each person can run taskflow list to see current status.
A: Git handles JSON merges well. For heavy concurrent editing, consider using GitHub Issues or a dedicated tool instead.
A: Yes! Keep .taskflow.json in .gitignore for personal tasks, or create a second file (.taskflow.personal.json) and run TaskFlow with a custom path.
A: Absolutely! TaskFlow doesn't require Git. It just stores tasks in a local JSON file. Git integration is optional.
A: Not built-in yet, but the JSON format is simple. You could write a script to import from CSV, Trello export, etc.
A: No. TaskFlow is CLI-only by design. For GUI, consider tools like Todoist, Trello, or Things.
A: The .taskflow.json file is your backup. Copy it, commit to Git, or sync with cloud storage (Dropbox, OneDrive, etc.).
Found a bug? Have a feature idea? Contributions welcome!
- Fork the repository
- Create feature branch (
git checkout -b feature/AmazingFeature) - Commit changes (
git commit -m 'Add AmazingFeature') - Push to branch (
git push origin feature/AmazingFeature) - Open Pull Request
MIT License - see LICENSE file for details.
TL;DR: Free to use, modify, and distribute. No warranty provided.
Created by Randell Logan Smith and Team Brain at Metaphy LLC
Part of the HMSS (Heavenly Morning Star System) ecosystem.
Technology:
- Python 3.6+
- JSON for storage
- argparse for CLI
- Zero external dependencies
# Initialize
taskflow init
# Add task
taskflow add "Task title" [--priority high|medium|low] [--tags tag1,tag2] [--due YYYY-MM-DD]
# List tasks
taskflow list [--status todo|in_progress|done|blocked] [--priority high|medium|low] [--tag TAG] [--details]
# Update status
taskflow start ID # Mark as in progress
taskflow done ID # Mark as done
taskflow block ID # Mark as blocked
# Edit task
taskflow edit ID [--title "New title"] [--priority high|medium|low] [--tags tag1,tag2] [--due YYYY-MM-DD]
# Delete task
taskflow delete ID
# Export & stats
taskflow export [--output FILENAME]
taskflow statsπ Stay organized. Stay productive. Stay in the terminal.