mica-admin 是一个面向中小团队的全栈低代码权限管理平台,把企业日常需要的用户/角色/菜单/部门/字典/文件/监控/通知全部集成在一起,定位为通用后台系统。
- 🏢 管理后台 —— 用户、角色、菜单、部门、字典、文件、监控、操作日志一应俱全
- 📱 移动 App —— uniapp x 跨端,iOS / Android / H5 / 微信小程序一套代码
- 🚀 一键部署 ——
deploy.sh跑完,jar 包就到生产了
项目针对不同 Java 与 Spring Boot 版本提供两条长期维护分支,请根据运行环境选择:
| 分支 | Java 版本 | Spring Boot 版本 | 说明 |
|---|---|---|---|
main |
Java 17 | Spring Boot 4.x | 主分支,推荐新项目使用 |
java8 |
Java 8 | Spring Boot 2.7.18 | 兼容分支,适合仍需运行在 Java 8 环境的项目 |
# 推荐:Java 17 + Spring Boot 4.x
git switch main
# 兼容:Java 8 + Spring Boot 2.7.x
git switch java8两个分支的构建与启动方式一致;开始开发前,请确认本地 JDK 版本与所选分支匹配。
✨✨✨推广:BladeX 物联网平台✨✨✨iot.bladex.cn
| 账号 | 密码 | 角色 |
|---|---|---|
admin |
123456 |
超级管理员 |
mica |
123456 |
普通用户 |
mica-admin/ # mono-repo (单 git 仓库)
├── mica-admin-server/ # Spring Boot 后端 (Java 版本见分支说明)
│ └── net.dreamlu.mica.admin
│ ├── common/ 公共常量 (ApiCode 等)
│ ├── framework/ 框架核心 (Security / MyBatis / AOP / JWT)
│ └── project/ 业务模块 (用户 / 角色 / 菜单 / 部门 / 字典 ...)
│
├── mica-admin-web/ # Web 管理端 (Vben Admin 5.x 本地化)
│ ├── src/ 业务代码
│ └── vben/ 本地化的 Vben 框架源码
│
├── mica-admin-uniapp/ # 移动 App (uniapp x)
│ └── src
│ ├── modules/auth 登录 (通用)
│ └── modules/extension 二次开发只新增
│
├── .claude/skills/ # AI 编码 Skills (三端各一份)
│ ├── mica-admin-backend/ 后端 CRUD 模块套路
│ ├── mica-admin-web/ Web 端页面套路
│ └── mica-admin-uniapp/ App 端页面套路
│
├── docs/ 设计文档 (App / 数据库)
├── deploy.sh 一键部署脚本
├── script/ systemd 服务脚本
└── AGENTS.md AI 编码助手规则
三端同仓是为了让 AI 编码时"看见完整上下文",便于跨模块协作。
mica-admin-uniapp/不进 Maven,是独立 npm 工程。
| 端 | 技术栈 |
|---|---|
| 后端 |
Spring Boot 4.x(main)/ 2.7.x(java8)· Spring Security · MyBatis-Plus · Druid · Redis · JWT · RSA
Tomcat · Log4j2 · mica-captcha · mica-openapi · dromara x-file-storage |
| Web |
Vue 3.5 + TypeScript 5.7 + Vite 6 + Pinia 3 + Naive UI 2.44 + Tailwind CSS 4
Vben Admin 5.x (本地化到 vben/) · Vue I18n · ECharts · VxeTable
|
| App |
uniapp x · Vue 3.5 + TypeScript 5.4 + Pinia 2 + Vite 6
uni-ui · dayjs · pinia-plugin-persistedstate |
| 存储 | MySQL 5.7+ · Redis 6+ · 本地 / OSS 文件存储 (可插拔) |
- Web 端 / App 端 / 后端共用 RBAC 模型 (
sys_user/sys_role/sys_menu) - 后台给用户配什么菜单/按钮,App 端就显示什么
- JWT 鉴权贯通三端
跑一次 main() 就生成完整的 Controller / Service / Mapper / Vue 页面:
// mica-admin-server/src/test/java/.../generator/MysqlAutoGenerator.java
strategyConfig.addInclude("sys_user", "sys_role");./deploy.sh
# 自动: mvn package → scp 到远端 host=tx → 远端 restartd → 清理本地包服务用 systemd 托管(script/start.sh),开箱即用。
通用模块不修改,二次开发只新增。App 端把扩展点统一放在 modules/extension/,
后端按业务新建包即可,完全不碰 framework/。
.claude/skills/ 下沉淀了三端各一份的编码套路,AI 会按任务自动加载对应 skill,
写出来的代码直接符合本项目约定(分层、权限码、分页、菜单挂载),不用每次重复交代。
详见 AI 辅助开发 Skills。
| 依赖 | 版本 | 备注 |
|---|---|---|
| JDK | 17 / 8 | main 使用 Java 17;java8 使用 Java 8 |
| Maven | 3.6+ | 后端构建 |
| Node.js | 18+ | 前端 + App |
| pnpm | 9+ | 前端 + App |
| MySQL | 5.7+ | 导入 docs/database/mysql.sql |
| Redis | 6+ | localhost:6379 |
mysql -u root -p < docs/database/mysql.sqlmvn spring-boot:run -Dspring-boot.run.profiles=dev
# 监听 8080,API 文档: http://localhost:8080/doc.htmlcd mica-admin-web
pnpm install
pnpm dev # http://localhost:5888cd mica-admin-uniapp
pnpm install
pnpm dev:h5 # http://localhost:5889
# 或: pnpm dev:app / pnpm dev:mp-weixin# 后端 + 前端 一起打成 fat jar
mvn clean package -Pprod -U -Dmaven.test.skip=true项目把三端的开发套路沉淀成了 Claude Code Skills,
放在 .claude/skills/,随仓库一起提交,团队共享。
| Skill | 覆盖范围 | 什么时候会自动触发 |
|---|---|---|
mica-admin-backend |
mica-admin-server/ |
加/改后端接口、实体、Service、权限码、菜单 SQL |
mica-admin-web |
mica-admin-web/ |
加/改 Web 页面、API 层、路由、权限按钮 |
mica-admin-uniapp |
mica-admin-uniapp/ |
加/改 App 页面、模块、pages.json、工作台卡片 |
每个 skill 都是「约定 + 模板」两层:
mica-admin-backend/
├── SKILL.md # 硬性约定、禁区、checklist、命令
└── references/crud-module.md # 可直接复制的完整代码模板
不需要手动指定。Skill 的 description 里写明了适用场景,AI 会根据你的任务自动加载:
> 帮我加一个轮播图管理功能,后端 + Web 端都要
AI 会自动读取 mica-admin-backend + mica-admin-web 两个 skill,然后按项目既有套路产出:
- 后端 6 个文件(entity / query / mapper / service / impl / controller)+
sys_menu菜单与按钮权限 SQL - Web 端
src/api/system/banner.ts+src/views/system/banner/index.vue - 权限码统一
system:banner:list|query|add|edit|del|export
也可以显式点名,让它先讲思路:
> 用 mica-admin-uniapp skill 说明下 App 端新增一个模块要改哪些文件
这些都是从现有代码里逆推出来的、AI 不看约定就一定会写错的地方:
- 后端成功响应
code = 0(不是 200),写操作返回void,不要手工包R.success() - Web 端分页要用
parsePage()把IPage的records归一成list;App 端直接消费records(没有parsePage) - Web 端别名是
#/,App 端是@/ - 表格多选用
:checked-row-keys,不是:selection - 前端不写静态路由,新页面靠后端
sys_menu下发 - 全局拦截器已弹错误提示,业务
catch里不要重复 toast - 不改
vben/内的导入路径、不在vben/内用@apply、不改src/api/core/auth.ts
新建 .claude/skills/<你的skill名>/SKILL.md,frontmatter 写清 name 和 description
(description 要说明什么时候该用,这决定了能否被自动召回):
---
name: my-module
description: Use when ... 覆盖 xxx 场景
---
# 标题
约定、禁区、checklist...内容多的话拆到 references/ 下,SKILL.md 里链接过去,避免一次性灌太多上下文。
Skill 是 Claude Code 的机制。其他工具请读这两份等价规则:
| 文档 | 适合谁 | 内容 |
|---|---|---|
| docs/database/mysql.sql | 运维 | 数据库结构 |
| mica-admin-uniapp/AGENTS.md | App 二次开发 | 通用模块不修改原则 |
| AGENTS.md | AI 编码助手 | 仓库级编码规范 |
| CLAUDE.md | AI 编码助手 | 架构说明与全局约定 |
| .claude/skills/ | AI 编码助手 | 三端编码套路 + 可复制模板 |
PR 永远欢迎 🙏
- Fork → 2. Feature Branch → 3. Commit → 4. PR
- 后端改动请补单测 (
mvn test -Dtest=ClassName#methodName) - 前端改动请跑
pnpm typecheck+pnpm lint - 若引入了新的编码套路或改了既有约定,请同步更新
.claude/skills/下对应的 skill
- mica —— 让 Java 开发更高效的瑞士军刀
- vue-vben-admin —— Vue 3 中后台模板的天花板
- uniapp —— 一套代码,8 端运行
如果这个项目对你有帮助,给个 ⭐ 鼓励一下!
Built with ❤️ by dreamlu & contributors