Skip to main content

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 todo

    todo add "Task description" [-p PRIORITY] [-P PROJECT] [--tags TAG...] [--due DATE]
    
  • list - List todos with optional filters

    todo list [--project PROJECT] [--status STATUS] [--all]
    
  • show - Show detailed information about a todo

    todo show <id>
    
  • done - Mark todo as complete

    todo done <id>
    
  • delete - Delete a todo

    todo delete <id> [--force]
    
  • edit - Edit a todo's properties

    todo 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 project

    todo project create <name> [--description TEXT] [--color COLOR]
    
  • project list - List all projects with statistics

    todo project list [--archived]
    
  • project show - Show project details and task breakdown

    todo project show <name>
    
  • project edit - Edit project properties

    todo 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 project

    todo project unarchive <name>
    
  • project delete - Delete a project (tasks become unassigned)

    todo project delete <name>
    

Time Tracking Commands

  • start - Start time tracking on a task

    todo start <id>
    
  • stop - Stop time tracking

    todo stop [<id>]
    
  • active - Show currently tracking task

    todo active
    

Reporting & Export

  • report - Generate time reports

    todo report daily [--date DATE]
    todo report weekly [--date DATE]
    todo report project [PROJECT_NAME]
    
  • export - Export todos to various formats

    todo export <format> [output_file] [--project PROJECT] [--include-done]
    

    Supported formats: json, csv, md/markdown

Other Commands

  • stats - Show overall statistics

    todo stats
    
  • interactive - Launch interactive mode (TUI)

    todo interactive
    
  • config - View or modify configuration

    todo config show
    todo config set <key> <value>
    todo config path
    
  • version - Show version information

    todo 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 - l for list, d for 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

  1. Start - Begin a new cycle with a name and duration
  2. Check-in - Record daily progress and notes
  3. Complete - End the cycle and generate summary
  4. 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 (--tree flag)
  • โœ… 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 --tree flag
    • Parent-child task dependencies
    • Subtask progress indicators

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 --project flag
  • 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

agile_todo_cli-1.2.0.tar.gz (2.3 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

agile_todo_cli-1.2.0-py3-none-any.whl (72.6 kB view details)

Uploaded Python 3

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

Hashes for agile_todo_cli-1.2.0.tar.gz
Algorithm Hash digest
SHA256 9d9659ab5d476d5d63e366a66de49be3b012983ba07236396bde542648447af1
MD5 cc96aa5ac6f6533c875261731b463a22
BLAKE2b-256 4ec2c86700930fd1f4a24a8ac0852b4f84fc6aa3ac1d60de27fd845e08fbe445

See more details on using hashes here.

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

Hashes for agile_todo_cli-1.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4edde9d50580ccb3c554c70496b290938ce5984a0f043891bd78ee71b7ab032f
MD5 1f136af919928333bc9f85a489f83fb9
BLAKE2b-256 088cafa3f586c78bf4c7731befa2c1874904645c58965b1299a462526a271c8a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page