A terminal user interface for managing daily TODO markdown files, built with Go and Bubble Tea.
Set flake.nix version to 1.7.0-unstable immediately after tagging 1.6.0, ready for the next round of changes. |
||
|---|---|---|
| .forgejo/workflows | ||
| cmd/todos | ||
| config | ||
| docs | ||
| internal | ||
| .git-blame-ignore-refs | ||
| .gitignore | ||
| AGENTS.md | ||
| CHANGELOG.md | ||
| config.toml | ||
| flake.lock | ||
| flake.nix | ||
| go.mod | ||
| go.sum | ||
| LICENSE | ||
| README.md | ||
| TODO.md | ||
TODO TUI
A terminal user interface for managing daily TODO markdown files, built with Go and Bubble Tea.
Features
- Browse TODO files organised by date in a sidebar
- View and manage tasks for selected date in main pane
- Toggle task completion status with real-time file updates
- Add new tasks to any date
- Create new date files on demand
- Vim-style keybindings for efficient navigation
- Configurable TODO directory
- Demo mode for testing with sample data
Installation
Using Nix
nix run git.oliverdavies.uk/opdavies/todos-tui
Build from source
git clone https://git.oliverdavies.uk/opdavies/todos-tui.git
cd todos-tui
nix build
./result/bin/todos
Quick Start
# Run with default directory (~/Nextcloud/Notes/notes/todos)
todos
# Specify custom directory
todos -d /path/to/todos
# Or use environment variable
TODO_TUI_DIR=/path/to/todos todos
# Or use a configuration file
# Create ~/.config/todos-tui/config.toml with:
# todos_dir = "/path/to/todos"
# Run in demo mode with sample data
todos --demo
Keybindings
Navigation
| Key | Action |
|---|---|
j / ↓ |
Move down in task list |
k / ↑ |
Move up in task list |
J |
Move task down (reorder) |
K |
Move task up (reorder) |
Ctrl+n |
Next date (down in sidebar) |
Ctrl+p |
Previous date (up in sidebar) |
Actions
| Key | Action |
|---|---|
x |
Toggle task completion status |
e |
Edit task |
d |
Delete task (prompts for confirmation) |
a |
Add new task to current date |
n |
Create new date file |
q / Ctrl+c |
Quit |
File Format
TODO files use markdown format with GitHub-style checkboxes:
- [ ] Incomplete task
- [x] Completed task
Files are named with the date in YYYY-MM-DD.md format.
Documentation
- Architecture - Technical design and code structure
- Usage Guide - Detailed usage instructions and examples
- Configuration - Configuration options and customization
Development
Enter the development shell:
nix develop
Build and run:
go build ./...
./todos
License
Apache 2.0