Markdown-first storage as an anti-lock-in pattern
Designing a self-hosted personal-data app where the user was worried about being locked into any single notes tool (Notion, Obsidian, a bespoke CRM).
Make plain markdown files in a folder the canonical store and treat SQLite (or any DB) as a rebuildable index, not a source of truth. One file per entity with YAML frontmatter for structured fields and a free-form body below — Obsidian opens it, grep searches it, git backs it up, paste-into-Notion just works. The custom app becomes a removable lens over the folder rather than a prison; users never feel committed to it, which paradoxically makes them more willing to actually use it.
For any personal-data app, ask what does this make portable? before asking what is the stack? — the canonical-store decision is the one users actually care about.