Skip to content

calemdar

calemdar logo

Recurring-event manager for Obsidian Full Calendar. Markdown as source of truth, server-expanded occurrences.

What it is

calemdar (calendar + md) is a small Go daemon plus CLI that turns recurring events in an Obsidian vault into flat, per-date markdown files that Obsidian's Full Calendar plugin can read without surprises.

Why

Full Calendar has a long-standing footgun: drag a single occurrence of a recurring event to a new slot and the plugin overwrites the recurrence rule, wiping every other occurrence in the series.

calemdar sidesteps the footgun entirely. It keeps recurrence rules in server-private root files under recurring/ and materialises each occurrence as an independent single-event file under events/. Full Calendar sees only flat events, so drag, drop, and edit are all safe.

How it works in one diagram

 recurring/workout.md ──▶  reconcile  ──▶  events/health/2026-05-03-workout.md
   (recurrence rule)                        events/health/2026-05-05-workout.md
                                            events/health/2026-05-07-workout.md
                                            ...
                                             └─▶ Full Calendar reads these

When you drag an expanded event in Obsidian, the daemon notices the change, flips user-owned: true on that file, and leaves it alone forever. The rest of the series keeps regenerating from the root.

Where to next

  • Quickstart — from zero to running daemon in five commands.
  • Architecture — reactor, reconcile, watcher, store.
  • Configuration — every config key.
  • CLI — every subcommand.
  • Schema — frontmatter shapes for roots and events.
  • Design — folder layout + server behaviour.
  • FAQ — common questions.

Status

v1 shipped. Single-host, single-timezone (Europe/Stockholm), single-vault. Notifications land in-daemon via ntfy — see configuration. ICS export stays deferred.

License

MIT. See LICENSE.