Building FlipMD: A Markdown Editor That Gets Out of Your Way


Sometimes the best tools are the ones that do less. I’ve been frustrated with markdown editing on Windows for ages. VS Code is overkill for a quick README edit. Notepad strips all formatting. And most dedicated markdown editors are either Electron-bloated or browser-based.

I wanted something simple: double-click a .md file, edit it with live preview, save it, close it. No project setup, no folder views, no sync features. Just markdown.

So I built FlipMD.

The Core Problem

My daily workflow involves lots of markdown files - CLAUDE.md files for AI context, READMEs, blog drafts, documentation. Opening VS Code for every quick edit felt like starting a chainsaw to cut bread.

What I wanted:

  • Open files with a double-click from Windows Explorer
  • See raw markdown and rendered preview side by side
  • Save and close without ceremony
  • A tiny executable that launches instantly

What I didn’t want:

  • Project/folder management
  • Git integration
  • Cloud sync
  • A 200MB install

Why Tauri

The first decision was the framework. Electron was the obvious choice but came with baggage - massive bundle sizes and complex distribution. A simple markdown editor shouldn’t need 150MB of Chromium.

Tauri offered a different path: Rust backend, system WebView, and single-executable output. The documentation promised 10-15MB bundles. I was sceptical but curious.

The final FlipMD executable? 2.5MB. That’s not a typo. The target was under 20MB and I beat it by nearly 90%.

The Build Timeline

This project used BlogLog to capture the development story. Looking back at the timeline, the whole MVP took two focused sessions.

Session 1 (Jan 19th evening):

  • 21:34 - Initial project setup: Tauri + React + TypeScript
  • 21:46 - First win: project compiles successfully
  • 22:35 - File open/save operations working
  • 22:42 - View modes with markdown rendering complete

Session 2 (Jan 20th afternoon):

  • 16:39 - Auto-save on focus loss implemented
  • 16:44 - CodeMirror integrated with syntax highlighting
  • 16:49 - Scroll sync working between editor and preview
  • 16:55 - Windows file association via registry
  • 17:55 - Double-click .md files working end-to-end
  • 18:07 - MVP shipped to GitHub

Two sessions. Maybe four hours total. From idea to working desktop application.

The Technical Choices That Mattered

CodeMirror over Monaco: Monaco (the VS Code editor) is powerful but heavy. CodeMirror 6 gave me everything I needed - line numbers, syntax highlighting, search, undo/redo - at roughly half the bundle size.

Percentage-based scroll sync: The split view needed synchronised scrolling between editor and preview. The simple approach (matching scroll percentages) worked well enough. Line-based mapping would be more accurate but significantly more complex. Good enough shipped; perfect didn’t.

Session-only settings: Settings like auto-save preference and view mode aren’t persisted yet. They reset when you close the app. This was a deliberate scope cut - persistence adds complexity and I wanted to ship an MVP fast.

Registry for file association: Windows integration meant diving into the registry. Tauri’s Rust backend made this straightforward - a single button click registers FlipMD as the default .md handler.

What Claude Code Enabled

This project would have taken me weeks without AI assistance. The Rust backend, the Tauri plugin system, the Windows registry integration - these aren’t technologies I’m deeply familiar with.

Claude Code handled the implementation details while I focused on what mattered: does this feel right? Is the scroll sync smooth? Does the keyboard shortcut make sense?

The pattern that emerged: describe what I want, review what gets built, adjust, repeat. The AI handled the syntax; I handled the judgement calls.

The Features That Made It

The MVP shipped with more than I expected:

  • Three view modes: Raw, split, and preview - cycled with Ctrl+E
  • Live preview: Markdown renders as you type
  • Syntax highlighting: Proper markdown colouring in the editor
  • Line numbers: Essential for navigation
  • Scroll sync: Editor and preview move together
  • Auto-save: Optional save on focus loss
  • Windows integration: Set as default .md handler
  • Keyboard shortcuts: Ctrl+S, Ctrl+O, Ctrl+N, Ctrl+E

All in 2.5MB.

What I Learned

Scope cuts enable shipping: Every feature I didn’t build made the MVP possible. No dark mode, no recent files, no settings persistence. Those can come in v2. The goal was a usable tool, not a feature-complete application.

Tauri delivers on its promises: The bundle size, the native feel, the Windows integration - it all worked as advertised. I’ll reach for Tauri again for desktop projects.

BlogLog captures context you’d otherwise lose: Looking back at the timeline, I can see exactly when each piece clicked into place. Without those timestamps, I’d be reconstructing from memory and missing the details.

What’s Next

I’m using FlipMD as my daily markdown editor now. That’s the real test - does it actually replace the tools I was using before?

The v2 wishlist is growing:

  • Dark/light theme toggle
  • Settings persistence
  • Recent files list
  • Word count
  • Export to HTML

But honestly, the MVP might be enough. Sometimes a tool that does one thing well is exactly what you need.


FlipMD is open source on GitHub. If you spend time editing markdown on Windows, give it a try.