一个基于 Vite + Vue3 + TypeScript + Electron 开发的本地文档管理系统,支持 Markdown 编辑和多层级文档组织。
- ✅ 创建知识库(自定义名称、头像表情、简介)
- ✅ 编辑知识库(右键菜单快速编辑)
- ✅ 知识库列表展示(卡片式布局)
- ✅ 搜索知识库(支持名称和简介搜索)
- ✅ 删除知识库(级联删除所有文档)
- ✅ 右键菜单(快捷操作)
- ✅ 创建文件和文件夹
- ✅ 重命名文件和文件夹(右键菜单)
- ✅ 拖拽移动和排序(鼠标拖拽)✨
- ✅ 无限层级的文件目录结构
- ✅ 树形目录展示(支持展开/折叠)
- ✅ 删除文件/文件夹(级联删除子项)
- ✅ 文件夹内快速创建子项(右键菜单)
- ✅ 右键菜单(丰富的上下文操作)
- ✅ Cherry Markdown 专业编辑器
- ✅ 所见即所得单栏模式
- ✅ 丰富的工具栏(格式化、插入等)
- ✅ 图片管理(粘贴/拖拽自动保存到本地)
- ✅ 快捷键保存(Cmd/Ctrl + S)
- ✅ 代码块语法高亮
- ✅ 类 Word 编辑体验
- ✅ 本地 JSON 文件存储
- ✅ 自动保存到 Electron userData 目录
- ✅ 数据安全可靠
- ✅ 全局设置入口(右上角齿轮图标)
- ✅ 图片清理功能(自动扫描未使用图片)
- ✅ 智能识别和安全删除
- ✅ 图片预览和二次确认
npm installnpm run electron:dev这将启动 Vite 开发服务器和 Electron 应用,支持热重载。
npm run dev:web访问 http://localhost:5173 即可在浏览器中使用。
# 为 macOS M1 构建
npm run build:mac
# 通用构建(包含类型检查)
npm run build:mac:check构建完成后,应用程序将在 release 目录中生成。
# 构建 Web 版
npm run build:web
# 预览构建结果
npm run preview:web构建完成后,静态文件将在 dist-web 目录中生成,可部署到任何静态网站托管服务。
部署到 GitHub Pages:
# 自动部署(推荐):推送代码到 main 分支即可自动部署
git push origin main
# 手动部署:运行部署脚本
./deploy.sh# 创建版本标签
git tag v1.0.0
# 推送标签(自动触发构建和发布)
git push origin v1.0.0详见:Release 发布指南 | 快速发布
本项目支持两种运行方式:
- Electron 桌面版 - 使用本地文件系统存储,完整的桌面应用体验
- Web 浏览器版 - 使用 IndexedDB 存储,无需安装即可使用
通过存储抽象层设计,两个版本共享相同的代码库,根据运行环境自动选择合适的存储方案。
详见:双版本构建指南
查看 docs/ 目录获取所有详细文档:
- 双版本构建指南 - Electron 版 vs Web 版
- 功能实现文档
- 问题修复记录
- 测试与调试指南
- 使用技巧和最佳实践
- 点击右上角「➕ 创建知识库」按钮
- 填写知识库名称(必填)
- 选择一个表情作为头像
- 填写简介(可选)
- 点击「创建」
- 进入知识库:点击知识库卡片或右键选择「打开」
- 编辑知识库:右键卡片选择「编辑」
- 搜索知识库:在搜索框输入关键词
- 删除知识库:右键选择「删除」或点击卡片右上角的 🗑️ 图标
- 快速创建:在空白处右键选择「创建知识库」
在知识库详情页:
方式一:使用按钮
- 点击右上角「➕ 新建」按钮
- 选择类型(文件或文件夹)
- 输入名称
- 点击「创建」
方式二:使用右键菜单(推荐)
- 在空白处右键 → 选择「新建文件」或「新建文件夹」
- 在文件夹上右键 → 选择「新建文件」或「新建文件夹」在其内创建
- 在左侧文档树中点击文件
- 在右侧 Cherry Markdown 编辑器中编写
- 所见即所得的编辑体验
- 工具栏:快速插入格式
- 粘贴图片:自动保存到本地
- 使用
Cmd/Ctrl + S或点击「💾 保存」按钮保存
详见 IMAGE_MANAGEMENT.md 了解图片管理功能
- 重命名:右键文件或文件夹,选择「重命名」
- 移动:按住并拖动文件/文件夹到目标位置 ✨
- 拖到文件夹上部/下部:放在前面/后面
- 拖到文件夹中部:放入文件夹内
- 拖到空白区域:移到根目录末尾 🆕
- 排序:在同一层级内拖动调整顺序 ✨
- 删除:右键选择「删除」或悬停在文档上点击 🗑️ 图标
- 快速操作:使用右键菜单获取更多选项
详见 DRAG_DROP.md 和 DRAG_TO_ROOT.md 了解完整的拖拽功能
强大的所见即所得 Markdown 编辑器,详见 CHERRY_MARKDOWN.md
demo/
├── electron/ # Electron 主进程
│ ├── main.ts # 主进程入口
│ ├── preload.ts # 预加载脚本
│ ├── storage.ts # 数据存储
│ ├── image-storage.ts # 图片存储
│ └── ipc-handlers.ts # IPC 通信处理
├── src/
│ ├── components/ # Vue 组件
│ │ ├── DocumentTree.vue # 文档树组件
│ │ ├── MarkdownEditor.vue # Markdown 编辑器
│ │ └── ContextMenu.vue # 右键菜单
│ ├── views/ # 页面视图
│ │ ├── KnowledgeBaseList.vue # 知识库列表
│ │ └── KnowledgeBaseDetail.vue # 知识库详情
│ ├── stores/ # Pinia 状态管理
│ │ └── knowledge.ts # 知识库状态
│ ├── router/ # Vue Router
│ │ └── index.ts # 路由配置
│ ├── types/ # TypeScript 类型
│ │ └── index.ts # 类型定义
│ ├── App.vue # 根组件
│ ├── main.ts # Vue 应用入口
│ └── style.css # 全局样式
├── docs/ # 📚 项目文档目录
│ ├── README.md # 文档索引
│ ├── QUICK_START.md # 快速开始
│ ├── FEATURES.md # 功能特性
│ └── ... # 更多技术文档
├── build/ # 🎨 构建资源
│ ├── README.md # 图标说明
│ └── icon.icns # 应用图标(需自行添加)
├── package.json # 项目配置
├── vite.config.ts # Vite 配置
└── tsconfig.json # TypeScript 配置
- 框架:Vue 3(Composition API)
- 构建工具:Vite 5.x
- 桌面框架:Electron 28.x
- 语言:TypeScript 5.x
- 路由:Vue Router 4.x
- 状态管理:Pinia 2.x
- Markdown 编辑器:Cherry Markdown 0.8.x
- 图标库:Font Awesome 6.x
数据存储在 Electron 的 userData 目录:
- macOS:
~/Library/Application Support/vite-vue3-electron-demo/data.json - Windows:
%APPDATA%\vite-vue3-electron-demo\data.json - Linux:
~/.config/vite-vue3-electron-demo/data.json
Cmd/Ctrl + S:保存当前文档
- 知识库列表:空白处右键创建,卡片上右键打开/编辑/删除
- 文档目录:空白处右键新建,节点上右键重命名/删除
- 文件夹:右键可在其内快速创建文件或子文件夹
详见 CONTEXT_MENU.md 了解完整的右键菜单功能
- 🎯 简洁现代的 UI 设计
- 🎨 Font Awesome 专业图标系统
- 📱 响应式布局
- ⚡ 流畅的过渡动画
- 🖱️ 美观的滚动条样式
- 🎭 统一的视觉风格
- 暂不支持多选拖动(一次只能拖一个)
- 暂不支持全局搜索文档内容
- 暂不支持跨知识库移动文档
- 暂不支持图片自动清理(需手动清理)
- 文档重命名 ✅
- 右键菜单 ✅
- 编辑知识库 ✅
- 拖拽排序和移动 ✅
- 图片上传和管理 ✅
- Cherry Markdown 编辑器 ✅
- Font Awesome 图标 ✅
- 多选拖动
- 全文搜索
- 图片自动清理
- 导出为 PDF/HTML
- 文档标签系统
- 云同步支持
MIT License
感谢以下开源项目: