A minimalist, local-first note app for desktop.
Built with Electron, TypeScript, SQLite, and TipTap / ProseMirror.
- Local-first storage with SQLite
- Optional auto-export to markdown files
- Fast note-search with FTS5
- Markdown-focused editing with TipTap / ProseMirror
- Connect and organize notes with links and tags
- Export notes to Markdown, Plain Text, HTML, JSON and PDF
- Import notes from Markdown, Plain Text, HTML and JSON
- Focus Mode and adjustable editor width (Ultrawide support)
- Light and dark theme support
- Electron
- TypeScript
- TipTap / ProseMirror
- electron-vite
- Vite
- DOMPurify
- Zod
- Lucide
Requirements:
- Node.js 20+
- npm 10+
git clone https://github.com/MZO26/MZO.md.git
cd MZO.md
npm install| Command | Description |
|---|---|
npm run dev |
Start development mode |
npm run pack:mac |
Build macOS app |
npm run pack:win |
Build Windows app |
npm run pack:linux |
Build Linux app |
npm run typecheck |
Run TypeScript type check |
Note
Shortcuts use $mod which maps to Ctrl on Windows/Linux and Cmd on macOS.
Click to view all App Shortcuts
| Shortcut | Action |
|---|---|
| Mod + N | Create new note |
| Mod + G | Open global search |
| Mod + F | Open doc search |
| Mod + S | Toggle selection |
| Mod + O | Toggle sidebar |
| Mod + . | Toggle toolbar |
| Mod + W | Set editor width |
| Mod + , | Open settings |
| Mod + + / Mod + = | Zoom in |
| Mod + - | Zoom out |
| Mod + 0 | Reset zoom |
| F11 | Toggle focus mode |
| Mod + P | View recent notes |
Click to view all Editor Shortcuts
| Shortcut | Markdown | Action |
|---|---|---|
| History & Selection | ||
| Mod + Z | Undo | |
| Mod + Y | Redo | |
| Mod + Shift + Z | Redo | |
| Mod + A | Select all | |
| Inline Formatting | ||
| Mod + B | **text** |
Bold |
| Mod + I | *text* |
Italic |
| Mod + S | ~~text~~ |
Strikethrough |
| Mod + H | ==text== |
Highlight |
| Mod + E | `code` |
Inline code |
| Mod + Shift + E | $math$ |
Inline Math |
| Headings & Paragraphs | ||
| Mod + Shift + 1 | # |
Heading 1 |
| Mod + Shift + 2 | ## |
Heading 2 |
| Mod + Shift + 3 | ### |
Heading 3 |
| Mod + Shift + 4 | #### |
Heading 4 |
| Mod + Shift + 5 | ##### |
Heading 5 |
| Mod + Shift + 6 | ###### |
Heading 6 |
| Lists | ||
| Mod + Shift + O | 1. |
Ordered list |
| Mod + Shift + L | - |
Bullet list |
| Mod + Shift + T | [] |
Task list |
| Tab | Indent list item | |
| Shift + Tab | Outdent list item | |
| Enter | Next list item | |
| Blocks & Elements | ||
| Mod + Shift + B | > |
Blockquote |
| Mod + Shift + C | ``` |
Code block |
| Mod + Shift+ M | $$math$$ |
Math block |
| Mod + Shift + R | --- |
Horizontal rule |
| Shift + Enter | Hard break (<br>) |
|
| Links & Media | ||
| Mod + Alt + Enter | Open Link | |
| Mod + K | Toggle Link | |
| Mod + Alt + I | Insert image | |
| Tables | ||
| Mod + Alt + T | Insert table | |
| Mod + Alt + ↓ | Add row after | |
| Mod + Alt + ↑ | Add row before | |
| Mod + Alt + → | Add column after | |
| Mod + Alt + ← | Add column before | |
| Mod + Alt + Backspace | Delete table | |
| Editor Controls | ||
| Mod + Shift + V | Paste without formatting | |
| Escape | Remove focus from editor | |
| Mod + Shift+Enter | Insert Space at end of a block |
.
├── electron/ # Main process
├── shared/ # Shared types, constants, schemas
└── src/ # UI, components, settings, styles, state
flowchart TD
A[Renderer] -- IPC via preload --> B[Main Process]
B --> C[(SQLite Database)]
I'm always looking to improve this project. If you find a bug or have a feature suggestion, please let me know.
MIT