目标
要求整体是前后端分类。核心服务前端、后端(面向用户);
管理控台前后端(面向管理员),每一个核心的服务分为上面说的4个子项目。
整体规划
我非常赞同这个约束,而且我建议从第一天就强制执行。
原因很简单:
架构最大的成本不是功能,而是不一致。
很多开源项目做到后面,一个模块只有后台,一个模块只有 API,一个模块前后台混在一起,最后维护成本越来越高。
你的 Core 平台以后可能会有十几个 core-xxx,如果现在统一规范,以后新增模块几乎可以直接复制模板。
Core Platform 技术架构规范(v1.0)
1. 目标
Core Platform 是整个生态系统的基础设施。
所有业务平台(Trade、Wiki、Monitor、CMS、AI、Blog……)均依赖 Core Platform 提供统一能力。
Core Platform 不直接实现业务,而是提供公共基础设施。
原则:
- Platform First
- API First
- Frontend / Backend Separation
- Convention over Configuration
- Open Source Friendly
- Replaceable Components
- Keep It Simple
2. 技术选型
Backend
Java 21 LTS
Spring Boot 3.x
Spring Security
Spring Validation
Spring Mail
Maven
SQLite(默认)
MySQL(可切换)
Frontend
Vue3
TypeScript
Vite
Pinia
Vue Router
Axios
UnoCSS(推荐)
Database
默认
SQLite
原因:
无需安装
零依赖
开箱即用
适合开源
以后仅修改 datasource 即可切换
MySQL
PostgreSQL(预留)
禁止:
Redis
MQ
ElasticSearch
MongoDB
第一阶段全部不引入。
3. 项目目录规范
整个仓库:
core-platform/
docs/
frontend/
backend/
scripts/
docker/
LICENSE
README.md
4. Backend 规范
所有核心能力:
backend/
core-identity/
core-notification/
core-storage/
core-ai/
core-workflow/
core-openapi/
core-config/
core-audit/
core-billing/
core-plugin/
每一个 Core 都是独立 Maven Module。
例如:
backend/
core-identity
core-storage
core-ai
全部:
maven module
5. Frontend 规范
所有用户端:
frontend/
core-identity-web
core-storage-web
core-ai-web
core-notification-web
统一:
Vue3
每个模块一个前端。
6. Admin Console
所有后台:
frontend-admin/
core-identity-admin
core-storage-admin
core-ai-admin
core-notification-admin
全部统一后台风格。
7. 一个 Core 的标准结构
例如:
Identity
整个目录:
core-identity/
backend/
frontend/
admin-backend/
admin-frontend/
即:
core-identity
├── backend
├── frontend
├── admin-backend
└── admin-frontend
backend
提供:
REST API
OpenAPI
业务逻辑
数据库
frontend
提供:
用户页面
例如:
登录
注册
个人中心
修改密码
API Key
admin-backend
提供:
管理员接口。
例如:
用户管理
权限管理
日志
审核
admin-frontend
提供:
后台管理。
例如:
用户列表
角色
组织
统计
配置
8. 一个 Core 永远只有四个子项目
例如:
core-storage
├── backend
├── frontend
├── admin-backend
└── admin-frontend
例如:
Notification
core-notification
├── backend
├── frontend
├── admin-backend
└── admin-frontend
以后全部一致。
9. Backend 包结构
统一:
src/main/java
controller
service
repository
entity
dto
vo
mapper
config
security
event
exception
util
禁止每个项目自己创造目录。
10. API 规范
统一:
/api/v1/
例如:
POST /api/v1/login
POST /api/v1/logout
GET /api/v1/profile
后台:
/admin-api/v1/
例如:
GET /admin-api/v1/users
永远不要:
/api2/
/system/
/manager/
11. 返回格式统一
所有接口:
{
"code":0,
"message":"success",
"data":{}
}
分页:
{
"total":100,
"page":1,
"size":20,
"records":[]
}
12. 数据库规范
所有表:
统一:
id
create_time
update_time
deleted
禁止:
createDate
CreateTime
gmt_create
统一:
snake_case。
13. 配置规范
全部:
application.yml
仅保留:
datasource
server
logging
业务配置全部进入:
core-config
数据库动态配置。
14. 文件规范
上传全部:
core-storage
任何模块禁止:
upload/
temp/
image/
自己管理文件。
15. AI 规范
所有 AI:
必须经过:
core-ai
禁止:
直接调用 OpenAI
任何业务。
16. 邮件规范
全部:
core-notification
禁止:
JavaMailSender
直接发送邮件
17. 登录规范
全部:
core-identity
禁止:
每个项目:
User
Role
Permission
重新写一遍。
18. 插件规范
未来:
任何扩展:
Plugin
↓
Hook
↓
Extension
禁止:
修改源码。
19. 数据访问规范
统一:
Repository
↓
Service
↓
Controller
禁止:
Controller
直接:
Mapper
20. 开发原则(必须遵守)
简单优先(Keep It Simple)
第一阶段拒绝为了未来可能需要的场景而增加复杂度。
单一职责(Single Responsibility)
每个 core-* 只负责一种平台能力,不承载业务逻辑。
默认可运行(Zero External Dependency)
克隆仓库后,仅需 JDK 和 Maven 即可启动,默认使用 SQLite,不依赖 Redis、MQ、MinIO 等额外服务。
接口优先(Interface First)
所有外部能力(AI、存储、通知、支付等)先定义接口,再提供默认实现,为后续扩展预留空间。
统一约定(Convention over Configuration)
目录、接口、异常、日志、配置、数据库命名全部统一,避免模块间风格差异。
可替换(Replaceable)
数据库、AI 模型、对象存储、通知渠道等都应支持无侵入替换。
API First
所有功能必须先设计 API,再实现前端,前后端通过 OpenAPI 契约协作。
开源友好(Open Source Friendly)
模块独立、文档完善、依赖精简,让开发者能够单独理解、运行和复用任意一个 core-* 模块。
我建议再增加一条最重要的约束
你目前是按 4 个子项目 来划分(用户端前后端 + 管理端前后端),我建议把它提升为整个 Core Platform 的最高架构约束:
任何
core-*模块,无论大小,都必须遵循完全相同的工程骨架,不允许因功能简单而省略目录或改变结构。
例如:
core-identity/
├── backend/
├── frontend/
├── admin-backend/
├── admin-frontend/
└── README.md
core-notification/
├── backend/
├── frontend/
├── admin-backend/
├── admin-frontend/
└── README.md
core-ai/
├── backend/
├── frontend/
├── admin-backend/
├── admin-frontend/
└── README.md
即使某个模块(如 core-config)暂时没有用户前端,也保留对应工程(可以为空),而不是删除。
这样整个平台保持100% 对称,任何开发者看到一个新模块,都无需重新学习项目结构。
这种一致性,在长期维护和开源协作中的价值,往往远大于节省几个空目录。
