Skip to content

v0.1.0

Choose a tag to compare

@github-actions github-actions released this 11 Jul 19:19

A self-hosted todo & reminders service. One-off and recurring tasks (daily/weekly/monthly/yearly) with low/normal/high priorities that re-notify until done (2h/1h/20m), delivered via each user's own Telegram bot (with a Complete button) and desktop browser notifications. Multi-user, real-time, MIT-licensed, built to run inside a private Tailscale tailnet.

Highlights

  • Three binariesdodo (HTTP API + web UI + scheduler + Telegram pollers, plus admin and backup subcommands; ships in the container), dodo-cli (agent CLI, JSON output), dodo-tui (terminal UI).
  • Web UI — server-rendered htmx + Alpine, real-time over websockets: list view with today/week/month + pending/completed/all filters, a month calendar, task create/edit/complete/snooze/delete, recurring tasks, profile, API tokens, Telegram setup, dark/light/system theme, English/Greek.
  • Telegram — per-user bots, long polling (no webhooks), reminders with an inline Complete button that completes the task from chat.
  • Browser notifications — opt-in desktop notifications for due tasks.
  • Reminders — re-notify at the priority interval until completed; snooze to silence until later.
  • Clients — agent CLI (JSON, --pretty) and a bubbletea TUI, both token-authed.
  • Admin & opsdodo admin for users/tokens (direct DB), dodo backup -dump for online SQLite backup.
  • Security — argon2id passwords, session cookies + CSRF, bearer API tokens, AES-256-GCM encryption of Telegram tokens at rest, strict per-user data scoping.
  • Deploy — multi-arch container on GHCR, Docker Compose for dev + a Tailscale (tsrp) production override.

Notable fixes since scaffolding

  • Recurring tasks: completing one occurrence keeps the series open; the calendar, list and completed views show every occurrence.
  • Telegram poller lifecycle (survives the config-time request context; long-poll timeout) and the /ws upgrade (ResponseWriter hijack) — real-time and Telegram now work end-to-end.

First release — 58 commits.