用AI开发了一个飞书
90后程序员小码哥用一个月碎片时间打造了个人知识管理平台"简享"。该平台采用前后端分离架构,前端基于Vue3+Tiptap编辑器实现飞书式的"所见即所得"编辑体验,支持Markdown和多种内容组件;后端采用SpringBoot实现多租户隔离、权限管理和内容保护功能。平台特色包括会员专属内容、防复制保护、密码访问等商业化功能,同时保持简洁易用的交互设计。小码
大家好,我是小码哥,90 后,一个喜欢在互联网折腾的人,对互联网有一种热爱之情,不亚于恋人,我说的热爱是愿意花时间、精力去研究东西,不知疲倦,同时也通过互联网搞钱,毕竟光喜欢还不够,还得变现,因为生活所迫,哈哈!不扯了,进入正题。
我一直有一个执念,想从头搭建一个自己的知识平台,把自己所学、所想、所获记录在内,就是一个博客,其实类似这种开源项目挺多,比如我试过不少开源博客(WordPress、mogu、halo 等等不下 10 种),mogu开源项目我向作者购买了源码,一开始觉得挺好的,用来学习挺不错,但是后来发现,维护成本有点高,因为mogu采用的是微服务架构,作为我来说,有点太沉重了,前后 又试了好几个开源平台,但要么冗重、要么不可控、要么编辑内容时,后来飞书知识库给了我很多灵感,特别是他的“可见即可得”的编辑器,以及编辑器中很多组件,体验起来非常的丝滑,于是我用了一个多月的碎片时间,参考飞书知识库,搭建了自己的知识管理平台,名叫简享,一个简洁的内容分享平台,从零搭起的、可控的、多租户的知识平台。
一、前端预览
(1)首页
设计风格采用现代化简约风格,导航栏包含知识分类、搜索、写文章入口、登录功能

(2)文章编辑器
点击写文章,即可进入文章编辑界面,也是为了这个编辑器,才开发了整个知识管理系统,同样,输入/即可弹出预设的组件,目前开发了几十种,后续根据实际情况,不断的完善。
会员组件
我先介绍一个知识付费的组件,这个组件只有会员用户才能看到里面的内容,也就是文章发布后,这里面的内容,才有成为会员才能查看。



markdown测试


其他组件
其他组件就不一一展示了整体效果下,




可以看到,这是非常简单,主要采用markdown编辑器,可见及可得,当然html标签页可以识别。

右边可以对文章大纲和正文字数进行统计

(3)文章发布
点击发布后,会弹出文章属性设置,文章的分类、摘要,另外我单独开发了文章访问控制权限,主要有是否允许复制、访问级别、访问密码,如果取消复制,那么用户就无法复制文章内容,如果启动密码,访问文章,比如通过密码才能访问。

禁止复制
禁止了所有复制方式,包括快捷键、右键复制,以及通过浏览器调试来复制,都进行了限制。如果用户想通过浏览器调试来复制,内容直接消失不见。

密码访问
如果是启动了密码访问,并设置了密码,普通用户访问就需要输入密码了。

二、后端预览
后端是只有管理员才有权限访问的,包含了文章管理,入口如下:

(1)仪表盘

(2)文章管理
包括文章的是否允许复制、置顶、推荐、编辑、查看、下线、删除等功能

(3)文章分类
文章分类可以动态管理,动态展示

(4)用户管理

vip用户在后台可以设置,并设置会员的有效期

(5)用户角色

(6)系统配置
这个地方很关键,文件服务器的配置、租户配置、网站基础信息、站长信息、



三、总体架构
技术架构
-
整体采用"前后端分离"的技术架构
-
后端以 Spring Boot + MyBatis-Plus 为核心,按业务模块拆分
-
前端以 Vue3 + Vite 为核心,辅以 Pinia、Element Plus、Tailwind 和 Tiptap 自研编辑器扩展
-
多租户隔离、文件存储与预览、完整的后台管理,配合 Nginx 做简洁部署
-
基本覆盖一个知识平台的全链路能力
项目结构
PYTHON复制
项目根目录/ ├── backend/ # 后端 Maven 多模块工程 ├── frontend/ # 前端 Vue3/Vite 工程


