https://github.com/emanuelefavero/todo-cli
A command-line Todo List application built with Rust
https://github.com/emanuelefavero/todo-cli
cli command-line linux macos rust terminal todo todolist
Last synced: 3 months ago
JSON representation
A command-line Todo List application built with Rust
- Host: GitHub
- URL: https://github.com/emanuelefavero/todo-cli
- Owner: emanuelefavero
- License: mit
- Created: 2025-05-26T17:53:16.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-08-15T16:49:48.000Z (11 months ago)
- Last Synced: 2025-08-15T18:30:03.966Z (11 months ago)
- Topics: cli, command-line, linux, macos, rust, terminal, todo, todolist
- Language: Rust
- Homepage:
- Size: 90.8 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# Todo CLI
A command-line Todo List application built with Rust
## Overview
Todo CLI is a lightweight, fast, and easy-to-use task manager that allows you to manage your todos directly from the terminal. Perfect for developers and terminal enthusiasts who prefer working without leaving their command line environment.
## Features
| _Feature_ | _Description_ |
| ------------------------------------- | -------------------------------------------------- |
| ⚡ ** Blazing Fast** | Built with Rust for speed and efficiency |
| 📦 ** Small Binary Size** | Lightweight and minimal |
| 📟 ** Terminal-based Interface** | All interactions happen directly in your terminal |
| ⚙️ ** Dynamic Output** | See changes in real-time as you run commands |
| 🎨 ** Colored Output** | Syntax-highlighted tasks for better readability |
| 💾 ** Persistent Storage** | Tasks are saved between sessions automatically |
| 📝 ** Add Tasks** | Quickly add new tasks to your todo list |
| 📋 ** List Tasks** | View all tasks with clear status indicators |
| ✅ ** Toggle Task Status** | Mark tasks as done or undone with a single command |
| ❌ ** Remove Tasks** | Delete individual tasks with ease |
| ♻️ ** Replace a Task** | Update an existing task with new content |
| ➕ ** Insert Task at Position** | Add a task at any specific index |
| 🧹 ** Clear All Tasks** | Wipe your task list in one command |
## Install from Homebrew
- To install Todo CLI using Homebrew, run the following commands:
```bash
brew tap emanuelefavero/tap
brew install todo
```
- Now you can run the `todo` command from anywhere in your terminal.
## Local Installation and Release
### Prerequisites
- [Rust](https://www.rust-lang.org/tools/install)
### Building from Source
```bash
# Clone the repository
git clone https://github.com/emanuelefavero/todo-cli.git
cd todo-cli
# Build the project
cargo build --release
# Optional: Move the binary to a directory in your PATH so you can run it from anywhere
cp target/release/todo /usr/local/bin/
# Or release it using Homebrew (see below)
```
## Releasing the Application
[How to Release Your Own Version of `todo-cli`](RELEASE.md)
## Usage
The `todo` command is used to manage your todo list. Below are the available commands and their usage:
```bash
todo # Display the todo list
todo add "Todo text" # Add a new todo
todo rm # Remove first todo
todo rm # Remove a specific todo by number
todo done # Mark the first todo as done
todo done # Mark a specific todo as done
todo replace "New text" # Replace a specific todo with new text
todo insert "Todo text" # Insert a new todo at a specific position
todo edit # Edit a todo (interactive mode)
todo clear # Clear all todos
todo help # Display help information
```
### Examples
```bash
# Add a new todo
todo add "Buy groceries"
# Display the todo list
todo
# Mark first todo as done
todo done 1
# Remove the first todo
todo rm 1
# Clear all todos
todo clear
```
> Use the `help` command to see a list of all available commands and their descriptions
>
> You can also find aliases for commands in the help output, such as `todo a` for `todo add`.
## Data Storage
All todos are stored as JSON in `~/.todo/todos.json`, making it easy to back up or sync your todos between computers.
## Author
[Emanuele Favero](https://github.com/emanuelefavero)
## Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
1. Fork the repository
2. Create your feature branch (`git checkout -b feature/amazing-feature`)
3. Commit your changes (`git commit -m 'Add some amazing feature'`)
4. Push to the branch (`git push origin feature/amazing-feature`)
5. Open a Pull Request
## Resources
- [Rust](https://www.rust-lang.org/)
- [Colored Rust Library](https://github.com/colored-rs/colored)
- [Serde Rust JSON Library](https://serde.rs/)
- [dirs Rust Library](https://crates.io/crates/dirs)
## License
- [MIT](LICENSE.md)
[**Go To Top ⬆️**](#todo-cli)