完整工程目录与模块职责
Forge Admin 后端采用微内核插件化架构,前端为标准 Vite + Vue 3 工程。你需要先了解各模块的职责边界,再开始开发。
后端模块树
forge-server/
├── forge-admin-server/ # 主应用入口,聚合所有插件
├── forge-framework/ # 核心框架层
│ ├── forge-dependencies/ # 统一依赖版本管理(BOM)
│ ├── forge-plugin-parent/ # 业务插件
│ │ ├── forge-plugin-system/ # 系统管理(用户/角色/菜单/租户/字典)
│ │ ├── forge-plugin-generator/ # 代码生成器
│ │ ├── forge-plugin-job/ # 定时任务
│ │ ├── forge-plugin-message/ # 消息中心
│ │ ├── forge-plugin-flow/ # 流程引擎
│ │ └── forge-plugin-ai/ # AI 供应商管理
│ └── forge-starter-parent/ # 技术启动器(23 个)
│ ├── forge-starter-core/ # 核心工具、异常、统一响应
│ ├── forge-starter-web/ # Web 层封装
│ ├── forge-starter-auth/ # Sa-Token 认证
│ ├── forge-starter-orm/ # MyBatis-Plus + 动态数据源
│ ├── forge-starter-cache/ # Redis + Redisson
│ ├── forge-starter-tenant/ # 多租户拦截
│ ├── forge-starter-datascope/ # 数据权限
│ ├── forge-starter-crypto/ # API 加解密
│ ├── forge-starter-excel/ # EasyExcel
│ ├── forge-starter-file/ # 文件存储
│ ├── forge-starter-log/ # 操作日志
│ ├── forge-starter-idempotent/ # 幂等控制
│ ├── forge-starter-id/ # 分布式 ID
│ ├── forge-starter-config/ # 动态配置
│ ├── forge-starter-trans/ # 分布式事务
│ ├── forge-starter-social/ # 社交登录
│ ├── forge-starter-websocket/ # WebSocket
│ ├── forge-starter-message/ # 消息服务
│ ├── forge-starter-job/ # 任务调度
│ └── forge-starter-api-config/ # API 行为配置
├── forge-flow/ # 独立流程服务
├── forge-report-server/ # 大屏报表服务
├── forge-app-server/ # App 接口服务
└── forge-business/ # 业务模块(扩展业务放这里)各模块职责
| 模块 | 职责 | 何时修改 |
|---|---|---|
forge-admin-server | Spring Boot 入口、Controller、配置 | 新增 REST 接口 |
forge-plugin-system | 用户、角色、菜单、租户、字典 | 系统功能扩展 |
forge-starter-* | 底层技术能力封装 | 修改框架级行为 |
forge-business | 业务模块 | 新增业务功能 |
forge-flow | 独立流程引擎 | 流程服务部署 |
前端目录
forge-admin-ui/src/
├── api/ # API 接口定义(按模块拆分)
├── components/ # 公共组件(AiForm、DictSelect、FileUpload …)
├── composables/ # 组合式 API(useDict、usePermission …)
├── layouts/ # 布局组件
├── router/ # 路由配置(动态路由生成)
├── stores/ # Pinia Store
├── utils/ # 工具函数(request、encrypt-request、file …)
├── views/ # 页面视图
├── styles/ # 全局样式
└── config/ # 应用配置关键原则
- 业务代码放
forge-business或对应 plugin,不要把业务逻辑写进 starter - starter 只提供能力,不包含任何业务逻辑
- 前端公共组件放
components/,页面级组件放views/对应子目录
