Ruby Todo
A powerful CLI todo list manager with multi-notebook support and automated task management.
Features
- Multiple notebook support
- Task categorization (todo, in progress, done, archived)
- Advanced task features (descriptions, due dates, priorities, tags)
- Automated task archiving
- Task search and filtering
- Task statistics and analytics
- Task export and import (JSON, CSV)
- Task templates with placeholders
- AI assistant for natural language task management
- Beautiful CLI interface with colored output
- SQLite database for persistent storage
Installation
Add this line to your application's Gemfile:
gem "ruby_todo"
And then execute:
$ bundle install
Or install it yourself as:
$ gem install ruby_todo
Quick Start
After installing the gem:
-
Initialize the application:
$ ruby_todo init
-
Create your first notebook:
$ ruby_todo notebook:create "Personal"
-
Add your first task:
$ ruby_todo task:add "Personal" "My first task"
-
List your tasks:
$ ruby_todo task:list "Personal"
All ruby_todo
commands can be run from anywhere in your terminal as they're installed globally with the gem.
Usage
Initialization
Initialize Ruby Todo:
$ ruby_todo init
Notebook Management
Create a new notebook:
$ ruby_todo notebook:create "Work"
List all notebooks:
$ ruby_todo notebook:list
Set default notebook:
$ ruby_todo notebook:set_default "Work"
Task Management
Add a task to a notebook:
$ ruby_todo task:add "Work" "Complete project documentation"
Add a task with additional details:
$ ruby_todo task:add "Work" "Complete project documentation" --description "Write the API documentation for the new features" --due_date "2024-04-10 14:00" --priority "high" --tags "project,documentation,urgent"
List tasks in a notebook:
$ ruby_todo task:list "Work"
Filter tasks by status:
$ ruby_todo task:list "Work" --status "in_progress"
Show only overdue tasks:
$ ruby_todo task:list "Work" --overdue
Show only high priority tasks:
$ ruby_todo task:list "Work" --priority "high"
Filter by tags:
$ ruby_todo task:list "Work" --tags "urgent,important"
View detailed information about a task:
$ ruby_todo task:show "Work" 1
Edit a task:
$ ruby_todo task:edit "Work" 1 --title "New title" --priority "medium" --due_date "2024-04-15 10:00"
Move a task to a different status:
$ ruby_todo task:move "Work" 1 "in_progress"
Delete a task:
$ ruby_todo task:delete "Work" 1
Search
Search for tasks across all notebooks:
$ ruby_todo task:search "documentation"
Search within a specific notebook:
$ ruby_todo task:search "documentation" --notebook "Work"
Export and Import
Export tasks from a notebook:
$ ruby_todo export "Work" "work_export"
Export all notebooks:
$ ruby_todo export --all "full_export"
Export to CSV format:
$ ruby_todo export "Work" "work_export" --format csv
Import tasks from a file:
$ ruby_todo import "work_export.json"
Import to a specific notebook:
$ ruby_todo import "work_export.json" --notebook "New Work"
Task Templates
Create a template:
$ ruby_todo template:create "Weekly Report" --title "Weekly Report {week}" --description "Prepare weekly report for week {week}" --priority "high" --tags "report,weekly" --due_date_offset "5d"
List all templates:
$ ruby_todo template:list
Show template details:
$ ruby_todo template:show "Weekly Report"
Delete a template:
$ ruby_todo template:delete "Weekly Report"
Use a template:
$ ruby_todo template:use "Weekly Report" "Work"
Template Placeholders
Templates support the following placeholder types:
- Custom placeholders:
{name}
,{week}
, etc. (replaced when using template) - Date placeholders:
-
{today}
: Current date -
{tomorrow}
: Next day -
{yesterday}
: Previous day -
{weekday}
: Current day of week -
{month}
: Current month -
{year}
: Current year
-
AI Assistant
Ruby Todo includes an AI assistant that can help you manage your tasks using natural language.
Configuration
Configure your AI assistant:
$ ruby_todo ai:configure
API Key Options
There are two ways to provide your OpenAI API key:
-
Configure once with the setup command (recommended):
$ ruby_todo ai:configure
This prompts you to enter your OpenAI API key and securely saves it.
-
Use environment variables:
$ export OPENAI_API_KEY=your_api_key_here $ ruby_todo ai:ask "your prompt"
Using the AI Assistant
Here are some example commands you can use with the AI assistant:
Task Creation and Management:
$ ruby_todo ai:ask "create a new task called 'Test task creation via AI' with high priority"
$ ruby_todo ai:ask "move migrate arbitration-tf-shared to github actions"
$ ruby_todo ai:ask "move all tasks to in_progress"
Task Queries:
$ ruby_todo ai:ask "show me all high priority tasks"
$ ruby_todo ai:ask "show me all in progress tasks"
$ ruby_todo ai:ask "show me all todo tasks"
Complex Operations:
$ ruby_todo ai:ask "move migrate arbitration-tf-shared and awsappman-tf-accounts-management to github actions"
$ ruby_todo ai:ask "show statistics for protectors notebook"
$ ruby_todo ai:ask "move all migrate to barracuda org tasks to done"
The AI assistant can understand various natural language patterns and execute the appropriate commands for you.