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
pip install -e .

# 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

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
  • โš™๏ธ Configurable - Customize priorities, date formats, colors, and more
  • ๐Ÿš€ Performance - Optimized database queries with comprehensive indexing
  • ๐Ÿงช Well-Tested - 87% test coverage with 313+ tests

Installation

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.

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
โ”‚   โ”œโ”€โ”€ 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 (313+ tests, 87% 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 (Planned)

  • Hierarchical task relationships
  • Tree view for task lists
  • Parent-child task dependencies
  • Nested time tracking

Epic 3: KANBAN Board (Planned)

  • Visual board view (Todo/Doing/Done columns)
  • Drag-and-drop task movement (TUI)
  • Column customization
  • Workflow automation

Epic 4: Cycles & Sprints (Planned)

  • Sprint/iteration management
  • Cycle-based task organization
  • Sprint planning and retrospectives
  • Burndown charts

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-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.1.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.1.0-py3-none-any.whl (53.9 kB view details)

Uploaded Python 3

File details

Details for the file agile_todo_cli-1.1.0.tar.gz.

File metadata

  • Download URL: agile_todo_cli-1.1.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.1.0.tar.gz
Algorithm Hash digest
SHA256 acaa3208a5012fc60249ec24d7456912ef99babf444f4b817befafc115cff224
MD5 a7ca30672fe9a8f9da66d284fd716b60
BLAKE2b-256 14c4560fda5fca11feaeb0f89a3aec8aab00d5b3a2aa558e961251ea4a7d293f

See more details on using hashes here.

File details

Details for the file agile_todo_cli-1.1.0-py3-none-any.whl.

File metadata

  • Download URL: agile_todo_cli-1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 53.9 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.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6cb6e040143d1996dff021d06b00de997172499a0a773200baa94c0df1e6e034
MD5 1adbe639be8e2ea69f142b7d9b7df977
BLAKE2b-256 2a9f5f71ad770f78ffa6a37f5f547ad1c42490e87bc08ad31fca8f01483009e8

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