Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

121 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MarkDoc

A lightweight, cross-platform desktop application for viewing Markdown files with a clean, native-looking interface. One window per file. No editor. By Stravica.

Features

  • One window per file

    • Opening a file either transitions the Welcome window into a viewer in place, or spawns a new viewer window.
    • Opening an already-open file focuses the existing window (path-based duplicate detection, canonicalised so .., symlinks, and equivalent paths collapse to the same window).
    • OS "Open With…", tauri-plugin-single-instance, recents, and the File menu all route through the same Rust command (open_file_in_window).
  • Welcome screen

    • Shown when the app launches with no file, or when you open the app with no arguments via the dock/taskbar.
    • Lists recent files (up to 20) with title + path, click-to-open, remove-one, and clear-all.
    • "Open File…", "New from Clipboard", and "User Guide" actions alongside the current version + build-hash.
  • New from Clipboard (Cmd/Ctrl+N)

    • Saves the clipboard's text as a new Markdown file and opens it in a window.
    • Suggests a filename from the first heading (or first line) of the content.
  • Reveal in file manager

    • File → Reveal in Finder / Show in File Explorer (or the toolbar folder icon) selects the open file in the OS file manager.
  • Native experience

    • True native menus (File, Edit, View, Window, Help — plus the MarkDoc app menu on macOS).
    • System fonts (San Francisco on macOS, Segoe UI on Windows).
    • Automatic dark/light theme following OS preference.
    • Tiny bundle — Tauri ships the OS WebView rather than bundling Chromium.
  • Rendering

    • CommonMark-compliant via markdown-it.
    • Prism syntax highlighting in code blocks.
    • Sanitised HTML + external-link routing via tauri-plugin-opener.
    • Collapsible document outline sidebar auto-built from headings.
  • Themes

    • Five built-in themes: Default, Cobalt, Sage, Amber, Slate.
    • Choice persists in localStorage and applies to every new window opened after the change.
  • Zoom + Auto-resize

    • Cmd/Ctrl + / - / 0 for zoom in/out/reset; persisted per viewer.
    • Optional auto-resize fits the window to document width on load.
  • Export

    • Export to HTML (standalone, theme CSS inlined).
    • Export to PDF via headless Chromium (headless_chrome).
    • Export progress overlay with cancel support.
  • OS integration

    • File associations for .md / .markdown on macOS, Windows, and Linux.
    • Windows installer registers MarkDoc in Default Apps / Open With as a "Viewer".
    • Second-instance launches forward their argv into the live process.

Screenshots

Welcome screen

Recents grid with Open / Help actions and the current build version.

Viewer

Rendered markdown with optional outline sidebar, theme selector, zoom, and export controls.

Installation

Direct Downloads

See the Releases page for the latest installers.

  • macOS.app.zip (Apple Silicon) and .dmg (Intel)
  • Windows.msi installer (64-bit)
  • Linux.deb (Debian/Ubuntu) and .AppImage

Installation Instructions

macOS

Option 1 — App Bundle:

  1. Download the .app.zip file.
  2. Extract and drag MarkDoc.app to your Applications folder.
  3. Right-click → "Open" the first time to bypass Gatekeeper.

Option 2 — DMG Installer:

  1. Download the .dmg file.
  2. Open the DMG and drag MarkDoc to your Applications folder.

Windows

  1. Download the .msi installer.
  2. Run it and follow the wizard.

After install, MarkDoc appears in Settings → Default Apps and in the right-click "Open With" menu as a registered Markdown viewer.

Linux

For Debian/Ubuntu (using .deb):

sudo dpkg -i MarkDoc_<version>_amd64.deb

For other distributions (using AppImage):

chmod +x MarkDoc_*.AppImage
./MarkDoc_*.AppImage

Usage

Keyboard shortcuts

  • Cmd/Ctrl+N — New from Clipboard
  • Cmd/Ctrl+O — Open file
  • Cmd/Ctrl+W — Close window
  • Cmd/Ctrl+Shift+H — Export to HTML
  • Cmd/Ctrl+Shift+P — Export to PDF
  • Cmd/Ctrl++ / = — Zoom in
  • Cmd/Ctrl+- — Zoom out
  • Cmd/Ctrl+0 — Reset zoom
  • Cmd/Ctrl+\ — Toggle outline sidebar

Menus

File — New from Clipboard…, Open…, Open Recent ▸ (dynamic), Reveal in Finder (platform label), Close Window, Export ▸ (HTML / PDF)

Edit — Copy, Select All (native roles)

View — Zoom In / Out / Actual Size, Theme ▸ (Default / Cobalt / Sage / Amber / Slate), Toggle Sidebar, Toggle Auto-resize

Window — Minimize, Maximize, (dynamic list of open file windows — click to focus)

Help — User Guide

Building from source

Prerequisites

Setup

# Clone the repository
git clone https://github.com/Stravica/markdoc.git
cd markdoc

# Install dependencies
npm install

# Desktop dev (hot reload)
npm run tauri:dev

# Build frontend only
npm run build

# Full desktop bundle
npm run tauri:build

Quality gates

npm run typecheck       # tsc --noEmit
npm run lint            # eslint .
npm run format          # prettier --write .
npm run format:check    # prettier --check .
npm run test:unit       # Vitest
npm run test:coverage   # Vitest + v8 coverage
npm run test:e2e        # Playwright (starts dev:web automatically)
npm run test:all        # typecheck + lint + unit + e2e

Rust-side checks live under src-tauri/:

cd src-tauri
cargo check --locked
cargo clippy --locked -- -D warnings
cargo test --locked

Web-mode harness

npm run dev:web launches Vite with VITE_TARGET=web, swapping the Tauri platform bridge for an in-memory mock (src/platform/web.ts). This is what Playwright drives, and what agents should use for fast UI iteration without needing the Tauri shell. See docs/testing.md.

Build output

After building, installers end up under:

  • macOS: src-tauri/target/release/bundle/dmg/ (and macos/ for the raw .app)
  • Windows: src-tauri/target/release/bundle/msi/
  • Linux: src-tauri/target/release/bundle/deb/ and appimage/

Technology stack

Why Tauri?

  • Smaller bundle — tens of MB vs 100+ MB for Electron.
  • Lower memory — uses the OS WebView.
  • Native menus — real OS menu bars rather than HTML approximations.
  • Rust backend — narrower attack surface with capability-scoped FS access.

Contributing

Contributions are welcome. See CONTRIBUTING.md.

License

MIT — see LICENSE.

Roadmap

Potential enhancements:

  • Search within document
  • Drag-and-drop file opening
  • Custom user-defined themes
  • Mermaid diagrams / math equations
  • Print support (beyond PDF export)

Acknowledgments

Support


Made by Stravica for the Markdown community.

About

A lightweight, cross-platform desktop application for viewing and editing Markdown files with a clean, native-looking interface.

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages