Calmd
A calm, local-first Markdown notes app that keeps accumulated knowledge available without continuously exposing its scale.

Intro
Writing is an important part of how I learn. I prefer to take in an idea, frame my understanding in my own words, and trust the computer to help me retrieve it later.
But the writing tools I tried kept turning accumulated knowledge into something else to manage. Long notes became harder to reopen. Atomic notes reduced that weight, then recreated it through folders, tags, graphs, dashboards, and an ever-growing number of files.
The problem was not the amount of knowledge. It was being made continuously aware of its total scale.
My role
I conceived, designed, and built Calmd as an end-to-end product experiment.
- Product direction and interaction design
- Interface design and responsive themes
- React and TypeScript application development
- Tauri and Rust desktop integration
- Markdown persistence, search, linking, and navigation architecture
- Product writing and landing-page development
The governing question was consistent throughout: does this help develop or retrieve the current thought without exposing the scale of the collection?
Solution
Calmd opens to a quiet composer rather than a dashboard, file tree, or recent-notes feed. Typing retrieves related notes or creates a new one, keeping attention on the thought in front of you.

Search is the centre of the application, not an auxiliary feature. Ranked literal retrieval highlights matching words, handles exact titles without creating duplicates, and keeps its behaviour predictable and lightweight.

Links provide the other half of retrieval. Wiki links connect related notes, previews restore context without leaving the page, and backlinks remain collapsed until requested. Search helps rediscover what you already know; links help reveal what you did not know was connected.

Process
I began by revisiting the friction I experienced across Notion, Obsidian, Logseq, Capacities, Word, Google Docs, Apple Notes, and other writing tools. Each got part of the experience right, but the common failure was visible accumulation: the interface gradually made the archive feel like a responsibility.
That diagnosis produced a deliberately narrow product direction: no sidebar, file tree, graph view, visible note counts, folders, tags, properties, recent-notes feed, or always-visible panels. Retrieval would replace browsing wherever possible.
The implementation follows the same principle. Markdown files remain the source of truth in a user-selected portable vault. A rebuildable SQLite and FTS5 index provides literal search and backlinks without owning the notes. Tauri and Rust handle filesystem access, atomic writes, conflict-safe saving, and coordinated renames; the React interface stays focused on writing.


Semantic retrieval and embeddings were considered, but literal retrieval proved more predictable, efficient, and aligned with the product’s minimal philosophy. The architecture leaves Markdown authoritative and every derived index disposable.
Lessons
Reducing overwhelm did not require reducing what the system could remember. It required changing when the system revealed its scale. Hiding the collection by default made beginning a thought feel lighter without making old knowledge inaccessible.
Atomic notes solved the weight of long documents but introduced an organisational burden of their own. Search-first retrieval was the more important shift: people rarely remember where they stored an idea, but they often remember a phrase or something about it.
Finally, a calm interface is easier to trust when leaving is easy. Calmd manages retrieval and consistency, but the notes remain ordinary Markdown files on the user’s computer. The application is the medium, not the owner.