CLI tool for managing daily todos with time tracking
Project description
Todo CLI
A powerful command-line todo manager with time tracking, project management, and comprehensive reporting.
TL;DR
# Install from PyPI
pip install agile-todo-cli
# Add a task and start tracking time
todo add "My first task"
todo start 1
# When done
todo stop
todo done 1
# See all your todos
todo list
# Launch interactive KANBAN board
todo kanban -i
That's it! You're tracking tasks with time. Run todo --help for more.
Features
- โ Task Management - Add, edit, delete, and organize tasks
- โฑ๏ธ Time Tracking - Track time spent on tasks with start/stop timers
- ๐ Project Organization - Group tasks into projects with full CRUD operations
- ๐ Smart Filtering - Filter tasks by project, status, priority, and tags
- ๐ Reports - Daily, weekly, and project-based time reports
- ๐ค Export - Export to JSON, CSV, or Markdown
- ๐จ Interactive Mode - Full-featured TUI for task management
- ๐ KANBAN Board - Visual board with vim-style navigation (
todo kanban -i) - ๐ Cycle Management - Sprint/iteration tracking with check-ins
- ๐ณ Subtasks - Hierarchical task relationships with tree view
- โ๏ธ Configurable - Customize priorities, date formats, colors, and more
- ๐ Performance - Optimized database queries with comprehensive indexing
- ๐งช Well-Tested - 90% test coverage with 500+ tests
Installation
# Install from PyPI
pip install agile-todo-cli
# Or install from source
pip install -e .
For existing users: If you have an existing todo database, it will be automatically migrated to the new schema. See MIGRATION_GUIDE.md for details.
Quick Start
Basic Task Management
# Add a task
todo add "Write documentation"
# Add with priority and tags
todo add "Fix bug #123" -p p0 --tags bug urgent
# Add with due date
todo add "Submit report" --due 2025-12-31
# List all active tasks
todo list
# List with filters
todo list --status doing
todo list --project myapp
# Mark as done
todo done 1
Project Management
# Create a project
todo project create "My App" --description "Mobile app development" --color cyan
# List all projects
todo project list
# Show project details and statistics
todo project show "My App"
# Add tasks to a project
todo add "Design login screen" -P "My App"
# Filter tasks by project
todo list --project "My App"
# Archive a project
todo project archive "My App"
# Delete a project (tasks remain unassigned)
todo project delete "My App"
Time Tracking
# Start tracking time on a task
todo start 1
# Check what's currently being tracked
todo active
# Stop tracking
todo stop
# View time spent when marking done
todo done 1
Reports
# Daily report (time spent today)
todo report daily
# Weekly report (time spent this week)
todo report weekly
# Project overview (all projects with stats)
todo report project
# Specific project report
todo report project "My App"
Export
# Export to JSON
todo export json todos.json
# Export to CSV
todo export csv todos.csv
# Export to Markdown
todo export md todos.md
# Export specific project
todo export json myapp.json --project "My App"
Commands
Task Commands
-
add- Add a new todotodo add "Task description" [-p PRIORITY] [-P PROJECT] [--tags TAG...] [--due DATE]
-
list- List todos with optional filterstodo list [--project PROJECT] [--status STATUS] [--all]
-
show- Show detailed information about a todotodo show <id>
-
done- Mark todo as completetodo done <id>
-
delete- Delete a todotodo delete <id> [--force]
-
edit- Edit a todo's propertiestodo edit <id> [--task TEXT] [--priority PRIORITY] [--project PROJECT] [--tags TAG...]
-
status- Change todo status (todo/doing/done)todo status <id> <status>
Project Commands
-
project create- Create a new projecttodo project create <name> [--description TEXT] [--color COLOR]
-
project list- List all projects with statisticstodo project list [--archived]
-
project show- Show project details and task breakdowntodo project show <name>
-
project edit- Edit project propertiestodo project edit <name> [--name NEW_NAME] [--description TEXT] [--color COLOR]
-
project archive- Archive a project (hide from active list)todo project archive <name>
-
project unarchive- Restore an archived projecttodo project unarchive <name>
-
project delete- Delete a project (tasks become unassigned)todo project delete <name>
Time Tracking Commands
-
start- Start time tracking on a tasktodo start <id>
-
stop- Stop time trackingtodo stop [<id>]
-
active- Show currently tracking tasktodo active
Reporting & Export
-
report- Generate time reportstodo report daily [--date DATE] todo report weekly [--date DATE] todo report project [PROJECT_NAME]
-
export- Export todos to various formatstodo export <format> [output_file] [--project PROJECT] [--include-done]
Supported formats:
json,csv,md/markdown
Other Commands
-
stats- Show overall statisticstodo stats -
interactive- Launch interactive mode (TUI)todo interactive -
config- View or modify configurationtodo config show todo config set <key> <value> todo config path
-
version- Show version informationtodo version
Configuration
Customize Todo CLI behavior through the config file (~/.config/todo-cli/config.yaml):
# Default priority for new tasks (p0, p1, p2, p3)
default_priority: p2
# Date format (YYYY-MM-DD, MM/DD/YYYY, DD/MM/YYYY)
date_format: YYYY-MM-DD
# Time format (24h, 12h)
time_format: 24h
# Color scheme (auto, none)
color_scheme: auto
# Confirm before deleting tasks
confirm_delete: true
# Auto-start timer when adding tasks
auto_start_on_add: false
# Show completed tasks in list by default
show_completed_in_list: false
View and modify configuration:
# Show all configuration
todo config show
# Set a value
todo config set default_priority p1
todo config set confirm_delete false
# Show config file location
todo config path
Interactive Mode
Launch a full-featured terminal UI with todo interactive:
- Menu-driven interface - Navigate with arrow keys
- All commands available - Add, edit, delete, start/stop timers
- Real-time updates - See changes immediately
- Keyboard shortcuts - Fast command execution
- Command aliases -
lfor list,dfor done, etc.
KANBAN Board
Launch the interactive KANBAN board with todo kanban -i or todo kanban --interactive:
โโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโ
โ Backlog โ Todo โ In Progress โ Review โ Done โ
โโโโโโโโโโโโโโโผโโโโโโโโโโโโโโผโโโโโโโโโโโโโโผโโโโโโโโโโโโโโผโโโโโโโโโโโโโโค
โ ๐ด #1 Task โ ๐ก #3 Task โ ๐ต #5 Task โ โ โช #7 Task โ
โ ๐ก #2 Task โ ๐ต #4 Task โ โ โ โ
โโโโโโโโโโโโโโโดโโโโโโโโโโโโโโดโโโโโโโโโโโโโโดโโโโโโโโโโโโโโดโโโโโโโโโโโโโโ
Keyboard Shortcuts
| Key | Action |
|---|---|
h / โ |
Move to previous column |
l / โ |
Move to next column |
j / โ |
Select next task |
k / โ |
Select previous task |
Enter |
Move task to next column |
m |
Move task to specific column |
r |
Refresh board |
d |
Toggle done column visibility |
? |
Show help |
q / Esc |
Quit |
Filtering
# Filter by project
todo kanban -i --project "My App"
# Filter by priority
todo kanban -i --priority p0
# Filter by tags
todo kanban -i --tags urgent bug
# Show done column
todo kanban -i --show-done
CLI View (Non-Interactive)
# View KANBAN board in terminal (static view)
todo kanban
# Move task to column
todo kanban move 1 in-progress
# Show column counts
todo kanban --counts
Cycle Management
Organize work into time-boxed cycles (sprints/iterations):
# Start a new cycle
todo cycle start "Sprint 1" --duration 14
# Check in on a cycle (daily standup)
todo cycle check-in --notes "Completed auth module"
# List all cycles
todo cycle list
# Show current cycle status
todo cycle status
# Complete a cycle
todo cycle complete
# View cycle report
todo cycle report "Sprint 1"
Cycle Workflow
- Start - Begin a new cycle with a name and duration
- Check-in - Record daily progress and notes
- Complete - End the cycle and generate summary
- Report - Review cycle metrics and task completion
Database & Migrations
Todo CLI uses SQLite for data storage with automatic schema migrations.
Default database location: ~/.local/share/todo-cli/todos.db
Automatic migrations: When you upgrade Todo CLI, your database is automatically migrated to the latest schema version. Backups are created before each migration.
For existing users: See MIGRATION_GUIDE.md for details on upgrading from older versions.
Performance
Todo CLI is designed for speed:
- โ List 1000 tasks: <100ms
- โ Filter by project: <100ms
- โ Project statistics: <200ms
- โ Comprehensive database indexing for optimal query performance
See docs/performance.md for detailed benchmarks.
Development
Running Tests
# Run all tests
pytest
# Run with coverage
pytest --cov=todo_cli --cov-report=term-missing
# Run specific test file
pytest tests/test_projects.py
# Run performance benchmarks
pytest tests/test_performance.py
Contributing
See CONTRIBUTING.md for development setup, testing guidelines, and contribution workflow.
Project Structure
todo-cli/
โโโ todo_cli/ # Main package
โ โโโ main.py # CLI entry point and commands
โ โโโ database.py # Database operations
โ โโโ projects.py # Project management
โ โโโ kanban.py # KANBAN board logic
โ โโโ kanban_tui.py # KANBAN interactive TUI (Textual)
โ โโโ cycles.py # Cycle/sprint management
โ โโโ subtasks.py # Subtask relationships
โ โโโ migrations.py # Database migrations
โ โโโ models.py # Data models
โ โโโ config.py # Configuration management
โ โโโ display.py # Terminal output formatting
โ โโโ reports.py # Report generation
โ โโโ export.py # Export functionality
โ โโโ interactive.py # Interactive mode
โโโ tests/ # Test suite (500+ tests, 90% coverage)
โโโ docs/ # Documentation
โ โโโ architecture.md # System architecture and design
โ โโโ performance.md # Performance benchmarks
โโโ README.md # This file
โโโ CONTRIBUTING.md # Development guide
โโโ MIGRATION_GUIDE.md # Migration instructions
Roadmap
Epic 1: Foundation โ (Complete)
- โ Project management with full CRUD operations
- โ Database schema v1 with migrations
- โ Smart filtering by project, status, priority
- โ Performance optimization and benchmarking
- โ Comprehensive test coverage (87%)
Epic 2: Sub-tasks โ (Complete)
- โ Hierarchical task relationships
- โ
Tree view for task lists (
--treeflag) - โ Parent-child task dependencies
- โ Subtask progress tracking
Epic 3: KANBAN Board โ (Complete)
- โ Visual board view (Backlog/Todo/In Progress/Review/Done)
- โ Interactive TUI with vim-style navigation
- โ Task movement between columns
- โ Filtering by project, priority, tags
Epic 4: Cycles & Sprints โ (Complete)
- โ Sprint/iteration management
- โ Cycle-based task organization
- โ Daily check-ins with notes
- โ Cycle reports and statistics
Future (Planned)
- Recurring tasks
- Calendar integration
- Cloud sync
- Team collaboration
License
See LICENSE file for details.
Support
- Documentation: See docs/ directory
- Issues: Report bugs or request features via GitHub Issues
- Contributing: See CONTRIBUTING.md
Changelog
v1.1.0 (2025-12-27)
New Features:
- Interactive KANBAN Board - Full TUI with vim-style navigation (
todo kanban -i)- 5-column workflow: Backlog โ Todo โ In Progress โ Review โ Done
- Keyboard shortcuts: h/j/k/l navigation, Enter to advance, m to move
- Filter by project, priority, or tags
- Cycle Management - Sprint/iteration tracking
- Start, check-in, complete, and report on cycles
- Daily standup notes and progress tracking
- Subtask Support - Hierarchical task relationships
- Tree view with
--treeflag - Parent-child task dependencies
- Subtask progress indicators
- Tree view with
Improvements:
- 500+ tests with 90% coverage
- Enhanced KANBAN column management
- Cycle-based task organization
v1.1.0-alpha (Epic 1 Release)
New Features:
- Project management with create, list, show, edit, archive, delete operations
- Project-based task filtering with
--projectflag - Database schema v1 with automatic migrations
- Comprehensive performance optimizations (all queries <200ms)
- Project statistics and reporting
Improvements:
- Added 313+ tests with 87% coverage
- Comprehensive database indexing for optimal performance
- Enhanced filtering capabilities (project + status combinations)
- Backward compatibility with legacy project strings
Migration:
- Existing databases automatically migrated to v1 schema
- Legacy project strings converted to project references
- See MIGRATION_GUIDE.md for details
Built with โค๏ธ using Python, Typer, and Rich.
Project details
Release history Release notifications | RSS feed
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 agile_todo_cli-1.2.0.tar.gz.
File metadata
- Download URL: agile_todo_cli-1.2.0.tar.gz
- Upload date:
- Size: 2.3 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9d9659ab5d476d5d63e366a66de49be3b012983ba07236396bde542648447af1
|
|
| MD5 |
cc96aa5ac6f6533c875261731b463a22
|
|
| BLAKE2b-256 |
4ec2c86700930fd1f4a24a8ac0852b4f84fc6aa3ac1d60de27fd845e08fbe445
|
File details
Details for the file agile_todo_cli-1.2.0-py3-none-any.whl.
File metadata
- Download URL: agile_todo_cli-1.2.0-py3-none-any.whl
- Upload date:
- Size: 72.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4edde9d50580ccb3c554c70496b290938ce5984a0f043891bd78ee71b7ab032f
|
|
| MD5 |
1f136af919928333bc9f85a489f83fb9
|
|
| BLAKE2b-256 |
088cafa3f586c78bf4c7731befa2c1874904645c58965b1299a462526a271c8a
|