Hi, I'm Nick Blokhin
Software architect designing and building web products, cloud systems,
and Apple-platform apps with JavaScript, Python, Rust, and Swift
Home / My projects / Texodus
Texodus
Markdown editor for macOS, Windows, and Linux

Texodus is a modern, fast, and lightweight Markdown editor and viewer. It is a native cross-platform desktop app that offers a comfortable writing environment with full support for GitHub Flavored Markdown.

The editor combines live preview with a distraction-free interface: split view, focus mode, and preview-only layouts, a workspace sidebar with a file tree, tabs and multiple windows, quick open with fuzzy search, and document search with regex support. Mermaid diagrams, local images, and export to standalone HTML or PDF are built in.

Texodus is open-source and local-first — no telemetry, no cloud. Your documents never leave your machine.

Technologies used:
Texodus screenshot

Behind the scenes

The trickiest part of Texodus was rendering local images. The app ships with a strict Content Security Policy, and the webview has no direct access to the filesystem — so a plain ![](images/foo.png) in a document cannot simply be loaded from disk. Image paths are resolved against the open document's directory and served through Tauri's asset protocol, which gives the preview exactly enough access to render the document and nothing more.

Keeping the live preview fast took real work too. Every keystroke potentially triggers GitHub Flavored Markdown parsing with marked.js, sanitization with DOMPurify, syntax highlighting with Prism, and Mermaid diagram rendering. The pipeline is debounced so typing stays smooth even in large documents, and Mermaid diagrams are re-themed on the fly to match the active color scheme — there are ten of them, each with light and dark variants.

The most unusual problem turned out to be Linux packaging. The AppImage bundled Wayland and DRM client libraries that conflicted with the host's Mesa drivers and caused EGL initialization failures on recent distributions. The fix lives in the release pipeline: it strips those libraries from the AppImage after packaging so they resolve from the host system instead. A good reminder that "cross-platform" really means three separate platforms, each with its own quirks.