todo-cli-manikya 0.3.0

A mini todo-cli app for learning purpose
Documentation
# A mini todo-cli

> Documentation available at [docs.rs]https://docs.rs/todo-cli-manikya/0.1.0/todo_cli_manikya/

## 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

```bash

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

```

cd to directory and build using Cargo

```bash
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

```bash
todo-cli
```

### Help

Get help regarding cli

```bash
todo-cli help
```

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

```bash
todo-cli list help
```

### List

List out all the tasks

```bash
todo-cli list
```

List out all the tasks which are not yet completed

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

List out all the tasks which are completed

```bash
todo-cli list -c true
```

Find out tasks using fuzzy search

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

You cna combine multiple flags for more specific searches

```bash
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

```bash
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

- [x] Improve performance while navigation the tasks in tui
- [x] 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