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
- Rust (stable)
- Cargo
Check installation:
rustc --version
cargo --versioncargo install todo-tui-rsor
git clone https://github.com/ravindran-dev/todo-tui.git
cd todo-tuicargo runThe app will launch directly inside your terminal.
- Todos are automatically saved to a local
todos.jsonfile - 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.
- Fork the repo
- Create a feature branch
- Commit changes
- Open a pull request
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: