Back to home@opqnext

moji-docs

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

Stars
6
Language
Vue
Created
Apr 16, 2026
Updated
Jun 16, 2026

Introduction

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:

PlatformFormat
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

TechnologyVersionPurpose
Electron33Cross-platform desktop framework
Vue 33.5Frontend UI framework
electron-vite2.3Build tool
better-sqlite311SQLite database (index + FTS5 full-text search)
marked17Markdown rendering
highlight.js11Code syntax highlighting
simple-git3.27Git sync
chokidar3.6File system watching
electron-builder25App 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

ChangeRestart Required?
renderer/ Vue/CSS filesNo (HMR hot reload)
main/ main process codeYes, 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