DEV Community

Cover image for Rudo. Building Terminal UI with Rust
Gleb Irovich
Gleb Irovich

Posted on

Rudo. Building Terminal UI with Rust

Hey there, in today's post I would like to introduce you to my new pet project - Rudo. Rudo stands for "Rust To-do" and is a small terminal application that manages a list of to-dos.

Foreword

Back in 2020, locked down in isolation with my laptop and a thirst for a challenge, I decided to try out Rust. There are many reasons why I decided to give it a try, but the main one is, probably, the desire to push me out of the comfort zone.

Unlike programming languages which I know, Rust shifts a lot of control over low-level API to the programmer. All those tiny goodies that were perceived as given are now your own responsibility. It's painful... and it's exciting.

Firstly, I struggled. I fought with the compile for every line of code. I read awesome Rust's documentation again and again. I left it and started anew. And one day I realized that I love it. I loved how explicit the language was.

And that's how I programmed Rudo.

Motivation

Every new programming language starts with "Hello world".
Every front-end framework starts with a to-do app.

Why should I break these rules? ๐Ÿ˜„
As a front-end developer, I like visually observing my code in action. Wouldn't it be great to create a terminal UI then? I challenged myself to build an application using a terminal as a platform. How would UX for such an application be like? How would you navigate between application states? What would be the indicators and controls?
That's how Rudo was born.

Meet Rudo

Rudo GIF

Rudo is a simple to-do list manager. It's built with rs-tui and offers a clean and minimalistic layout to get things done. Keyboard-only input attempts to keep Rudo in line with your usual development workflow.
It's capable of doing a few things:

  1. Creating and editing tasks ๐Ÿ’ƒ
  2. Removing tasks from the list โŒ
  3. Toggling task state โœ…
  4. Filtering tasks ๐Ÿ„โ€โ™‚๏ธ
  5. Sorting tasks by date ๐Ÿฆพ
  6. Persisting tasks in a .json file ๐Ÿ“€

Conclusion

Rudo is essentially an experiment. It's a prototype with some harsh edges, but made with โค๏ธ and fun ๐Ÿ˜Ž. Nonetheless, I am committed to continue improving Rudo and I am desperate to hear your feedback.
It's straightforward to use - download binaries, and you are good to go!
You can find everything in the README.

Please do not hesitate to express your opinion. You can reach me here on DEV.to or on Twitter.

Top comments (1)

Collapse
 
extrawurst profile image
Stephan Dilly

nice work!๐Ÿ‘