| Crates.io | todoscope |
| lib.rs | todoscope |
| version | 0.1.0 |
| created_at | 2025-09-17 11:28:36.073325+00 |
| updated_at | 2025-09-17 11:28:36.073325+00 |
| description | A simple CLI todo list manager |
| homepage | |
| repository | https://github.com/leocm889/todo_list.git |
| max_upload_size | |
| id | 1843119 |
| size | 108,245 |
A simple "Todo List Manager" written in Rust. Supports both an interactive menu and a command-line interface (CLI).
todos.json)--menu) for guided usetodo notify)Clone the repository and install the binary locally:
git clone https://github.com/leocm889/todo_list.git
cd todo_list
cargo install --path .
This will install the binary to ~/.cargo/bin/todo.
Make sure ~/.cargo/bin is in your $PATH.
Launch the program with a text-based menu:
todo --menu
# or while developing
cargo run -- --menu
You'll see options like:
1. Add a Task
2. View Tasks
3. Search Tasks
4. Update Tasks
5. Delete Tasks
6. Exit Program
Use direct commands without the menu:
Add a todo
# Flags for add:
# -t/--title (required), -d/--description, -p/--priority, -s/--status,
# -D/--due-date (YYYY-MM-DD), -r/--recurrence, -g/--tags, -P/--parent-id, -u/--subtasks
todo add -t "Buy milk" -d "From the store" -p high -s pending -D 2025-09-20 -g groceries,errands
View todos
# --sort-by created|priority|status|due-date|overdue (default: created)
todo list --sort-by due-date
Search by title
todo search --title "milk"
Search by ID
todo search --id <UUID>
Search by priority
todo search --priority high
Search by status
todo search --status done
Search by due date
todo search --due-date 2025-09-20
Search by tags (comma separated)
todo search --tags work,urgent
Update a todo
# Update uses flags like add, but all are optional except --id
todo update --id <UUID> -t "Buy bread" -s in_progress -D 2025-09-21
Delete a todo
todo delete --id <UUID>
Send desktop notifications
# Shows notifications for tasks due now or overdue
todo notify
Notes:
src/
├── main.rs # CLI entry point (clap) and command dispatch, handles --menu
├── lib.rs # Library exports and helpers used by tests
├── cli.rs # Clap command definitions
├── input.rs # DTOs for CLI to core (Add/Update/Search input structs)
├── menu.rs # Interactive menu UI (stdin-driven)
├── todo.rs # Todo model + Display + interactive helpers
├── todo_cli.rs # Non-interactive CLI handlers (add/list/search/update/delete)
├── storage.rs # JSON persistence (load/save)
├── notify.rs # Desktop notifications for due/overdue tasks
├── priority.rs # Priority enum + Display
├── status.rs # Status enum + Display
├── recurrence.rs # Recurrence enum + Display/FromStr (Daily/Weekly/Custom)
├── utils.rs # Input helpers
└── tests/ # Integration tests
{
"b5a9a9c2-6f5a-4b2e-91e1-8e44c0d6c123": {
"id": "b5a9a9c2-6f5a-4b2e-91e1-8e44c0d6c123",
"title": "Buy milk",
"description": "From the supermarket",
"priority": "High",
"status": "Pending",
"created_at": "2025-09-04T12:34:56",
"due_date": "2025-09-20T00:00:00Z",
"tags": ["groceries", "errands"],
"recurrence": null,
"parent_id": null,
"subtasks": []
},
"e1c2a3f4-1d2e-4c5b-8f6a-7d8c9b0e1234": {
"id": "e1c2a3f4-1d2e-4c5b-8f6a-7d8c9b0e1234",
"title": "Finish Rust project",
"description": "Work on todo-cli",
"priority": "Medium",
"status": "InProgress",
"created_at": "2025-09-04T13:10:42"
}
}