[开源]Golang开发的类似百度文库、新浪爱问文库的开源文库系统
开源系统知识库
![[开源]Golang开发的类似百度文库、新浪爱问文库的开源文库系统](https://yy123.ink/api/img/1782602044309-2ghmh9.jpg)
一、开源项目简介

moredoc - 魔豆文库,由 深圳市摩枫网络科技(Morefun Network Technology Co., Ltd ) 使用 Golang 开发的类似百度文库、新浪爱问文库的开源文库系统,支持 TXT、PDF、EPUB、MOBI、Office 等格式文档的在线预览与管理,为 dochub文库的重构版本。
二、开源协议
使用Apache-2.0开源协议
三、界面展示
首页

列表页

文档详情页

文档上传页

搜索结果页

管理后台

四、功能概述
功能特征
- 前后端分离
- 注册登录以及密码找回
- 支持横幅
- 支持无限级分类
- 文档批量上传
- 支持回收站功能,删除的文档还可以恢复
- 支持office、pdf、txt、epub、mobi等多种文档格式预览
- 文档批量转换(普惠版)
- 全文搜索(普惠版)
注:当前只是 1.0 版本,只有PC站点,移动端适配以及小程序等更多功能将在后续版本推出。
功能清单
- 面板 个人资料 修改密码 退出登录
- 文档管理 分类管理 文档列表 回收站
- 用户管理 用户管理 角色管理 权限管理
- 横幅管理
- 单页管理
- 友链管理
- 评论管理
- 举报管理
- 附件管理
- 系统设置
使用手册
关于魔豆文库安装部署以及使用和二次开发等更详细的教程,详见书栈网《魔豆文库使用手册》
五、技术选型
技术栈
- Golang :gin + gRPC + GORM
- Vue.js : nuxt2 + element-ui
- Database : MySQL 5.7
二次开发
除了文件上传相关的接口,其他接口统一使用 proto 进行定义。
环境要求
- Golang 1.18+
- Node.js 14.16.0 (可用 nvm 管理)
- MySQL 5.7+
请自行配置相应环境。如在此过程中遇到错误,请根据错误提示自行通过 Google 或者百度解决。
目录结构
部分目录,在程序运行时自动生成,不需要手动创建
. ├── LICENSE # 开源协议 ├── Makefile # 编译脚本 ├── README.md # 项目说明 ├── api # proto api, API协议定义 ├── app.example.toml # 配置文件示例,需要复制为 app.toml ├── biz # 业务逻辑层,主要处理业务逻辑,实现api接口 ├── cmd # 命令行工具 ├── cache # 缓存相关 ├── conf # 配置定义 ├── dict # 结巴分词字典,用于给文档自动进行分词 ├── dist # 前端打包后的文件 ├── docs # API文档等 ├── documents # 用户上传的文档存储目录 ├── go.mod # go依赖管理 ├── go.sum # go依赖管理 ├── main.go # 项目入口 ├── middleware # 中间件 ├── model # 数据库模型,使用gorm对数据库进行操作 ├── release # 版本发布生成的版本会放到这里 ├── service # 服务层,衔接cmd与biz ├── sitemap # 站点地图 ├── third_party # 第三方依赖,主要是proto文件 ├── uploads # 文档文件之外的其他文件存储目录 ├── util # 工具函数 └── web # 前端Web
app.toml
# 程序运行级别:debug、info、warn、error
level="debug"
# 日志编码方式,支持:json、console
logEncoding="console"
# 后端监听端口
port="8880"
# 数据库配置
[database]
driver="mysql"
dsn="root:root@tcp(localhost:3306)/moredoc?charset=utf8mb4&loc=Local&parseTime=true"
showSQL=true
maxOpen=10
maxIdle=10
# jwt 配置
[jwt]
secret="moredoc"
expireDays=365
初始化
后端初始化
# 安装go依赖 go mod tidy # 初始化工程依赖 make init # 编译proto api make api # 修改 app.toml 文件配置 cp app.example.toml app.toml # 编译后端 go build -o moredoc main.go # 初始化数据库结构 ./moredoc syncdb # 运行后端(可用其他热编译工具),监听8880端口 go run main.go serve
前端初始化
# 切换到web目录 cd web # 安装依赖 npm install # 运行前端,监听3000端口,浏览器访问 http://localhost:3000 npm run dev
管理员初始账号密码
admin mnt.ltd
发布版本
以下为示例
# 打标签 git tag -a v1.0.0 -m "release v1.0.0" # 推送标签 git push origin v1.0.0 # 编译前端 cd web && npm run generate # 编译后端,编译好了的版本会放到release目录下 # 编译linux版本(Windows版本用 make buildwin) make buildlinux
鸣谢
感谢各开源项目为魔豆文库的开发奠定了基础。相关开源项目,后端依赖,详见 go.mod;前端依赖,详见 web/package.json。
评论