Notes and descriptions

Calendite's notes are plain Markdown files in a folder you choose. Not rows in a database, not a proprietary format. You can point it at an Obsidian vault and edit the same files from either side.

Notes are Android only for now. On iOS and web the notes UI doesn't appear.


Description vs notes

  • A description is the one bit of prose attached to the event itself. One per event, shared across all its occurrences. Stored as Description.md.
  • A note is anything else you want to write. An event can have many, and a note can be attached to the whole event or to one specific occurrence.

Three kinds of note

When you create one, the Make control offers:

Kind Where it lives
Whole Event at the event's folder root: one copy, shared by every occurrence
This Instance inside a single occurrence's folder: only that day
Recurring a master template that's seeded fresh into every future occurrence

"This Instance" only appears when you're looking at a specific occurrence.

Recurring is a template: each occurrence gets its own independent copy to fill in. A "Handover" note on a shift, a checklist on a weekly meeting. Seeding is forward-only: creating a recurring note today doesn't back-fill into occurrences that have already passed.


Where the files go

Set the location at More → Notes & filesStorage location. Either app-private storage (the default, invisible to other apps, deleted on uninstall) or a folder you pick, including an Obsidian vault.

Inside, Calendite makes an Events/ tree bucketed by time:

Events/
├── Past/
├── Today/
│   └── Work/
│       ├── Description.md
│       ├── Contacts.md                   ← whole-event note
│       ├── .templates/
│       │   └── Handover.md               ← recurring master
│       └── 2026-06-15 -- Sunday/
│           ├── Handover.md               ← this occurrence's copy
│           └── Stand-up/                 ← inner event's notes
│               └── Blockers.md
└── Future/
    └── 2026/
        └── 08 - August/
            └── Zoo Day/
  • Recurring events get a folder per bucket; one-off events are filed by year and month.
  • An occurrence is a folder, not a file, so it can hold several notes plus inner-event subfolders.
  • A variant day suffixes the folder: 2026-06-15 -- Sunday -- Late Shift/.
  • File names are sanitised (\ / : * ? " < > | become _) and collisions get (2).
  • Month and weekday names in paths are English regardless of your locale.

A nightly job re-files occurrence folders between Past / Today / Future as dates pass. It moves by copy → verify each file's checksum → delete the source, so an interrupted move can't lose anything.

Caveat: that nightly sweep only runs against app-private storage. If you've pointed Calendite at an Obsidian vault, folders are not automatically re-bucketed there.


The editor

One card with a three-way pill: View, Edit, Markdown.

  • View renders the note.
  • Edit is a rich-text editor: what you type looks like what you get.
  • Markdown is the raw source.

What actually works

Not everything on the toolbar works yet.

In Edit, these toolbar buttons work: Bold, Italic, Bullet list, Numbered list (real formatting); Divider, Quote, Task, Table (insert literal markdown at the cursor).

These are visible but don't do anything yet: Heading, Strikethrough, Inline code, Link, Clear formatting.

In View, rendering is plain CommonMark. Headings, bold, italic, links, code blocks, blockquotes, lists, rules and images all render. Tables, task checkboxes and ~~strikethrough~~ do not. They're GitHub extensions and show as raw text. Checkboxes aren't tappable.

For anything the editor can't do, use Markdown mode and write it directly: the file is just markdown, and it round-trips.

Caveat: blocks the rich editor can't represent (code fences, tables, dividers, quotes, task lines) are swapped for placeholder lines like [Table · 0] while you're in Edit, and restored on the way out. Editing or deleting one of those bracketed lines destroys that block. If you need to change a table, do it in Markdown mode.

Only Save writes to disk. Switching modes keeps your edits in memory; Cancel discards.


Templates

A recurring note master can carry placeholders filled in when it's seeded into an occurrence:

  • event.title
  • event.start_time
  • event.all_day
  • event.tags
  • the occurrence date

This makes a per-shift handover template that already knows which shift it's for.


Using it with Obsidian

Point Calendite's storage at your vault and the notes appear as ordinary files. There is no sync and no import; the vault folder is the store.

Deliberately, Calendite writes no frontmatter and no Obsidian-specific syntax: no wikilinks, no Dataview, no properties. The files stay portable.

Not built yet: pruning notes for deleted events, soft-delete to a .trash, and detecting that you edited a seeded note by hand. And on iOS choosing a folder isn't available yet, so Change folder… does nothing there.


Next