Enhanced CLI-based todo application with rich visual formatting and advanced sorting capabilities
Project description
evolved-todo
An enhanced CLI-based todo application with rich visual formatting, built using spec-first, AI-driven development principles.
Features
- ✅ Add Tasks: Create tasks with title and optional description
- ✅ View Tasks: Display all tasks in styled table with color-coded status
- ✅ Update Tasks: Modify task title and/or description
- ✅ Delete Tasks: Permanently remove tasks from the list
- ✅ Toggle Status: Mark tasks as complete or incomplete
Enhanced UI Features (v1.5)
- 🎨 Color-Coded Status: Green ✓ for complete tasks, yellow ⏳ for incomplete
- 📊 Styled Tables: Aligned columns (ID, Status, Title, Description) with proper spacing
- ✅ Success Messages: Green [OK] prefix for successful operations
- ❌ Error Messages: Red [ERROR] prefix for failures and validation errors
- ℹ️ Info Messages: Blue [INFO] for neutral feedback (e.g., "No tasks found")
- 🎯 Styled Menu: Professional header panel with cyan-colored options
- ⌨️ Styled Prompts: Cyan-colored input prompts with validation
- 🔄 Cross-Platform: Works on Windows, macOS, Linux with automatic fallback to ASCII if needed
Installation
From PyPI (Recommended)
Simply install using pip:
pip install evolved-todo
Then run from anywhere:
evolved-todo
From Source
If you want to install from source:
# Clone the repository
git clone https://github.com/aliaskari/evolved-todo.git
cd evolved-todo
# Install with pip
pip install .
# Or install in development mode
pip install -e .
Usage
Once the application starts, you'll see a menu with 6 options:
==============================
Todo List Manager
==============================
1. Add Task
2. View Tasks
3. Update Task
4. Delete Task
5. Toggle Task Status
6. Exit
==============================
Example Workflow
# 1. Add a task
Select option (1-6): 1
Enter task title: Buy groceries
Enter task description (optional): Milk, eggs, bread
✓ Success! Task 1 created: Buy groceries
# 2. View all tasks
Select option (1-6): 2
--- All Tasks ---
[ ] Task 1: Buy groceries
Description: Milk, eggs, bread
# 3. Mark task as complete
Select option (1-6): 5
Enter task ID to toggle: 1
✓ Success! Task 1 marked as complete
[✓] Buy groceries
# 4. Update task
Select option (1-6): 3
Enter task ID to update: 1
Leave blank and press Enter to keep current value:
New title: Buy groceries and snacks
New description:
✓ Success! Task 1 updated
Title: Buy groceries and snacks
Description: Milk, eggs, bread
# 5. Delete task
Select option (1-6): 4
Enter task ID to delete: 1
✓ Success! Task 1 deleted
# 6. Exit
Select option (1-6): 6
==============================
Exiting... Goodbye!
==============================
Project Structure
.
├── src/
│ ├── __init__.py # Package initialization
│ ├── models.py # Task dataclass
│ ├── todo_manager.py # Business logic (CRUD operations)
│ └── main.py # CLI interface
├── tests/
│ └── manual_test_checklist.md # Manual testing scenarios
├── specs/
│ └── 001-todo-cli-app/ # Feature specifications and design docs
├── pyproject.toml # Project configuration
├── CLAUDE.md # Claude Code prompt history
└── README.md # This file
Key Components
models.py: Defines theTaskdataclass with id, title, description, and status fieldstodo_manager.py: ImplementsTodoManagerclass with in-memory storage usingdict[int, Task]main.py: Provides CLI interface with menu-driven navigation and user input handling
Development
Code Quality
The project follows strict quality standards:
- PEP 8 compliant: All code follows Python style guidelines
- Type hints: Full type annotations on all functions
- Docstrings: Google-style docstrings for all classes and functions
- Linting: Passes
ruffchecks with zero errors
# Run linting
ruff check src/
# Auto-fix issues
ruff check --fix src/
Testing
Manual testing checklist available at tests/manual_test_checklist.md with 15 test scenarios covering all 5 user stories.
Design Principles
This project follows the Project Constitution principles:
- ✅ Spec-First Development: Complete specification before implementation
- ✅ AI-Driven Architecture: All code generated via Claude Code
- ✅ Iterative Evolution: Phase I (CLI) → Phase II (Persistence) → Phase III+ (Web/Distributed)
- ✅ Product Thinking: User-focused design with clear value priorities
- ✅ Process Documentation: Full traceability via specs, plans, and prompt history
- ✅ Quality Gates: PEP 8 compliance, type hints, manual testing
Technical Details
- Language: Python 3.13+
- Dependencies: Python standard library only (no external packages)
- Storage: In-memory using
dict[int, Task](data lost on exit per Phase I design) - ID Generation: Sequential integers starting from 1
- Status Representation: Boolean (False = incomplete, True = complete)
- Error Handling: Custom exceptions (
TaskNotFoundError,InvalidInputError)
Constraints & Limitations
Phase I Scope (by design):
- ❌ No persistence (tasks lost when app closes)
- ❌ No advanced features (priorities, tags, search, filters)
- ❌ No web interface or API
- ❌ No multi-user support
- ❌ Single session only (up to 100 tasks recommended)
Future Phases:
- Phase II: File-based persistence (JSON/SQLite)
- Phase III: REST API and web frontend
- Phase IV: Distributed features (sync, collaboration)
- Phase V: AI integration and cloud-native deployment
Documentation
- Specification: Feature requirements and acceptance criteria
- Implementation Plan: Architecture and technical decisions
- Data Model: Entity design and validation rules
- Task Breakdown: 60-task implementation plan
- Claude Code Prompts: AI-driven development history
- Constitution: Project principles and governance
Troubleshooting
Common Issues
Issue: ModuleNotFoundError: No module named 'src'
Solution: Run from project root directory, not from src/ subdirectory
Issue: python: command not found
Solution: Use python3 or python3.13 if you have multiple Python versions
Issue: Ruff not found
Solution: Install ruff with pip install ruff or uv pip install ruff
Issue: Application doesn't respond to input Solution: Ensure you're running in an interactive terminal, not a non-interactive shell
Contributing
This is an educational project following spec-driven development. To contribute:
- Read the Project Constitution
- Follow the spec → plan → tasks → implement workflow
- Document all Claude Code prompts in CLAUDE.md
- Ensure code passes
ruff checkwith zero errors - Test against all 15 manual test scenarios
License
Educational project - see repository license for details.
Acknowledgments
Built using:
- Claude Code: AI-driven development agent
- Spec-Kit Plus: Specification management framework
- UV: Modern Python package manager
Version: 1.0.0 (Phase I Complete)
Last Updated: 2025-12-29
Branch: 001-todo-cli-app
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 evolved_todo-2.5.0.tar.gz.
File metadata
- Download URL: evolved_todo-2.5.0.tar.gz
- Upload date:
- Size: 43.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8727781dc9ecf8b30de77fa1c01b50edb5b660e137f9ac3dd3eefab9e1a86dba
|
|
| MD5 |
d068e5ae47d3e85652fd9ee9b2433b55
|
|
| BLAKE2b-256 |
564cf900ee0b6f584c811597a9069ece9d4a27543a312649576ba351a4cddc9c
|
File details
Details for the file evolved_todo-2.5.0-py3-none-any.whl.
File metadata
- Download URL: evolved_todo-2.5.0-py3-none-any.whl
- Upload date:
- Size: 30.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f5009e5d39ef75029f1c3545fe845048127a42be22306d3cc6d7212556ac7c55
|
|
| MD5 |
83ad673622f3392acd84174f73b1a710
|
|
| BLAKE2b-256 |
d432d26d96eac4463d35a3834249b1d924d549ac86d890e6b5101f46e4c4ff63
|