moji-docs
MojiDocs 是一款跨平台的 Markdown Wiki 桌面应用,基于 Electron + Vue 3 + SQLite 构建。
- Stars
- 6
- Language
- Vue
- Created
- Apr 16, 2026
- Updated
- Jun 16, 2026
Introduction
MojiDocs
Offline-first Markdown Wiki Desktop App
Git tracks files, SQLite indexes them — your data stays yours
Features · Download · Quick Start · Tech Stack · Development · License
Overview
MojiDocs is a cross-platform Markdown Wiki desktop app built with Electron + Vue 3 + SQLite.
Core philosophy: .md files are the single source of truth, tracked and synced via Git. SQLite serves purely as a full-text search index and can be rebuilt from files at any time. Your notes are stored as standard Markdown in the local filesystem, fully compatible with Obsidian, Hugo, Hexo, and more.
Features
Document Management
- Create, edit, delete, move, and pin documents/directories
- Tree-structured browsing (Recent / All / Tree views)
- Drag-and-drop
.mdfile import
Markdown Editor
- Dual-pane live preview / single-pane / preview-only mode
- Toolbar: bold, italic, heading, quote, list, link, image, code block, table
- Paste-to-upload images (screenshot → Ctrl+V → auto-saved to
assets/) - Multiple Markdown rendering themes (GitHub, Juejin, etc.)
Search & Versioning
- SQLite FTS5 full-text search (keyword highlighting + context snippets)
- Git version history (browse, preview, rollback)
Sync & Export
- Scheduled Git sync (pull + push with conflict detection)
- PDF export / print
- Offline-first — all operations complete locally
Customization
- Custom theme colors (color picker + hex input)
- Dashboard (article/directory/version stats)
- Trash (soft delete + cascading restore)
Download
Go to GitHub Releases to download the installer for your platform:
| Platform | Format |
|---|---|
| macOS | .dmg |
| Windows | .exe |
| Linux | .AppImage / .deb |
macOS Installation Note
Since the app is not signed with an Apple Developer certificate, macOS may show "damaged file" or "unverified developer" warnings. Fix with either method:
Method 1: Run in Terminal (recommended)
xattr -cr /Applications/MojiDocs.app
Method 2: Right-click the app icon → select "Open" → click "Open" in the dialog
This is a macOS Gatekeeper restriction, not an issue with the app itself. Required once after each install or update.
Quick Start
Prerequisites
- Node.js ≥ 18
- npm ≥ 9
Development
git clone https://github.com/opqnext/moji-docs.git
cd moji-docs
npm install
npm run dev
Build
npm run build # Compile
npm run package # Package as installer (output in release/)
Tech Stack
| Technology | Version | Purpose |
|---|---|---|
| Electron | 33 | Cross-platform desktop framework |
| Vue 3 | 3.5 | Frontend UI framework |
| electron-vite | 2.3 | Build tool |
| better-sqlite3 | 11 | SQLite database (index + FTS5 full-text search) |
| marked | 17 | Markdown rendering |
| highlight.js | 11 | Code syntax highlighting |
| simple-git | 3.27 | Git sync |
| chokidar | 3.6 | File system watching |
| electron-builder | 25 | App packaging |
Project Structure
moji-docs/
├── main/ # Main process (Node.js)
│ ├── index.ts # Entry: window, protocols, IPC
│ ├── database.ts # SQLite initialization
│ ├── indexer.ts # File → index builder
│ ├── git-sync.ts # Git sync scheduler
│ ├── file-watcher.ts # File system watcher
│ └── ipc/ # IPC channels
├── preload/ # Preload scripts
├── renderer/ # Renderer process (Vue 3)
│ └── src/
│ ├── views/ # Page components
│ └── components/ # Shared components
├── assets/ # App icons
├── scripts/ # Utility scripts
└── doc/ # Project documentation
Development Guide
Hot Reload
| Change | Restart Required? |
|---|---|
renderer/ Vue/CSS files | No (HMR hot reload) |
main/ main process code | Yes, re-run npm run dev |
Debugging
- Renderer process: DevTools opens automatically in dev mode, or press
Cmd+Option+I - Main process:
console.log()outputs to terminal, or use--inspect=9229with Chrome DevTools
Releasing
- Update
versioninpackage.json npm run build && npm run package- Create a Release on GitHub Releases (tag:
v1.x.x) - Upload installers
Data Storage
User data is stored in a user-selected local directory:
~/MojiDocs/ # Notes root (= Git repo root)
├── .moji/ # App data (not synced)
│ ├── index.db # SQLite index (rebuildable)
│ └── config.json # Local settings
├── assets/ # Image assets (Git tracked)
├── Getting Started.md # Note files
└── Projects/ # Directories
└── Project A.md
- Uninstalling or reinstalling the app does not affect user data
.moji/is automatically excluded via.gitignoreand won't sync to remote
Star History
License
MIT License © 2018-2025 opqnext