{"id":45253127,"url":"https://github.com/roniel-rhack/rondo","last_synced_at":"2026-02-28T08:11:43.347Z","repository":{"id":339635960,"uuid":"1162778489","full_name":"roniel-rhack/rondo","owner":"roniel-rhack","description":"A modern terminal productivity app that combines task management with a daily journal.","archived":false,"fork":false,"pushed_at":"2026-02-28T05:11:43.000Z","size":621,"stargazers_count":25,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-28T07:44:40.069Z","etag":null,"topics":["golang","journal","todo-app","tui"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/roniel-rhack.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-20T17:24:42.000Z","updated_at":"2026-02-28T05:11:46.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/roniel-rhack/rondo","commit_stats":null,"previous_names":["roniel-rhack/rondo"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/roniel-rhack/rondo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/roniel-rhack%2Frondo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/roniel-rhack%2Frondo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/roniel-rhack%2Frondo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/roniel-rhack%2Frondo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/roniel-rhack","download_url":"https://codeload.github.com/roniel-rhack/rondo/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/roniel-rhack%2Frondo/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29928329,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-27T19:37:42.220Z","status":"online","status_checked_at":"2026-02-28T02:00:07.010Z","response_time":90,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["golang","journal","todo-app","tui"],"created_at":"2026-02-20T23:02:34.965Z","updated_at":"2026-02-28T08:11:43.336Z","avatar_url":"https://github.com/roniel-rhack.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e\n  RonDO\n\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003eA modern terminal productivity app that combines task management with a daily journal.\u003c/strong\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/roniel-rhack/rondo/releases/latest\"\u003e\u003cimg src=\"https://img.shields.io/github/v/tag/roniel-rhack/rondo?style=flat-square\u0026amp;label=release\u0026amp;color=00bcd4\" alt=\"Release\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/roniel-rhack/rondo/actions\"\u003e\u003cimg src=\"https://img.shields.io/github/actions/workflow/status/roniel-rhack/rondo/release.yml?style=flat-square\u0026amp;label=CI\" alt=\"CI\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://goreportcard.com/report/github.com/roniel-rhack/rondo\"\u003e\u003cimg src=\"https://goreportcard.com/badge/github.com/roniel-rhack/rondo?style=flat-square\" alt=\"Go Report Card\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/roniel-rhack/rondo/blob/main/LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/github/license/roniel-rhack/rondo?style=flat-square\u0026amp;color=00bcd4\" alt=\"License\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://go.dev/\"\u003e\u003cimg src=\"https://img.shields.io/badge/Go-1.23+-00ADD8?style=flat-square\u0026amp;logo=go\u0026amp;logoColor=white\" alt=\"Go\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  RonDO is a single-binary terminal app for developers who want distraction-free productivity\u003cbr\u003e\n  without leaving their terminal. Tasks, journal, and Pomodoro timer in one keyboard-driven\u003cbr\u003e\n  interface — backed by local SQLite. No accounts, no cloud, no config required.\n\u003c/p\u003e\n\n---\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/tasks.png\" width=\"720\" alt=\"Task management view\"\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\u003cem\u003eTask management with subtasks, priorities, and time tracking\u003c/em\u003e\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/journal.png\" width=\"720\" alt=\"Journal view\"\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\u003cem\u003eDaily journal with timestamped entries and smart date labels\u003c/em\u003e\u003c/p\u003e\n\n---\n\n## Contents\n\n- [Install](#install)\n- [Quick Start](#quick-start)\n- [Features](#features)\n- [CLI](#cli-mode)\n- [Keyboard Shortcuts](#keyboard-shortcuts)\n- [Data \u0026 Config](#data--config)\n- [Development](#development)\n- [Architecture](#architecture)\n- [License](#license)\n\n## Install\n\n### Go\n\n```bash\ngo install github.com/roniel-rhack/rondo/cmd/todo@latest\n```\n\n### Homebrew\n\n```bash\nbrew tap roniel-rhack/tap\nbrew install rondo\n```\n\n### Arch Linux (AUR)\n\n```bash\nyay -S rondo\n```\n\n### From source\n\n```bash\ngit clone https://github.com/roniel-rhack/rondo.git\ncd rondo\ngo build -o rondo ./cmd/todo\nmv rondo /usr/local/bin/\n```\n\n## Quick Start\n\n```bash\nrondo                              # Launch the TUI\nrondo add \"My first task\"          # Add a task from the CLI\nrondo journal \"Getting started\"    # Write a journal entry\nrondo list                         # See all tasks\n```\n\nAll data is stored locally at `~/.todo-app/` — no setup needed.\n\n## Features\n\n### Task Management\n\n- **Full CRUD** — create, view, edit, and delete tasks with validated forms\n- **Subtasks** — completion tracking with progress bar\n- **Status workflow** — Pending, In Progress, Done\n- **Priority levels** — Low, Medium, High, Urgent (color-coded)\n- **Due dates** — with overdue detection and sort support\n- **Tags** — comma-separated, filterable\n- **Recurring tasks** — daily, weekly, monthly, or yearly; auto-spawns next on completion\n- **Task dependencies** — mark tasks as blocked by others\n- **Time logging** — log time spent with optional notes\n- **Sorting** — by creation date, due date, or priority\n- **Fuzzy search** — instant filter across tasks\n\n### Productivity Tools\n\n- **Pomodoro timer** — full work/break cycles with configurable durations\n  - Work → Short Break → Work → ... → Long Break (4-session sets)\n  - Phase-aware: work, short break, long break with distinct indicators\n  - Cycle progress indicator, terminal bell on completion\n  - Configurable via settings form or `config.json`\n- **Statistics overlay** — task counts, priority breakdown, focus sessions, streaks\n- **Export** — Markdown or JSON, with optional journal inclusion\n- **Undo** — revert the last destructive action\n\n### Daily Journal\n\n- **One note per day** — auto-created on first entry\n- **Timestamped entries** — each entry records the time\n- **Edit \u0026 delete entries** — cursor-based selection\n- **Hide/restore notes** — archive without deleting\n- **Smart date labels** — \"Today\", \"Yesterday\", weekday names\n\n### Interface\n\n- **Two-panel layout** — list + detail with resizable split\n- **Four tabs** — All, Active, Done, Journal (live counts)\n- **Vim-style navigation** — `j`/`k` everywhere\n- **Context-sensitive status bar** — keybinding hints update per panel\n- **Modal forms** — validated input with Dracula theme\n- **Confirmation dialogs** — for all destructive actions\n- **Help overlay** — press `?` for the full keybinding reference\n- **Auto backups** — daily SQLite backups\n\n## CLI Mode\n\nFull-featured CLI with styled terminal output (auto-detected), JSON support, and shell completions.\n\n#### Global Flags\n\n| Flag | Description |\n|------|-------------|\n| `--format table\\|json\\|plain` | Output format (default: table) |\n| `--json` | Shorthand for `--format json` |\n| `-q, --quiet` | Suppress non-essential output |\n| `--no-color` | Disable ANSI colors (auto-detected when piped) |\n\n#### Basic Usage\n\n```bash\nrondo add \"Buy groceries\" --priority high --due 2026-03-15\nrondo list --status pending --sort priority\nrondo done 3\nrondo show 3\nrondo journal \"Productive day\"\nrondo stats\n```\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eAll CLI commands\u003c/strong\u003e\u003c/summary\u003e\n\n```bash\n# Tasks\nrondo add \"Buy groceries\" --priority high --due 2026-03-15 --tags \"home,shopping\"\nrondo list --status pending --sort priority --limit 10\nrondo list --priority urgent --overdue --format json\nrondo show 3\nrondo edit 3 --title \"Buy organic groceries\" --due 2026-03-20\nrondo done 3 4 5\nrondo delete 3 --force\nrondo status 3 active\n\n# Subtasks\nrondo subtask add 3 \"Pick up milk\"\nrondo subtask list 3\nrondo subtask done 3 1\n\n# Time tracking\nrondo timelog add 3 1h30m --note \"Deep work session\"\nrondo timelog list 3\nrondo timelog summary --days 30\n\n# Recurrence\nrondo recur set 3 weekly\nrondo recur clear 3\n\n# Journal\nrondo journal \"Productive day\"\nrondo journal add \"Wrapped up the feature\" --date yesterday\nrondo journal list\nrondo journal show today\n\n# Focus (Pomodoro)\nrondo focus start --task-id 3 --duration 25m\nrondo focus status\nrondo focus stats --days 14\n\n# Utilities\nrondo stats\nrondo export --format json --journal --output backup.json\nrondo config list\nrondo config set focus.work_duration_min 30\nrondo completion zsh\n```\n\n\u003c/details\u003e\n\n## Keyboard Shortcuts\n\n\u003e **Start here:** `a` to add, `j`/`k` to navigate, `s` to change status, `Tab` to switch tabs, `?` for help.\n\n### Global\n\n| Key | Action |\n|-----|--------|\n| `Tab` | Switch tabs |\n| `1` / `2` | Focus left / right panel |\n| `\u003c` / `\u003e` | Resize panels |\n| `Esc` | Return to list / clear filter |\n| `?` | Help overlay |\n| `p` | Pomodoro timer |\n| `P` | Pomodoro settings |\n| `G` | Statistics |\n| `X` | Export |\n| `Ctrl+Z` | Undo last action |\n| `q` | Quit |\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003ePanel-specific shortcuts\u003c/strong\u003e\u003c/summary\u003e\n\n### Tasks — Panel 1\n\n| Key | Action |\n|-----|--------|\n| `j`/`k` | Navigate |\n| `a` | Add task |\n| `e` | Edit task |\n| `d` | Delete task |\n| `s` | Cycle status |\n| `t` | Add subtask |\n| `/` | Search |\n| `F1`/`F2`/`F3` | Sort by created / due / priority |\n| `F4` | Toggle tag filter bar |\n\n### Tasks — Panel 2 (Details)\n\n| Key | Action |\n|-----|--------|\n| `j`/`k` | Navigate subtasks |\n| `a` | Add subtask |\n| `e` | Edit subtask |\n| `d` | Delete subtask |\n| `s` | Toggle subtask |\n| `l` | Log time |\n| `b` | View blockers |\n\n### Journal — Panel 1 (Notes)\n\n| Key | Action |\n|-----|--------|\n| `j`/`k` | Navigate notes |\n| `a` | Add entry (today) |\n| `h` | Hide / restore note |\n| `H` | Toggle show hidden |\n| `/` | Search notes |\n\n### Journal — Panel 2 (Entries)\n\n| Key | Action |\n|-----|--------|\n| `j`/`k` | Navigate entries |\n| `a` | Add entry (today) |\n| `e` | Edit entry |\n| `d` | Delete entry |\n\n\u003c/details\u003e\n\n## Data \u0026 Config\n\n| Path | Purpose |\n|------|---------|\n| `~/.todo-app/todo.db` | SQLite database (WAL mode) |\n| `~/.todo-app/config.json` | Persistent settings |\n| `~/.todo-app/backups/` | Daily auto-backups |\n\n## Development\n\nRequires **Go 1.23+**.\n\n```bash\ngo build -o rondo ./cmd/todo   # Build\ngo run ./cmd/todo              # Run\ngo test ./...                  # Test\ngo vet ./...                   # Vet\ngo mod tidy                    # Tidy deps\n```\n\nContributions welcome — please open an issue first for feature discussions.\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eArchitecture\u003c/strong\u003e\u003c/summary\u003e\n\n```\ncmd/todo/main.go                # Entry point (TUI + CLI dispatch)\ninternal/\n  app/\n    model.go                    # Main Bubbletea Model + Update + View\n    model_journal.go            # Journal tab handlers\n    model_forms.go              # Form submission + confirmation dialogs\n    model_overlays.go           # Help, stats, blocker overlays + panel renderer\n    model_tasks.go              # Task list helpers (filter, sort, reload, export)\n    model_features.go           # Feature handlers (focus, tags, undo, blockers)\n    keys.go                     # Keybinding definitions\n    styles.go                   # Lip Gloss styles\n    delegate.go                 # Task list item delegate\n    delegate_journal.go         # Journal note list item delegate\n  cli/\n    cli.go                      # Cobra root command + global flags\n    output.go                   # Styled output (TTY-aware tables, colors)\n    errors.go                   # NotFoundError type\n    confirm.go                  # Confirmation prompts\n    tasks.go                    # add, done, list, show, edit, delete, status\n    journal.go                  # journal (add, list, show, edit, delete, hide)\n    export.go                   # export (md, json, file output)\n    subtasks.go                 # subtask (add, list, done, edit, delete)\n    timelog.go                  # timelog (add, list, summary)\n    recur.go                    # recur (set, clear)\n    focus.go                    # focus (start, status, stats)\n    stats.go                    # stats (task + focus summary)\n    config_cmd.go               # config (list, get, set, reset)\n    completion.go               # Shell completion (bash, zsh, fish, powershell)\n  config/\n    config.go                   # JSON config (~/.todo-app/config.json)\n  database/\n    db.go                       # SQLite connection + daily backup\n    backup.go                   # Backup rotation logic\n  export/\n    export.go                   # Markdown + JSON export writers\n  focus/\n    focus.go                    # Focus/Pomodoro session model\n    store.go                    # Focus session SQLite repository\n  journal/\n    journal.go                  # Note \u0026 Entry domain types\n    store.go                    # Journal SQLite repository\n  task/\n    task.go                     # Task \u0026 Subtask domain types\n    store.go                    # Task SQLite repository\n    deps.go                     # Task dependency cycle detection\n    recur.go                    # Recurring task logic\n    timelog.go                  # Time log model\n  ui/\n    colors.go                   # Shared color palette (adaptive light/dark)\n    views.go                    # Rendering (tabs, detail, status bar, dialogs)\n    form.go                     # Huh form builders\n    markdown.go                 # Markdown rendering\n    overdue.go                  # Due date classification\n    stats.go                    # Sparkline rendering\n```\n\nFollows the **Bubbletea MVU** (Model-Update-View) pattern. All data persists in a single SQLite database at `~/.todo-app/todo.db` (WAL mode, single connection, `ON DELETE CASCADE`).\n\n\u003c/details\u003e\n\n## Built With\n\n[Bubbletea](https://github.com/charmbracelet/bubbletea) (TUI) ·\n[Bubbles](https://github.com/charmbracelet/bubbles) (components) ·\n[Lip Gloss](https://github.com/charmbracelet/lipgloss) (styling) ·\n[Huh](https://github.com/charmbracelet/huh) (forms) ·\n[Cobra](https://github.com/spf13/cobra) (CLI) ·\n[modernc.org/sqlite](https://pkg.go.dev/modernc.org/sqlite) (database)\n\n## License\n\n[MIT](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Froniel-rhack%2Frondo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Froniel-rhack%2Frondo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Froniel-rhack%2Frondo/lists"}