A Rust terminal app for managing tasks and quick journal notes without leaving the keyboard. It uses ratatui for the interface, crossterm for terminal input, and JSON files for local persistence.
- Keyboard-first task management in a clean terminal UI.
- Task classes for grouping work by context, project, or course.
- Priority levels: high, mid, and low.
- Completed and canceled task states.
- Optional completed-task visibility toggle.
- Journal tab for short dated notes.
- Local JSON storage under the XDG data directory.
| Key | Action |
|---|---|
j / Down |
Move selection down |
k / Up |
Move selection up |
Tab |
Switch task panels |
a |
Add a task or journal entry |
Space |
Mark selected task done |
c |
Toggle selected task canceled |
s |
Change selected task priority |
h |
Show or hide completed tasks |
e |
Edit selected journal entry |
d |
Delete selected task or journal entry |
r |
Reload data from disk |
q |
Quit |
When adding a task, use Tab to switch fields, h / m / l for priority, Enter to continue or save, and Esc to cancel.
When adding or editing a journal entry, use Tab to switch between title and body, Ctrl+S to save, and Esc to cancel.
Runtime data is stored in:
$XDG_DATA_HOME/todo/tasks.json$XDG_DATA_HOME/todo/journal.json
If XDG_DATA_HOME is not set, the app falls back to ~/.local/share/todo/.
cargo check
cargo fmt
cargo test