A local-first Markdown note-taking app for macOS.
Built with Tauri + React. No cloud. No sync. Your notes, your machine.
- Go to Releases
- Download the
.dmgfor your architecture (Apple Silicon or Intel) - Open the DMG and drag Ragnar Notes into Applications
- Launch from Applications
Gatekeeper warning: System Settings → Privacy & Security → "Open Anyway"
Requires macOS 12+, Node.js 18+, Rust stable, and Xcode CLI tools.
git clone https://github.com/VidhyadharanSS/RagnarNotes.git
cd RagnarNotes
npm install
npm run tauri buildnpm run dev # Web preview at http://localhost:1420
npm run tauri dev # Native macOS window with hot-reload- Full GitHub Flavored Markdown — tables, task lists, footnotes, callouts
- Syntax highlighting for 150+ languages
- Split view (Edit + Preview side-by-side)
- Zen / Focus mode for distraction-free writing
- Smart Enter — auto-continues lists, tasks, blockquotes
- Slash commands (
/heading,/table,/code, etc.) - Undo/Redo with full snapshot history
- Inline emoji picker
- Callout blocks:
> [!NOTE],> [!WARNING],> [!TIP]
- Pin notes to top
- Color labels — 8 colors for visual organization
- Tags with Obsidian-style inline
#tagsuggestions - Move notes between folders via right-click
- Bulk select for trash/delete/export
- Import individual files or entire folders of
.mdfiles - Duplicate notes
- Hover preview cards
- Nested folder hierarchy with subfolder support
- Right-click context menu: Rename, Create Subfolder, Delete
- Drag-friendly folder tree with expand/collapse
- Knowledge graph — visual map of note connections
- Note templates — 8 prebuilt templates (Meeting, Journal, Project, etc.)
- Backlinks panel — see which notes link to the current note
- Outline panel — heading-based document structure
- Note history panel
- Bookmarks bar for quick access
- Quick Switcher for rapid note navigation
- PDF, Markdown, HTML export per note
- Bulk export — select multiple notes and export all at once
- Code block copy with visual "Copied" feedback
- 8 themes: Dark, Light, System, Rosé Pine, Nord, Catppuccin, Gruvbox, Solarized
- 14 font families across Sans-serif, Serif, and Monospace
- 10 accent colors
- Adjustable font size, line height, editor width
- Resizable sidebar and note list panels
- Full-screen reading and editing mode
- Auto-save with configurable delay (0.5s–10s)
- Spell check toggle
- Compact mode
- Word count in status bar
- Storage manager with usage info
- In-app update checker (checks GitHub releases)
| Shortcut | Action |
|---|---|
⌘K |
Command Palette / Search |
⌘O |
Quick Switcher |
⌘N |
New Note |
⌘, |
Settings |
⌘/ |
Toggle Sidebar |
⌘. |
Zen / Focus Mode |
⌘E |
Edit Mode |
⌘⇧P |
Preview Mode |
⌘⇧S |
Split View |
⌘⇧E |
Export Note |
⌘Z |
Undo |
⌘⇧Z |
Redo |
⌘B |
Bold |
⌘I |
Italic |
⌘` |
Inline Code |
⌘⇧X |
Strikethrough |
⌘⇧H |
Highlight |
npm test # 132 tests across 9 suites
npm run test:watch # Watch mode
npm run test:coverage # Coverage reportsrc/
├── components/
│ ├── editor/ MarkdownEditor, EditorToolbar, MarkdownPreview, StatusBar
│ ├── features/ CommandPalette, ExportModal, BulkExportModal, SettingsPanel,
│ │ NoteTemplates, NoteGraph, FolderTree, QuickSwitcher, ...
│ ├── layout/ Sidebar, NoteList, EditorPane, TitleBar, ResizeHandle
│ └── ui/ Toast, Tooltip, ContextMenu, HoverPreview, NoteColorPicker
├── hooks/ useTheme, useAutoSave, useKeyboardShortcut, useResizable, useUndoRedo
├── stores/ appStore, editorStore, notesStore, searchStore (Zustand)
├── utils/ format, sanitize, keyboard, markdown, fonts, exportPdf
├── styles/ globals.css (design tokens, prose, theme variables)
└── types/ index.ts
| Layer | Technology |
|---|---|
| Shell | Tauri 1.x (Rust) |
| Frontend | React 18, TypeScript 5 |
| Styling | Tailwind CSS 3, CSS custom properties |
| Animations | Framer Motion 11 |
| State | Zustand 4 (devtools + persist) |
| Markdown | marked (GFM) + custom renderer |
| Syntax | highlight.js |
| html2pdf.js | |
| Testing | Vitest |
| Build | Vite 5 |
MIT — Vidhya Dharan S S