大家好,我是心念。最近把做了很久的一套中后台开源出来了,名字叫心念后台(xn-admin)。
这不是又一个「只能学习、商用要买授权」的模板。它采用Apache License 2.0,个人自用、二次开发、商业项目、闭源交付都可以,只要遵守许可证里的版权声明和 NOTICE 要求。
当前版本是1.0.0。仓库都在 Gitee / GitHub,国内访问 Gitee 更方便。
一、它是什么,解决什么问题
做业务系统时,登录、权限、组织、字典、文件、日志、定时任务、代码生成……这些模块几乎每次都要重写一遍。市面上的后台脚手架很多,但常见几个痛点:
- 前端只有一套:团队用 Vue 还好,想用 React 或 Options API 就得自己移植
- 后端是单体:业务长大了再拆微服务成本很高
- 许可证不清晰:看起来开源,商用可能要付费或改版权
- 工程化偏弱:格式化、单测、CI、提交规范各写各的
心念后台想做成一件事:一套后端契约,四套管理端任选,功能对齐,可直接当商业项目起步模板。
架构很简单:
浏览器(四套管理端任选其一) ↓ /api /uploads /ws xn-gateway :8088(Spring Cloud Gateway + Nacos) ├── xn-system :8081 登录 / RBAC / 组织 / 字典 / 公告 / 监控 / 代码生成 ├── xn-file :8082 文件、分片上传、MinIO ├── xn-log :8083 登录 / 操作 / 异常 / 任务日志 └── xn-job :8084 Quartz 定时任务中间件是常见组合:MySQL、Redis、Nacos、MinIO。
二、仓库一览(都是独立开源)
开源范围是「1 个微服务后端 + 4 套管理端」。官网xn-home是品牌落地页,可选。
| 仓库 | 说明 | Gitee | GitHub |
|---|---|---|---|
xn-admin-cloud | 微服务后端(必需) | Gitee | GitHub |
xn-admin-vue3-ts | 功能基准:Vue 3 + TypeScript + Element Plus | Gitee | GitHub |
xn-admin-vue3-js | Vue 3 + JavaScript(Composition) | Gitee | GitHub |
xn-admin-vue2-js | Vue 3 + JavaScript(Options API) | Gitee | GitHub |
xn-admin-react-ts | React 19 + TypeScript + Ant Design | Gitee | GitHub |
说明两点,避免误会:
vue2-js不是 Vue 2。目录名表示「第二套 JS 写法」,运行时是 Vue 3,组件用 Options API(data/methods/computed),方便习惯老写法的团队。- 四套前端对接同一网关
http://127.0.0.1:8088,开发端口错开:React1800、vue2-js1801、vue3-js1802、vue3-ts1803,可以同时开着对比。
React 端刻意没用 Element 的视觉去「套壳」,用的是 Ant Design 原生主色和布局,业务能力跟 Vue 基准对齐。
在线演示
- 官网:https://xinniankeji.vip
- Vue3 + TS:https://vue3-ts.xinniankeji.vip
- Vue3 + JS:https://vue3-js.xinniankeji.vip
- Vue3 Options:https://vue2.xinniankeji.vip
- React:https://react.xinniankeji.vip
演示账号请以官网说明为准;本地开发默认是SuperAdmin/SuperAdmin、admin/admin,仅用于本机,登录后请立刻改密。
三、技术栈
后端xn-admin-cloud
- Java 21、Maven 多模块(自带
mvnw) - Spring Boot 4、Spring Cloud Gateway、Nacos
- JPA + Flyway、Redis、MinIO、Quartz、OpenAPI
前端(以基准xn-admin-vue3-ts为例)
- Vue 3.5、TypeScript、Vite 8、Element Plus
- Pinia、Vue Router、Axios
- ECharts、wangEditor、ExcelJS
- ESLint、Prettier、Vitest、Husky、commitlint
React 端是 React 19 + Ant Design + TypeScript。
工程化我比较在意:后端有 Spotless(Google Java Format)、SpotBugs、JaCoCo、Enforcer(强制 JDK 21),前后端都有 GitHub Actions / Gitee Go。提交走 Conventional Commits,例如feat(system): 增加密码策略。
四、功能清单(后台该有的,尽量齐)
接口和菜单种子已经齐了,页面由配套前端承接。
| 域 | 能力 |
|---|---|
| 认证会话 | 登录 / 登出 / 注册 / 图形与滑块验证码 / JWT 续期 / 改密 / 头像 / 动态菜单 |
| 组织账号 | 用户(CRUD、导入导出、启停)/ 单位树 / 岗位 |
| 权限安全 | RBAC;数据权限(全部 / 本单位及下级 / 本单位 / 本人);按钮级权限;锁定、限流、密码规则 |
| 基础数据 | 字典类型与数据 |
| 系统设置 | 系统配置、登录页、远程存储、联系与捐赠、用户 UI 偏好、表格列偏好 |
| 内容运营 | 公告(发布、撤回、已读、WebSocket)/ 站内信 |
| 监控 | 在线用户与强制下线 / 服务 / Redis / SQL |
| 日志 | 登录 / 操作 / 异常 / 任务日志:查询、详情、删除、清空、导出(后端已齐,前端页面还在补) |
| 文件 | 浏览、上传、建目录、删除、分片上传 |
| 任务 | Quartz CRUD、启停、立即执行 |
| 工具 | 回收站、代码生成、路由一键生成 |
几个我自己比较在意的点:
1. 数据权限不是摆设
角色可以配:全部、本单位及下级、本单位、仅本人。中后台如果没有这一层,多单位场景很快就会翻车。
2. page-ui 驱动列表页
搜索项、表格列、按钮往往由后端 page-ui 下发,前端用xnPageLayout+xnSearch+xnTable组合。典型结构:
xnPageLayout ├── #aside → xnTreePanel(可选,单位树等) ├── #search → xnSearch ├── #toolbar→ xnButton └── #table → xnTable新业务页可以少写一堆重复的搜索表单和表格配置。
3. 一套后端,四种前端口味
TypeScript / JavaScript、Composition / Options、Vue / React,团队怎么舒服怎么选,不必为了脚手架先换技术栈。
4. 代码生成 + 回收站 + 分片上传
这三块在真实项目里出现频率很高,我没有当成「以后再说」的附属功能。
五、界面预览
以下截图来自基准管理端xn-admin-vue3-ts。
登录与首页
组织与账号
权限与安全
系统监控
内容与设置
文件与任务
六、和常见后台脚手架的差异(我自己的定位)
市面上若依、Jeecg 等都很成熟,我没有打算「替代谁」。心念后台更适合这几类人:
- 想用较新的 Spring Boot 4 + Java 21微服务结构,而不是先上一个大单体
- 团队里同时有 Vue 和 React,或有人只熟悉 Options API
- 需要明确可商用的 Apache-2.0,不想后续被授权卡住
- 希望列表页、权限、文件、任务这些中后台基础能力开箱即用
当前架构也有取舍,文末会写清楚,避免看完仓库才发现对不上预期。
七、本地怎么跑起来
1. 准备中间件
需要 JDK 21、Maven 3.9+(仓库自带mvnw)、Node.js 20+,以及 MySQL、Redis、Nacos、MinIO。可以用 Docker Compose,也可以本机安装。库名默认xn_admin。
2. 启动后端(五个服务)
仓库根目录,profile 用dev,cloud: