todo-tui-rs

Crates.iotodo-tui-rs
lib.rstodo-tui-rs
version0.1.3
created_at2025-12-19 16:14:14.088122+00
updated_at2026-01-20 17:33:38.533013+00
descriptionA terminal-based Todo application built with Rust and TUI
homepage
repositoryhttps://github.com/ravindran-dev/todo-tui
max_upload_size
id1995062
size63,312
RAVINDRAN S (ravindran-dev)

documentation

README

Crates.io Downloads

Todo TUI

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.

Features

  • 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

Demo

┌──────────────────────── Todo List ────────────────────────┐
│ >> [ ] Learn Rust TUI                                     │
│    [ ] Finish assignment                                  |
│    [ ] Push project to GitHub                             |
|                                                           |
|                                                           |
|                                                           |
|                                                           |
|                                                           |
│                                                           |
└───────────────────────────────────────────────────────────┘
┌────────────────────────────────────────────────────────────┐
│ Add Todo (Enter = save, Esc = cancel)                      │
└────────────────────────────────────────────────────────────┘

Key Bindings

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

Project Structure

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

Getting Started

1️ Prerequisites

  • Rust (stable)
  • Cargo

Check installation:

rustc --version
cargo --version

2️ Installation

cargo install todo-tui-rs

or

2️ Clone the Repository

git clone https://github.com/ravindran-dev/todo-tui.git
cd todo-tui

3️ Run the Application

cargo run

The app will launch directly inside your terminal.

Data Persistence

  • Todos are automatically saved to a local todos.json file

  • The file is ignored in Git (.gitignore)

  • On restart, todos are restored automatically

Tech Stack

  • Rust – core language

  • tui – terminal UI rendering

  • crossterm – keyboard & terminal handling

  • serde / serde_json – serialization

  • uuid – unique todo identifiers

Concepts Demonstrated

  • Rust ownership & borrowing

  • State-driven UI design

  • Event-based input handling

  • Terminal cursor control

  • Modular Rust project structure

Additional features added

  • 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.

Contributing

Contributions, issues, and feature requests are welcome.

  1. Fork the repo
  2. Create a feature branch
  3. Commit changes
  4. Open a pull request

Screenshot

image

License

This project is open-source and available under the MIT License.

Acknowledgements

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!

Author - Ravindran S

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

🔗 Connect With Me

You can reach me here:

Socials

Contact

Commit count: 16

cargo fmt