Skip to main content

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

Project description

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 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 phase-1-cli

From Source

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

Usage

Interactive TUI Mode

Launch the full interactive interface:

phase-1-cli ui
# or simply
phase-1-cli

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
phase-1-cli add "Buy groceries" --desc "Milk, eggs, bread"
todo add "Call doctor"

# List all tasks
phase-1-cli list
todo list --pending    # Show only pending tasks
todo list --completed  # Show only completed tasks

# Mark task as complete
phase-1-cli complete 1

# Delete a task
phase-1-cli delete 2 --yes  # Skip confirmation

# Show statistics
phase-1-cli stats

Features in Detail

Text User Interface (TUI)

The TUI provides a rich, interactive experience with:

  • ASCII Art Header - Eye-catching "TODO APP" 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

phase_1_cli-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.

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

Uploaded Python 3

File details

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

File metadata

  • Download URL: phase_1_cli-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 phase_1_cli-0.1.0.tar.gz
Algorithm Hash digest
SHA256 dc49954a9b1d4d83c9e8919091bde020aa6edd08ff87672498ced453fefad965
MD5 4ff6d5e27326e67ac4d518ce15fb3256
BLAKE2b-256 36ab4eed1004148dd5c8269b805b89817ea64b96ae7fc5157376fcb9dd360e73

See more details on using hashes here.

File details

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

File metadata

  • Download URL: phase_1_cli-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 phase_1_cli-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 03996fb003be83f8857e9f7c1071b05f5e24446d94f85296bb6cdb120b9a3bff
MD5 d61493dc96af3d5777a9a04a50a554ba
BLAKE2b-256 21b6580e454ddebbc521f70705b9c347a2d0debf327a0eed556cb15013da21bb

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