Skip to main content

A beautiful, interactive terminal todo application with TUI and CLI interfaces

Project description

Toony 2do - Modern Terminal Todo Application

A beautiful, interactive command-line todo application built with Python, featuring both a Text User Interface (TUI) and traditional CLI commands.

Features

  • Interactive TUI - Full-featured text-based user interface with keyboard navigation
  • CLI Commands - Quick task management from the command line
  • ASCII Art Banner - Beautiful pyfiglet-powered "Toony 2do" branding
  • Rich Formatting - Colorful output with rich tables and formatting
  • Keyboard Shortcuts - Efficient navigation and task management
  • Task Statistics - Real-time progress tracking

Installation

From PyPI

pip install toony-2do

From Source

git clone <repository-url>
cd phase-1-cli
pip install -e .

Usage

Interactive TUI Mode

Launch the full interactive interface:

toony-2do ui
# or simply
toony-2do

Keyboard Shortcuts:

  • a - Add new task
  • e - Edit selected task
  • d - Delete selected task
  • space - Toggle task completion
  • q - Quit application
  • Arrow keys - Navigate tasks

CLI Commands

Quick task management from the command line:

# Add a new task
toony-2do add "Buy groceries" --desc "Milk, eggs, bread"
todo add "Call doctor"

# List all tasks
toony-2do list
todo list --pending    # Show only pending tasks
todo list --completed  # Show only completed tasks

# Mark task as complete
toony-2do complete 1

# Delete a task
toony-2do delete 2 --yes  # Skip confirmation

# Show statistics
toony-2do stats

Features in Detail

Text User Interface (TUI)

The TUI provides a rich, interactive experience with:

  • ASCII Art Header - Eye-catching "Toony 2do" banner
  • Live Statistics Panel - Shows total, pending, completed tasks and progress percentage
  • Data Table - Clean display of all tasks with status indicators
  • Modal Dialogs - User-friendly forms for adding and editing tasks
  • Confirmation Dialogs - Safe deletion with confirmation prompts

CLI Interface

Fast command-line operations for:

  • Quick task addition without launching the TUI
  • Listing tasks with filtering options
  • Batch operations and scripting support
  • Integration with shell scripts and automation

Task Management

  • Task Properties: ID, title, description, completion status, creation timestamp
  • Validation: Prevents empty task titles
  • Statistics: Automatic calculation of totals, pending, completed, and progress percentage

Technology Stack

  • Textual - Modern TUI framework for rich terminal interfaces
  • Typer - Beautiful CLI with automatic help generation
  • Rich - Rich text and beautiful formatting in the terminal
  • Pyfiglet - ASCII art text generation
  • Pydantic - Data validation and settings management

Architecture

The application follows clean architecture principles:

  • Data Models - Business logic decoupled from UI (Task, TaskManager)
  • UI Components - Reusable screens and dialogs (AddTaskScreen, EditTaskScreen, ConfirmDialog)
  • CLI Commands - Separate Typer commands for command-line operations
  • Main Application - Textual app with reactive UI updates

Development

Setup Development Environment

# Clone the repository
git clone <repository-url>
cd phase-1-cli

# Install dependencies with uv (recommended)
uv sync

# Or with pip
pip install -e ".[dev]"

Project Structure

phase-1-cli/
├── src/
│   └── phase_1_cli/
│       └── main.py          # Main application code
├── pyproject.toml           # Project configuration
└── README.md                # This file

Requirements

  • Python >= 3.11
  • Dependencies:
    • pydantic >= 2.12.5
    • pyfiglet >= 1.0.2
    • rich >= 14.2.0
    • textual >= 6.11.0
    • typer >= 0.15.1

License

This project is licensed under the MIT License.

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

Author

Marjan Ahmed

Changelog

Version 0.1.0 (Initial Release)

  • Interactive TUI with full keyboard navigation
  • CLI commands for quick task management
  • ASCII art banners with pyfiglet
  • Rich table formatting for task lists
  • Task statistics and progress tracking
  • Add, edit, delete, and toggle tasks
  • Confirmation dialogs for destructive actions
  • Demo tasks for first-time users

Roadmap

Future enhancements planned:

  • Task persistence (JSON/SQLite storage)
  • Task priorities and categories
  • Due dates and reminders
  • Search and filter functionality
  • Export tasks to various formats
  • Task notes and attachments
  • Multi-user support
  • Configuration file support
  • Themes and customization

Support

For bug reports and feature requests, please use the GitHub issue tracker.


Made with Python and love for the terminal.

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

toony_2do-0.1.0.tar.gz (8.5 kB view details)

Uploaded Source

Built Distribution

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

toony_2do-0.1.0-py3-none-any.whl (8.2 kB view details)

Uploaded Python 3

File details

Details for the file toony_2do-0.1.0.tar.gz.

File metadata

  • Download URL: toony_2do-0.1.0.tar.gz
  • Upload date:
  • Size: 8.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.2

File hashes

Hashes for toony_2do-0.1.0.tar.gz
Algorithm Hash digest
SHA256 95b8e9172306052e1f95a69238372caeff3d9314927c56af9a0c591fbb57cbc0
MD5 83daed6d9589b4e119b1f282a462bd15
BLAKE2b-256 5b6c0d01765b3af120ca64a20dba089ff374f182d2ea3c576a25ea0f1b24232a

See more details on using hashes here.

File details

Details for the file toony_2do-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: toony_2do-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 8.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.2

File hashes

Hashes for toony_2do-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 96fe23dd78a134a179f82e8196ef134898e51e5f47b6a7600afdad73b6cd8c71
MD5 7c8d8a79c899e00366ec82461b35721c
BLAKE2b-256 85b4c58f7476f9627de2ea19759a5c8c4561260f83673a6156b80cd87bb2c787

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