#local-storage #tui #list #tasks #learning #command-line #user

bin+lib todo-cli-manikya

A mini todo-cli app for learning purpose

3 releases (breaking)

0.3.0 Mar 8, 2024
0.2.0 Jan 7, 2024
0.1.0 Jan 1, 2024

#21 in #local-storage

MIT license

38KB
964 lines

A mini todo-cli

Documentation available at docs.rs

About

This is a small todo app written in rust for learning purposes.

Features

  • An easy to use TUI with explanation of all keymaps
  • Tasks stored in local storage so that they can be accessed later
  • High performance and no lag even on slow devices
  • cli commands for advanced users who do not need a tui

How to install

Using binary

Download the executable for your platform from the github latest release!

Using cargo

Clone this repository using git


git clone "https://github.com/Manikya-Sharma/todo-cli"

cd to directory and build using Cargo

cd todo-cli
cargo build --release

Simply run the exetuable created in target/release directory

Alternatively, use cargo run while providing opt-level=3 in Cargo.toml.

Usage

Begin TUI

Run without any arguments to start the TUI

todo-cli

Help

Get help regarding cli

todo-cli help

You can also run help on any subcommand, e.g.

todo-cli list help

List

List out all the tasks

todo-cli list

List out all the tasks which are not yet completed

todo-cli list -p true   # p stands for pending

List out all the tasks which are completed

todo-cli list -c true

Find out tasks using fuzzy search

todo-cli list -f "buy"    # list all tasks with buy

You cna combine multiple flags for more specific searches

todo-cli list -p true -f "cmp"    # all pending tasks with fuzzy
                                  # e.g. "organize computer" task
                                  # which is pending will match

Clear all data

todo-cli clean

Edit a task

Currently, only TUI supports editing a task but CLI feature will be added soon!

How its made

The todo-cli follows a very simple approach, keep all the tasks in a csv and access them efficiently as and when needed.

This project stand on the shoulder of giants, by managing majority of requirements from external dependencies.

Scope for improvement

This project is far from complete yet and needs many improvements

  • Improve performance while navigation the tasks in tui
  • Add a hash value to tasks and store then properly in csv for fast access and management
  • Add options to use only CLI for adding and managing tasks
  • Use hashing algorithm instead of RNG for task ID

Missing features / Bugs

  • Tasks cannot yet be edited using CLI
  • Excess tasks will overflow from TUI
  • No method yet to know about ID or status of a task in TUI
  • Tasks are rendered naively in TUI which does not offer customization.
  • No provision for storing dates when tasks are created/edited

Some ambitious features

This list includes those features which are not currently high priority but can improve User Experience

  • Allow customization of themes using yml/toml
  • Make tasks richer by allowing bold, italic, highlight, internal and external links
  • Tags for tasks which follow common ideas
  • Extra status for tasks in-progress

Dependencies

~12–21MB
~209K SLoC