moji-docs
其他 活跃维护

moji-docs

opqnext/moji-docs

Electron + Vue 3 + SQLite 构建,支持 Markdown 文档编辑、知识库搭建与本地离线管理,跨 Windows、macOS、Linux 多平台运行,界面简洁易上手,无需联网即可安全存储个人或团队知识资产。

6
Stars 标星
2
Forks 分支
6
Watchers 关注
0
Open Issues
Vue
主要语言
MIT
开源协议
642 KB
仓库大小
3 个月前
最后推送
一键安装扩展 / 插件指令
dsh plugin --profile web add github:opqnext/moji-docs
git clone https://github.com/opqnext/moji-docs.git
git clone git@github.com:opqnext/moji-docs.git
README.md main

English | 中文

MojiDocs

MojiDocs

Offline-first Markdown Wiki Desktop App
Git tracks files, SQLite indexes them — your data stays yours

Release Downloads Stars License Platform

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 .md file 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=9229 with Chrome DevTools

Releasing

  1. Update version in package.json
  2. npm run build && npm run package
  3. Create a Release on GitHub Releases (tag: v1.x.x)
  4. 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 .gitignore and won't sync to remote

Star History

Star History Chart

License

MIT License © 2018-2025 opqnext