一个参考飞书编辑器的现代化风格内容分享平台,基于Spring Boot + Vue3构建,提供所见即所得的文本编辑体验,支持多租户SaaS架构、内容权限管控、复制权限控制、会员内容管理、AI教学、文章审核、系统配置等模块,具备完整的用户体系和响应式设计。
SimpleShare是一个多租户(SaaS)化的内容分享平台,具有以下核心特性:
- 多租户架构:支持多个独立租户,数据严格隔离,通过域名区分不同租户
- 集中式安全策略:租户管理员可全局控制内容复制权限和水印设置
- 现代化界面:基于Vue 3 + Element Plus的响应式设计
- 强大的编辑器:集成TipTap富文本编辑器,支持Markdown和富文本
- 灵活的权限系统:基于角色的访问控制(RBAC)
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
- 框架:Spring Boot 2.7.18
- 安全:Spring Security + JWT
- 数据库:MySQL 8.0 + MyBatis-Plus + Druid
- 构建工具:Maven
- API文档:Swagger + Knife4j
- 多租户:基于
tenant_id字段的逻辑隔离
- 框架:Vue 3.5.18 + TypeScript
- 构建工具:Vite 7.0.6
- UI组件:Element Plus 2.11.2
- 状态管理:Pinia 3.0.3
- 路由:Vue Router 4.5.1
- 样式:Tailwind CSS 3.4.17
- 编辑器:TipTap 3.4.4 + Vditor
- Web服务器:Nginx
- 应用服务器:内嵌Tomcat(Spring Boot)
- 数据库:MySQL
- 文件存储:本地文件系统
- 租户创建和配置
- 域名绑定和访问控制
- 租户数据隔离
- 租户级别配置管理
- 用户注册和登录
- 基于角色的权限控制
- 用户资料管理
- 两步验证支持
- 富文本文章编辑
- Markdown支持
- 文章分类和标签
- 访问级别控制(公开/会员/隐私)
- 文章审核流程
- 全局复制权限控制
- 水印功能
- IP黑白名单
- 登录失败锁定
- 操作日志记录
- 文章收藏
- 评论系统
- 点赞和统计
- SEO优化
- 响应式设计
simple-share/
├── backend/ # 后端项目
│ ├── simpleshare-common/ # 通用模块
│ ├── simpleshare-framework/ # 核心框架模块
│ ├── simpleshare-module-system/ # 系统管理模块
│ ├── simpleshare-module-article/ # 文章管理模块
│ ├── simpleshare-module-infra/ # 基础设施模块
│ ├── simpleshare-server/ # 启动模块
│ ├── sql/ # 数据库脚本
│ ├── nginx202512/ # Nginx配置
│ └── pom.xml # 父POM文件
├── frontend/ # 前端项目
│ ├── src/
│ │ ├── components/ # 通用组件
│ │ ├── views/ # 页面组件
│ │ │ ├── portal/ # 用户端页面
│ │ │ └── admin/ # 管理后台页面
│ │ ├── api/ # API接口
│ │ ├── stores/ # 状态管理
│ │ ├── router/ # 路由配置
│ │ └── utils/ # 工具函数
│ ├── public/ # 静态资源
│ ├── package.json # 依赖配置
│ └── vite.config.ts # Vite配置
├── 需求文档.md # 需求文档
└── README.md # 项目说明
docker run -d `
-p 8081:8080 `
--restart always `
-v ${PWD}/data/:/app/data/ `
--name simpleshare `
crpi-ntajolllzuc7nubz.cn-hangzhou.personal.cr.aliyuncs.com/mkblog/simpleshare:latest
docker run -d \
-p 8080:8080 \
--restart always \
-v $(pwd)/data/:/app/data/ \
--name simpleshare \
crpi-ntajolllzuc7nubz.cn-hangzhou.personal.cr.aliyuncs.com/mkblog/simpleshare:latest
- Node.js:^20.19.0 || >=22.12.0
- Java:JDK 8+
- Maven:3.6+
- MySQL:8.0+
- Nginx:1.18+
git clone https://gitee.com/GreenSoftware/simple-share.git
cd simple-share# 创建数据库
mysql -u root -p
CREATE DATABASE `simple-share` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
# 导入初始化脚本
mysql -u root -p simple-share < backend/sql/init.sqlcd backend
mvn clean package
cd simpleshare-server
java -jar target/simpleshare-server-1.0.0.jarcd frontend
npm install
npm run dev-
IDE配置
- 推荐使用IntelliJ IDEA
- 安装Lombok插件
- 配置Maven设置
-
数据库配置
# application.yml spring: datasource: url: jdbc:mysql://localhost:3306/simple-share?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai username: root password: your_password
-
启动类
// SimpleShareApplication.java @SpringBootApplication public class SimpleShareApplication { public static void main(String[] args) { SpringApplication.run(SimpleShareApplication.class, args); } }
-
环境变量配置
# .env.development VITE_API_BASE_URL=http://localhost:8080 VITE_PROXY_TARGET=http://localhost:8080 -
开发命令
# 安装依赖 npm install # 启动开发服务器 npm run dev # 构建生产版本 npm run build # 代码检查 npm run lint # 格式化代码 npm run format
-
API代理配置
// vite.config.ts server: { proxy: { '/api': { target: 'http://localhost:8080', changeOrigin: true, rewrite: (path) => path.replace(/^\/api/, '') } } }
# 构建项目
cd backend
mvn clean package -Dmaven.test.skip=true
# 上传jar包到服务器
scp backend/simpleshare-server/target/simpleshare-server-1.0.0.jar user@server:/opt/simpleshare/
# 启动服务
nohup java -jar -Dspring.profiles.active=prod /opt/simpleshare/simpleshare-server-1.0.0.jar > /opt/simpleshare/logs/app.log 2>&1 &# 构建前端
cd frontend
npm run build
# 上传dist目录到服务器
scp -r dist/* user@server:/opt/simpleshare/web/dist/# 复制Nginx配置文件
sudo cp backend/nginx202512/nginx.conf /etc/nginx/sites-available/simpleshare
sudo ln -s /etc/nginx/sites-available/simpleshare /etc/nginx/sites-enabled/
# 测试配置
sudo nginx -t
# 重启Nginx
sudo systemctl restart nginx| 配置项 | 说明 | 默认值 |
|---|---|---|
spring.datasource.url |
数据库连接地址 | - |
spring.datasource.username |
数据库用户名 | - |
spring.datasource.password |
数据库密码 | - |
server.port |
服务端口 | 8080 |
jwt.secret |
JWT密钥 | - |
jwt.expiration |
JWT过期时间 | 86400秒 |
| 配置项 | 说明 | 默认值 |
|---|---|---|
VITE_APP_TITLE |
应用标题 | 简享 |
VITE_API_BASE_URL |
API基础地址 | /api |
VITE_APP_WATERMARK_TEXT |
水印文本 | 简享 |
VITE_ENABLE_USER_REGISTRATION |
是否允许用户注册 | true |
POST /api/auth/login # 用户登录
POST /api/auth/register # 用户注册
POST /api/auth/logout # 用户登出
POST /api/auth/refresh # 刷新Token
GET /api/articles # 获取文章列表
POST /api/articles # 创建文章
GET /api/articles/{id} # 获取文章详情
PUT /api/articles/{id} # 更新文章
DELETE /api/articles/{id} # 删除文章
GET /api/system/users # 获取用户列表
GET /api/system/roles # 获取角色列表
GET /api/system/menus # 获取菜单列表
完整的API文档可通过Swagger UI访问:
http://localhost:8080/doc.html
- Fork 项目
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 打开 Pull Request
- 后端遵循阿里巴巴Java开发手册
- 前端遵循ESLint配置
- 提交信息遵循Conventional Commits规范
本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。
微信号:xmgcode、xmgcode88
| xmgcode | xmgcode88 | QQ群 |
|---|---|---|
![]() |
![]() |
![]() |



















