A command-line todo application that stores tasks in memory, enabling users to manage tasks efficiently without boilerplate coding. This is Phase I of a hackathon project evolving from CLI to distributed cloud-native AI systems.
- Add tasks with title and optional description
- View all tasks with ID, title, description, and status (complete/incomplete)
- View individual task details by ID
- Update task title and/or description
- Delete tasks by ID with validation
- Mark tasks as complete or incomplete
- Help command listing all available options
- Clear, user-friendly error messages for invalid inputs
Run the application without any arguments to start the interactive menu:
todo-cliThis will present a menu with options to:
- Add a new task
- View all tasks
- View a specific task
- Update a task
- Delete a task
- Mark task as complete
- Mark task as incomplete
- Exit the application
todo-cli add "Task Title" "Optional Description"- Creates a new task with a unique ID
- Title is required, description is optional
- New task status defaults to "incomplete"
todo-cli view- Displays all tasks with ID, title, description, and status indicator
todo-cli view <id>- Displays details of a single task by ID
todo-cli update <id> "New Title" "New Description"- Updates the title and/or description of an existing task
- Both title and description are optional, but at least one must be provided
todo-cli delete <id>- Permanently removes a task by ID
todo-cli complete <id>- Sets the status of the task to "complete"
todo-cli incomplete <id>- Sets the status of the task back to "incomplete"
todo-cli help- Displays all available commands with usage examples
-
Clone or navigate to the project directory
-
Install the package in development mode:
pip install -e . -
Run the application using the console script:
todo-cli
Alternatively, you can run the application directly without installing:
python -m todo_cli_app.cli.main# Add a new task
python -m src.cli.main add "Buy groceries" "Milk, eggs, bread"
# View all tasks
python -m src.cli.main view
# Mark task #1 as complete
python -m src.cli.main complete 1
# Update task #1
python -m src.cli.main update 1 "Buy groceries - done" "Milk, eggs, bread - bought"
# Delete task #1
python -m src.cli.main delete 1The application follows a clean architecture pattern with separation of concerns:
src/models/- Data models (Task)src/services/- Business logic (TodoService)src/cli/- Command-line interfacesrc/lib/- Utilities and shared componentstests/- Unit and integration tests
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes
- Run tests (
pytest) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request