opqnext/moji-docs 预览 preview

opqnext/moji-docs

MojiDocs 是一款跨平台的 Markdown Wiki 桌面应用,基于 Electron + Vue 3 + SQLite 构建。

项目介绍Project Overview

MojiDocs 是一款基于 Electron + Vue 3 + SQLite 的离线优先 Markdown 知识库桌面应用。核心能力:以 .md 文件为唯一数据源,SQLite FTS5 提供全文搜索,Git 实现版本管理与同步,兼容 Obsidian、Hugo。适用于本地知识管理与跨平台写作。需注意:macOS 未签名安装时需通过终端执行 xattr -cr 或右键打开绕过 Gatekeeper。

MojiDocs is an offline-first Markdown wiki desktop app built with Electron, Vue 3, and SQLite. Its core capability treats .md files as the single source of truth, while SQLite FTS5 powers full-text search and Git handles versioning and scheduled sync with conflict detection. It is suited for personal knowledge management across macOS, Windows, and Linux. Caveat: the macOS build is unsigned, so users must run xattr -cr or right-click Open to bypass Gatekeeper warnings.

或使用命令行安装(适合开发者)Or use CLI install (for developers)

命令行安装CLI Install

dsh plugin --profile web add github:opqnext/moji-docs

opqnext/moji-docs 加入你的 DSH 配置(web profile)即可启用。

READMEREADME

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

上一个 Prev dsh-funpack 下一个 Next dsh-obsidian-math