我是原 MinDoc 的作者,是刚开始学 Golang 时开发一个项目,后面因为工作忙没时间维护了。
今年 Vide Coding 大火,过年期间使用 Codex 耗费 两个账号的双倍流量终于开发了一个新项目。
PlainDoc 是一个真正可落地的文档平台,而不是“仅能写 Markdown 的编辑器”。
我们希望它帮助团队实现三件事:
- 用 Markdown 快速搭建团队知识库/技术文档库
- 提供“编辑、阅读、管理”一体化能力,而不是单纯编辑器
- 以最低维护成本长期运行(单体部署、权限治理、可观测)
适用场景:
- 团队内部知识沉淀
- 技术文档中心
- 小中型项目文档门户
- 运维手册/流程文档管理
核心功能与亮点
功能
- 空间与文档树:支持空间、目录、文档的层级组织
- Markdown 编辑:左树 + 中间编辑 + 右侧预览的工作台体验
- 阅读系统:独立阅读页(
/r/:spaceId/:docId),适合分享与访问
- 权限模型:
owner / collaborator / reader 多角色访问控制
- 版本能力:文档版本号、冲突检测、修订记录
- 图片链路:上传、鉴权、静态回源、Markdown 直接渲染
- 后台治理:用户、空间、文档、主题、系统配置、审计管理
亮点
- 轻量但完整:一套系统同时覆盖编辑、阅读、权限与后台治理
- 单体部署体验:Go 主服务 + Node SSR Worker 子进程,无需独立 Node SSR 服务
- 渲染一致性:阅读 SSR 与编辑器预览复用同一套 Markdown 渲染链路
-
双 SSR 架构:
- 首页/分类页:Go 模板 SSR
- 阅读页:React SSR (由 Go 调度 Worker )
- 开发和生产都顺手:前端统一走后端 API 模式(
http),联调与生产一致
- 工程化可维护:统一响应协议、错误码体系、Docker + Compose 开箱部署
技术栈
后端(apps/server)
- Go
1.26
- Gin
1.11
- GORM
1.31
- 数据库驱动:SQLite / MySQL / PostgreSQL
- 默认 SQLite 驱动:
modernc.org/sqlite
前端(apps/web)
- React
19
- Vite
7
- TypeScript
5.9
- CodeMirror
6
- React Markdown + remark/rehype 渲染链
- Mermaid / KaTeX / 语法高亮
SSR
- 首页/分类页:Go
html/template
- 阅读页:Go 通过
stdin/stdout 调用 Node SSR Worker (非独立 Node 服务)
项目地址: https://github.com/lifei6671/plaindoc
官网: https://www.iminho.me