A simple to-do list manager written in Rust

Overview

crates.io GitHub maintenance contributors

A simple To-Do list manager written in Rust

I wrote this project while I'm learning Rust for practice.

I decided to put this project online so that others, like me, who are learning Rust can take some ideas and help me improve this code too.

Feel free to open a pull request to improve the code, add new features, and help me learn Rust.

Features

  • List todos
  • Add todos
  • Remove todos
  • Update todos
  • Set Priority
  • Status Done/Undone
  • Sort by priority and status
  • Import from CSV/JSON
  • Export to CSV/JSON

Screenshots

Installation

Install rtodo with cargo

cargo install rtodo

Install rtodo on ArchLinux

yay -S rtodo-bin

Run Locally

Clone the project

  git clone https://github.com/TiagoRCorreia/rtodo.git

Go to the project directory

  cd rtodo

Build project

  cargo build --release

Run the program

  cargo run

Roadmap

  • Better error handling
  • Code improvement

Feedback

If you have any feedback, please reach out to me at [email protected]

Contributing

Contributions are always welcome!

See contributing for ways to get started.

Please adhere to this project's code of conduct.

License

MIT

Comments
  • Add persistence storage

    Add persistence storage

    Added persistence storage.

    When the user exit the program todos will be saved into a file called db.json on directory ~/.config/rtodo in Linux systems. I don't have Windows or Mac for testing.

    When the user starts the program it will try to load all todos from the file if not possible starts with an empty vector.

    Used creates:

    @cndofx what do you think about that?

    enhancement 
    opened by TiagoRCorreia 2
  • Cleanup and refactor code

    Cleanup and refactor code

    Mostly simple changes for readability. I moved most of the code in main.rs into a new lib.rs file, and made a couple other minor changes like rewriting some comments for consistency and removing bits of unnecessary whitespace between blocks.

    Let me know if you disagree with any of the changes I made here and I can adjust them.

    opened by cndofx 1
  • Added define priority feature

    Added define priority feature

    Added Define priority feature.

    This pull request adds the ability to set the priority of the todos with three levels:

    • Low
    • Medium
    • High

    All todos, when created, receive de Low level by default.

    enhancement 
    opened by TiagoRCorreia 0
  • Ctrlc handler

    Ctrlc handler

    Prevents user exits without saving the todos accidentally.

    The user press CTRL+C will be handled and asks the user if he wants to exit or continue. If the user wants to leave the program todos will be saved to the file.

    Used crates:

    enhancement 
    opened by TiagoRCorreia 0
  • What kinds of contributions are you looking for?

    What kinds of contributions are you looking for?

    I'm interested in doing something but I'd like more clarification on what you want first. I see opportunities for small things like simple cleanup and refactoring, but also some larger changes like implementing better error handling with crates like thiserror and/or anyhow, or cleaner user input with rustyline. I also see your milestones for persistent storage and command line arguments, are those things you want to implement yourself or would PRs be welcome there too?

    note: I'm pretty new to open source contributions like these, but I am pretty familiar with rust so this seems like a good opportunity for me to learn something too. Thanks!

    opened by cndofx 3
Releases(v0.1.4)
  • v0.1.4(Jan 5, 2023)

  • v0.1.3(Dec 30, 2022)

    What's Changed

    • Added done and undone features by @TiagoRCorreia in https://github.com/TiagoRCorreia/rtodo/pull/6
    • Added define priority feature by @TiagoRCorreia in https://github.com/TiagoRCorreia/rtodo/pull/7
    • Add a creation time feature by @TiagoRCorreia in https://github.com/TiagoRCorreia/rtodo/pull/8
    • Added sort functions by @TiagoRCorreia in https://github.com/TiagoRCorreia/rtodo/pull/9
    • fix layout by @TiagoRCorreia in https://github.com/TiagoRCorreia/rtodo/pull/10

    Full Changelog: https://github.com/TiagoRCorreia/rtodo/compare/v0.1.2...v0.1.3

    Source code(tar.gz)
    Source code(zip)
    rtodo.gz(1.29 MB)
  • v0.1.2(Dec 29, 2022)

    What's Changed

    • Cleanup and refactor code by @cndofx in https://github.com/TiagoRCorreia/rtodo/pull/2
    • Add persistence storage by @TiagoRCorreia in https://github.com/TiagoRCorreia/rtodo/pull/3
    • Ctrlc handler by @TiagoRCorreia in https://github.com/TiagoRCorreia/rtodo/pull/4
    • Added command line arguments by @TiagoRCorreia in https://github.com/TiagoRCorreia/rtodo/pull/5

    New Contributors

    • @cndofx made their first contribution in https://github.com/TiagoRCorreia/rtodo/pull/2
    • @TiagoRCorreia made their first contribution in https://github.com/TiagoRCorreia/rtodo/pull/3

    Full Changelog: https://github.com/TiagoRCorreia/rtodo/compare/v0.1.1...v0.1.2

    Source code(tar.gz)
    Source code(zip)
    rtodo.gz(1.26 MB)
Owner
Tiago Correia
It's just a hobby
Tiago Correia
SA-MP client server list fix but written in Rust

Server List Fix This is a samp client server list fix, which reroutes the client's request to list.sa-mp.com to sam.markski.ar. The idea is originally

__SyS__ 4 Feb 4, 2024
Simple cli clipboard manager written in rust

Simple cli clipboard manager written in rust

null 5 Nov 13, 2022
Simple terminal file manager(vi-style keybindings) written in rust

rust-tfm rust-tfm is a terminal file manager written in rust heavily inspired by lf and ranger, and also inspired by suckless software. rust-tfm.mp4 F

Jiao ShiJie 9 Sep 26, 2023
Curated list of awesome projects and resources related to Rust and computer security

Awesome Rust Security Curated list of awesome projects and resources related to Rust and computer security Table of Contents Tools Web and Cloud Secur

Alan 131 Jan 1, 2023
argmax is a library that allows Rust applications to avoid Argument list too long errors (E2BIG) by providing a std::process::Command wrapper with a

argmax argmax is a library that allows Rust applications to avoid Argument list too long errors (E2BIG) by providing a std::process::Command wrapper w

David Peter 22 Nov 20, 2022
A list of crates with snippets used by me to learn more about Rust.

my-rust-examples This is a list of crates used by me to learn Rust. How to execute You can use a dependency called cargo-play: cargo install cargo-pla

Ronald 0 Jan 3, 2022
CLI tool that extracts a regex pattern from a list of urls ( Rust )

rextract CLI tool that extracts a regex pattern from a list of urls. The tool is written in Rust and supports PCRE. Installation Step 1: Visit https:/

null 45 Dec 11, 2022
belt is a command line app that can show your time from a list of selected time zones

A CLI app to show your time from a list of selected time zones, and a rust lib to parse dates in string formats that are commonly used.

Rollie Ma 23 Nov 4, 2022
CLI app to display list of trending anime, music charts or recommend anime to watch or song to listen to.

Description Anitrendz is a cli app that uses data from the anitiop api to list the top anime and songs or recommend a random anime to watch or song to

Jimmy 9 Jun 11, 2022
A command-line tool to generate a list of required missing Android OS Project blobs.

aosp-missing-blobs aosp-missing-blobs is a nifty tool to identify required blobs (.so) that are missing from AOSP ROM builds, and to show which existi

Josh 176 Dec 16, 2022
Cargo-about - 📜 Cargo plugin to generate list of all licenses for a crate 🦀

?? cargo-about Cargo plugin for generating a license listing for all dependencies of a crate See the book ?? for in-depth documentation. Please Note:

Embark 281 Jan 1, 2023
As-tree - Print a list of paths as a tree of paths 🌳

as-tree Print a list of paths as a tree of paths. For example, given: dir1/foo.txt dir1/bar.txt dir2/qux.txt it will print: . ├── dir1 │ ├── foo.tx

Jake Zimmerman 396 Dec 10, 2022
⚙️ A curated list of static analysis (SAST) tools for all programming languages, config files, build tools, and more.

This repository lists static analysis tools for all programming languages, build tools, config files and more. The official website, analysis-tools.de

Analysis Tools 10.7k Jan 2, 2023
List public items (public API) of library crates. Enables diffing public API between releases.

cargo-public-items List public items (the public API) of a Rust library crate by analyzing the rustdoc JSON of the crate. Automatically builds the rus

Martin Nordholts 203 Dec 31, 2022
A todo list app that indexes your app to find TODO:'s

forgot A todo list app that indexes your app to find TODO:'s Usage to list all your todos forgot list list all your todos ignoring search in ./target,

null 2 Oct 6, 2022
Plex webhook service to automatically update your Anilist watching list.

anifunnel Plex webhook service to automatically update your Anilist watching list. Description anifunnel is a web server that will consume incoming Pl

Hamuko 3 Dec 12, 2022
A todo list from terminal. Compatible with Linux and Windows, not tested on macOS

todocli A todo list from terminal. Compatible with Linux and Windows, not tested on macOS (not planing on support tho). Note: Currently being rewritte

Patommmmm 3 Dec 12, 2022
Generate a dependency list to thank them on README.

thanks-dependencies This generates list of dependencies. I think it's better to publish dependencies explicitly on documentation. Of course users can

keiya sasaki 7 Jan 30, 2023
List key patterns of a JSON file for jq.

jqk jqk lists key patterns of a JSON file for jq. Why? jq is a useful command line tool to filter values from a JSON file quickly on a terminal; howev

Kentaro Wada 8 Jun 25, 2023