A simple Markdown editor built for focused writing.
miikun is an Electron + React + TypeScript desktop Markdown editor I built because I wanted a simple place to write. It
edits plain .md and .txt files, saves password-protected .mii files, and keeps the UI quiet so the
document stays in front.
Use it when you want local files, native desktop shortcuts, tabs, and preview without a workspace or account.
- Simple local editing for
.md,.txt, and encrypted.miifiles - Multi-tab workflow with dirty-state indicators, tab closing, and drag reordering
- Optional live Markdown preview with tables, checkboxes, footnotes, anchors, definition lists, and Shiki syntax highlighting
- Password prompt for opening and saving
.miifiles - Native desktop menus and shortcuts for file, edit, preview, theme, zoom, and window controls
- Light, dark, and system themes, plus an Always on Top mode for reference notes
- Drag-and-drop file opening
- URL paste helper that turns a pasted URL into a Markdown link when the page title can be read
Prerequisites:
- Node.js
- npm
Install dependencies and launch the Electron app:
npm install
npm run electron:serveThe development server is managed by electron-vite and Vite. Browser-only npm run serve / npm run build
scripts are not defined because the renderer uses Electron and Node APIs directly.
| Action | Shortcut / Path |
|---|---|
| New tab | CmdOrCtrl+T or CmdOrCtrl+N |
| Open file | CmdOrCtrl+O or drag a file into the window |
| Save | CmdOrCtrl+S |
| Save as | CmdOrCtrl+Shift+S |
| Close tab | CmdOrCtrl+W |
| Next / previous tab | Ctrl+Tab / Ctrl+Shift+Tab |
| Toggle preview | View -> Toggle Preview Panel |
| Change theme | View -> Theme |
| Always on Top | CmdOrCtrl+Shift+T |
To create an encrypted note, save the document with the .mii extension and enter a password. Opening that
file later asks for the password before the content is loaded.
# Run the Electron app in development
npm run electron:serve
# Build the production desktop app
npm run electron:build
# Build Electron main and renderer output without packaging
npm run prebuild
# Lint JavaScript, TypeScript, and React files
npm run lint
# Type-check TypeScript sources
npm run typecheck
# Check SCSS
npm run lint:scss
# Auto-format SCSS
npm run format:scssThe current production build configuration targets a macOS zip package.
miikun keeps the Electron main process small and puts the editor workflow in the React renderer. Third-party libraries are isolated behind adapter modules so the rest of the app depends on app-facing APIs instead of direct library imports.
Key areas:
src/adapters/wraps CodeMirror, markdown-it/Shiki, filesystem, encryption, and Electron APIssrc/services/owns editor commands, file operations, render sequencing, menus, and tab document statesrc/components/contains the editor, tab bar, toolbar, drag-and-drop overlay, and password promptsrc/services/andsrc/adapters/define the boundaries between editor state, file operations, preview rendering, and commands
Issues and focused pull requests are welcome. Before opening a PR, run:
npm run lint
npm run lint:scssThere is no automated test suite yet. For changes that affect behavior, also launch the app with
npm run electron:serve and verify the edited workflow manually.
MIT