后端技术栈
后端可以自行增加模块,模块之间通过maven来管理,模块之间独立,开发更加灵活。
-
核心框架: Spring Boot 2.7.x
-
安全认证: Spring Security(JWT)
-
数据持久层: MyBatis-Plus(配合 PageHelper)、Druid 连接池
-
缓存: Redis
-
API 文档: Knife4j/Swagger
-
工具类: Lombok、MapStruct、Fastjson2、Hutool
-
数据库:、MySQL(生产)
-
文件存储: 七牛云 SDK
前端技术栈
-
核心框架: Vue 3 + Vite、TypeScript
-
状态管理: Pinia
-
路由: Vue Router
-
UI 组件: Element Plus
-
样式系统: Tailwind CSS
-
富文本编辑器: Tiptap(含自研扩展)
-
测试: Playwright(E2E)、Vitest(单元测试)
运行与部署
-
后端以传统 jar 运行,前端打包为静态资源,统一由 Nginx 托管
-
Vite 开发环境走 '/api' 代理到后端
-
开发环境 application-dev.yml 使用本地 MySQL/Redis
-
生产环境 application-prod.yml 使用云数据库与生产级 Druid 配置
后端详细说明
模块划分
|
模块名称 |
职责描述 |
|
simpleshare-common |
通用模块:工具类、常量、基础实体、通用配置、统一返回结构 |
|
simpleshare-framework |
核心框架模块:安全配置、租户上下文、Redis 集成、MVC配置 |
|
simpleshare-module-system |
系统模块:用户、角色、菜单、租户管理 |
|
simpleshare-module-article |
文章模块:文章与分类、草稿与发布、交互功能 |
|
simpleshare-module-infra |
基础设施模块:文件存储、上传、预览地址生成 |
|
simpleshare-server |
应用主工程:启动入口、统一配置 |
核心配置
依赖版本
-
Spring Boot 2.7.18
-
MySQL 驱动 8.0.x
-
MyBatis-Plus 3.5.x
-
Druid 1.2.x
-
PageHelper 1.4.x
安全与权限
认证机制
-
JWT 无状态登录,Token 放在 Authorization 请求头
-
expireTime 默认 8 小时超时
权限控制
-
Spring Security + RBAC 权限模型
-
菜单与权限码在系统模块定义
-
开放路由在白名单中明确列出
多租户设计
-
通过
TenantContextHolder注入租户上下文 -
接口层按租户隔离数据
-
支持通过域名、当前上下文等方式识别租户
-
ISysTenantConfigService提供租户配置查询服务
前端详细说明
项目结构
│ └── editor/ # 富文本编辑器组件
├── views/ # 页面组件
│ ├── portal/ # 门户页面
│ └── admin/ # 后台管理页面
├── router/ # 路由配置
├── stores/ # 状态管理(Pinia)
├── api/ # API 接口封装
└── config/ # 配置文件
编辑器设计
核心特性
-
基于 Tiptap 深度定制
-
命令面板(输入
/呼出) -
气泡菜单(选中文本显示)
-
多媒体支持(图片、视频、音频)
-
表格编辑功能
-
Markdown 区块支持
-
安全资源保护
-
文本样式:Bold、Italic、Underline、Highlight -
布局结构:BulletList、OrderedList、Blockquote -
媒体支持:Image、Video、Audio、Upload -
高级功能:Table、Iframe、SecureResource、MarkdownBlock -
交互增强:CommandsMenu、HeadingSelector、Placeholder
内容保护机制
-
复制限制(禁止复制、右键菜单)
-
选择限制(禁止文本选择)
-
截图防护(CSS 干扰)
-
按租户配置动态启用
安全策略
身份认证
-
JWT Token 认证机制
-
Token 超时自动刷新
-
无状态会话管理
访问控制
-
RBAC 权限模型
-
接口级别权限校验
-
数据权限隔离
内容保护
-
前端防复制保护
-
后端接口权限控制
-
敏感内容加密存储
防刷机制
-
请求频率限制
-
操作冷却期控制
-
异常行为监控
监控建议
-
日志按天切割,关键接口单独记录
-
Nginx 访问日志分析异常流量
-
数据库定期备份(7/30 天保留策略)
-
文件存储生命周期管理
与飞书编辑器的设计取舍
借鉴特性
-
✅ 命令面板(输入
/快速插入) -
✅ 气泡菜单(选中文本快捷操作)
-
✅ 块级编辑体验
-
✅ 多媒体内容无缝集成
差异化设计
-
🔄 Markdown 块嵌入(非全量转换)
-
🔄 安全资源扩展(权限控制内容)
-
🔄 多租户架构支持
-
🔄 自研表格组件(满足基础需求)
技术选型考量
-
基于 Tiptap 的扩展性优势
-
Vue 3 组合式 API 的开发体验
-
TypeScript 的类型安全保障
-
前后端分离的架构灵活性
未来规划
近期规划
-
[ ] 审核系统(楼层、审核、敏感词)
-
[ ] 评论系统(楼层、审核、敏感词)
-
[ ] 在线支付(楼层、审核、敏感词)
-
[ ] 互动功能完善(点赞、关注、收藏夹)
-
[ ] 搜索增强(全文检索、联想)
中期规划
-
[ ] 数据统计分析(阅读量、转化漏斗)
-
[ ] 商业化功能(付费解锁、会员体系)
-
[ ] 多租户主题定制
长期规划
-
[ ] 协同编辑(WebSocket/OT)
-
[ ] 内容治理(水印、防盗链)
-
[ ] 容器化部署(Docker)
结语
这个项目从一开始就不是为了堆功能,而是为了把"写作体验"和"内容可控"做到我满意的程度。飞书知识库的很多设计让我受益,但我更希望在自己掌控的技术栈里,让好的编辑体验自然延伸。技术上我尽量保持清晰的模块划分、合理的约定与可插拔的能力;产品上我坚持最小可用功能(MVF),把核心打稳,再逐步扩充。
如果你也想做一个自己的知识平台,可以联系我获取源码,如果你不懂技术,我也可以给你搭建一套属于你自己的知识管理平台。把你的内容体系、商业化逻辑、风格偏好都装进去。
更多推荐
所有评论(0)