DEV Community

ArkHost
ArkHost

Posted on

Why I Built HelixNotes - A Local-First Markdown Notes App

I tested dozens of note-taking apps over the years. Free, paid, everything. None of them worked. So I built my own.

The Problem

I take a lot of notes. Technical documentation, project planning, ideas that hit at random, all of it goes into whatever note-taking app I'm using at the time. And over the years, I've used most of them.

Notion was slow. Like, noticeably slow. Every click had a delay. The offline mode was a joke. It barely worked, and when it did, syncing back was a coin flip.

Evernote was fine in 2015. Then it got bloated, changed pricing three times, and I stopped trusting them with my data.

Then I found UpNote. Clean UI, fast, just works. Honestly, I loved it. But there was one problem: your data lives in Google Firebase. Your notes, on someone else's cloud, tied to a proprietary format. For a privacy-focused person running Linux, that's a dealbreaker.

The Obsidian Detour

So I tried Obsidian. Local files, markdown, own your data - great philosophy. But as a plain markdown editor, the default experience was painful. I actually stopped taking notes entirely.

Obsidian is powerful if you spend time configuring plugins, learning hotkeys, and tweaking CSS. But I don't want a hobby. I want to open an app, write something down, and close it.

What I Actually Wanted

It turned out to be pretty simple:

  • UpNote's clean, intuitive UI
  • Obsidian's philosophy - local .md files, no cloud, no lock-in
  • Actually fast, not "fast for an Electron app"
  • Open source, so you can verify what it does with your data

That app didn't exist. So I built it.

Why Tauri Over Electron

I went with Rust + Tauri 2.0 for the backend. The result is a small binary that uses a fraction of the RAM of Electron alternatives. It launches instantly and doesn't eat your battery.

Tauri uses the system webview instead of bundling Chromium. That's why the binary is small and the memory footprint is low. For a note-taking app, there's no reason to ship an entire browser.

The Stack

  • Backend: Rust + Tauri 2.0
  • Frontend: SvelteKit + Svelte 5 + TailwindCSS v4
  • Editor: TipTap v3 - WYSIWYG with formatting toolbar, slash commands, and source mode toggle
  • Search: Tantivy - a Rust-native full-text search engine. Indexes your notes, returns results instantly.
  • Storage: Plain .md files on your filesystem. Notebooks are folders. Metadata lives in frontmatter. No proprietary database, no SQLite blob, no format you can't read with cat.

Sync Without Lock-in

HelixNotes doesn't have built-in sync. That's by design.

Because your notes are just files in a folder, you can sync them with whatever you already use - Nextcloud, Syncthing, Dropbox, rsync, Git, or nothing at all. The app watches the filesystem for external changes and picks them up automatically.

I'm not going to tell you where to put your files. That's your decision.

Open Source, AGPL-3.0

HelixNotes is licensed under AGPL-3.0 and hosted on Codeberg. Not GitHub - Codeberg. If you're building a privacy-focused app, hosting it on Microsoft's platform feels like missing the point.

Get It

Available on Linux (AppImage, APT, AUR), Windows, and macOS.


I built HelixNotes because I needed it. Turns out other people did too. If you've been looking for the same thing, give it a try.

Top comments (0)