| Crates.io | todo-tui-rs |
| lib.rs | todo-tui-rs |
| version | 0.1.3 |
| created_at | 2025-12-19 16:14:14.088122+00 |
| updated_at | 2026-01-20 17:33:38.533013+00 |
| description | A terminal-based Todo application built with Rust and TUI |
| homepage | |
| repository | https://github.com/ravindran-dev/todo-tui |
| max_upload_size | |
| id | 1995062 |
| size | 63,312 |
A terminal-based Todo application built using Rust and TUI, designed to be fast, safe, and keyboard-driven. This project demonstrates real-world Rust concepts such as state management, terminal UI rendering, and persistent storage.
View all todo tasks in a clean terminal UI
Add todos with custom descriptions
Mark todos as completed / not completed
Delete selected todos
Persistent storage using JSON (auto-saved)
Fully keyboard-driven interface
Memory-safe and performant Rust code
┌──────────────────────── Todo List ────────────────────────┐
│ >> [ ] Learn Rust TUI │
│ [ ] Finish assignment |
│ [ ] Push project to GitHub |
| |
| |
| |
| |
| |
│ |
└───────────────────────────────────────────────────────────┘
┌────────────────────────────────────────────────────────────┐
│ Add Todo (Enter = save, Esc = cancel) │
└────────────────────────────────────────────────────────────┘
| Key | Action |
|---|---|
a |
Add a new todo |
Enter |
Save todo (input mode) |
Esc |
Cancel input |
↑ / ↓ |
Navigate todos |
Space |
Toggle complete |
d |
Delete selected todo |
q |
Quit application |
todo-tui/
├── src/
│ ├── main.rs # App entry point & event loop
│ ├── app.rs # Application state & logic
│ ├── ui.rs # Terminal UI rendering
│ └── storage.rs # Load / save todos (JSON)
├── Cargo.toml
├── .gitignore
└── README.md
Check installation:
rustc --version
cargo --version
cargo install todo-tui-rs
or
git clone https://github.com/ravindran-dev/todo-tui.git
cd todo-tui
cargo run
The app will launch directly inside your terminal.
Todos are automatically saved to a local todos.json file
The file is ignored in Git (.gitignore)
On restart, todos are restored automatically
Rust – core language
tui – terminal UI rendering
crossterm – keyboard & terminal handling
serde / serde_json – serialization
uuid – unique todo identifiers
Rust ownership & borrowing
State-driven UI design
Event-based input handling
Terminal cursor control
Modular Rust project structure
Inline Todo Editing - Edit existing tasks directly within the terminal.
Priority System with Auto-Sorting - Assign High, Medium, or Low priority to tasks, which automatically reorder based on importance.
Search & Filter Mode - Quickly find tasks using a live, keyword-based search.
Theme Toggle - Switch between a neon-themed UI and a minimal theme at runtime.
Delete Confirmation Popup - Prevent accidental deletions with a confirmation dialog.
Improved Help Popup - Clean, well-structured keybindings guide for better usability.
Contributions, issues, and feature requests are welcome.
This project is open-source and available under the MIT License.
Built as a hands-on Rust learning project focusing on systems programming, UI design, and clean architecture.
If you like this project, consider giving it a ⭐ on GitHub!
Developer • ML Enthusiast • Neovim Customizer • Linux Power User
Hi! I'm Ravindran S, an engineering student passionate about:
Linux & System Engineering
AIML (Artificial Intelligence & Machine Learning)
Full-stack Web Development
Hackathon-grade project development
You can reach me here: