Tasks
A simple, fast command-line task manager built with Go, using Bubble Tea for the TUI and LipGloss for styling. Data is stored locally in SQLite.
Note: This is a hobby project for personal use. Feel free to use, fork, or learn from it, but don't be surprised if things break over time. See branches for iterations.
Installation
go install github.com/mkaz/tasks/cmd/tasks@latest
Or build from source:
git clone https://github.com/mkaz/tasks.git
cd tasks
go build -o tasks ./cmd/tasks
Quick Start
# Open interactive task manager
tasks
# Add a task from command line
tasks add "Buy groceries"
# Add a task with a URL
tasks add "Review PR https://github.com/example/repo/pull/123"
# Mark a task as done
tasks do 5
# View tasks completed this week
tasks archive --week
# Show help
tasks help
Interactive Mode
Launch with tasks to enter the interactive TUI.
Navigation
| Key |
Action |
↑ / k |
Move up |
↓ / j |
Move down |
alt+↑ |
Move task up in list |
alt+↓ |
Move task down in list |
r |
Refresh |
q |
Quit |
Task Actions
| Key |
Action |
a |
Add new task |
e/enter |
Edit selected task |
space |
Cycle task state |
d |
Mark as done |
o |
Open URL in browser |
c |
Archive completed/canceled tasks |
delete |
Delete task permanently |
Filter / Search
| Key |
Action |
/ |
Start filtering |
Enter |
Apply filter |
Esc |
Clear filter / Cancel |
Filter is live/type-ahead: results appear after typing 3+ characters. Matches against task title.
Examples:
/groceries — Find tasks containing "groceries"
/review — Find tasks containing "review"
Edit Mode
| Key |
Action |
↑/↓ |
Navigate fields |
space |
Toggle state (when on State field) |
enter |
Edit field / cycle state / expand subtasks |
ctrl+o |
Open URL in browser |
tab |
Toggle subtask checkbox |
ctrl+d |
Delete subtask |
Esc |
Save and exit |
CLI Commands
| Command |
Description |
tasks |
Open interactive TUI |
tasks add "text" |
Add a task (supports URLs in text) |
tasks do <id> |
Mark a task as done |
tasks archive --week |
Show tasks completed in last 7 days |
tasks --init <db> |
Create a new empty database at path |
tasks --version |
Show version information |
tasks help |
Show help information |
Task States
Tasks have a simple status indicator:
| Symbol |
State |
[ ] |
Not started |
[-] |
In progress |
[✓] |
Done |
[✗] |
Canceled |
Press space in the task list to cycle through states, or edit the task to change state.
Subtasks
Tasks can have subtasks. Edit a task and navigate to the Subtasks field:
- Press Enter to expand and navigate subtasks
- Use ↑/↓ or Tab to move between subtasks
- Press Space to toggle a subtask's done state
- Press Enter on a subtask to edit its text
- Press Enter on the empty slot at the bottom to add a new subtask
- Press Delete to remove a subtask
- Press Esc to return to the main edit form
The task list shows subtask progress as (done/total).
Data Storage
Data is stored in a SQLite database. The program looks in this order:
tasks.db in current directory
TASKS_DB environment variable
~/Documents/tasks.db
License
MIT License - An mkaz contrivance.