Tagtag Starter 项目采用前后端分离架构,包含后端 Java 模块化应用、前端 Vue 3 Monorepo 应用以及完善的文档系统。这种结构设计旨在实现高内聚、低耦合的系统架构,便于维护和扩展。
tagtag-starter
├── docs # 文档项目 (Nuxt Content)
│ ├── app # 文档应用源码
│ ├── content # 文档内容
│ ├── public # 静态资源
│ └── nuxt.config.ts # Nuxt 配置
├── backend # 后端项目
│ ├── tagtag-common # 通用工具层(纯 Java 工具,无 Spring 依赖)
│ ├── tagtag-framework # 基础设施层(Spring Boot, Security, MyBatis Plus)
│ ├── tagtag-kernel # 核心业务支持(注解, 枚举, 常量, 上下文)
│ ├── tagtag-contract # API 定义与契约
│ │ ├── tagtag-contract-auth # 认证契约
│ │ ├── tagtag-contract-iam # 身份与访问管理契约
│ │ ├── tagtag-contract-storage # 存储契约
│ │ └── tagtag-contract-system # 系统契约
│ ├── tagtag-module # 业务实现
│ │ ├── tagtag-module-auth # 认证模块实现
│ │ ├── tagtag-module-iam # 身份与访问管理模块实现
│ │ ├── tagtag-module-storage # 存储模块实现
│ │ └── tagtag-module-system # 系统模块实现
│ ├── tagtag-start # 应用启动入口与配置
│ └── pom.xml # 根 Maven POM 文件
└── frontend # 前端项目 (Vue 3 + Vite, Monorepo)
├── apps # 应用入口
│ └── tagtag # 主应用
├── packages # 核心包与 UI 组件库
└── internal # 构建与工具脚本
┌─────────────────────────────────────────────────────────────────────────┐
│ tagtag-start │
└─────────────────────────┬─────────────────────────────────────────────────┘
│
┌─────────────────────────┼─────────────────────────────────────────────────┐
│ tagtag-module-auth tagtag-module-iam tagtag-module-storage tagtag-module-system │
└─────────────────────────┬─────────────────────────────────────────────────┘
│
┌─────────────────────────┼─────────────────────────────────────────────────┐
│ tagtag-contract-auth tagtag-contract-iam tagtag-contract-storage tagtag-contract-system │
└─────────────────────────┬─────────────────────────────────────────────────┘
│
┌─────────────────────────┼─────────────────────────────────────────────────┐
│ tagtag-kernel │
└─────────────────────────┬─────────────────────────────────────────────────┘
│
┌─────────────────────────┼─────────────────────────────────────────────────┐
│ tagtag-framework │
└─────────────────────────┬─────────────────────────────────────────────────┘
│
┌─────────────────────────┼─────────────────────────────────────────────────┐
│ tagtag-common │
└─────────────────────────────────────────────────────────────────────────┘
tagtag-common)纯 Java 工具类库,不依赖 Spring 框架,提供最基础的工具支持。
主要职责:
核心组件:
constant/: 基础常量(GlobalConstants)enums/: 基础枚举(CodeEnum)exception/: 异常类定义(BusinessException, ErrorCode, AssertUtils)model/: 基础数据模型(PageQuery, PageRequest, PageResult, Result 等)util/: 工具类(DateTimeUtil, EnumUtil, PageUtil, TreeUtil)validation/: 验证分组(CreateGroup, UpdateGroup)tagtag-framework)基础设施集成层,依赖 Spring Boot 和其他第三方库,为上层提供技术支持。
主要职责:
核心组件:
aop/: 切面实现(RateLimitAspect)config/: 配置类(CacheConfig, JacksonConfig, RedisConfig, SecurityConfig 等)mapstruct/: MapStruct 配置mybatis/: MyBatis Plus 配置和字段自动填充security/: Spring Security 配置和 JWT 实现
config/: JWT 认证配置context/: 认证上下文管理filter/: 自定义过滤器guard/: 权限守卫(PermissionGuard, RoleGuard)handler/: 自定义认证和授权处理器model/: 安全相关模型service/: JWT 服务和 Token 版本服务strategy/: JWT 解码和签名策略util/: JWT 工具类util/: 工具类(PageResults, Pages, WebUtil)web/: 全局异常处理、CORS 配置、TraceId 过滤器
exception/: 各种异常处理器CorsConfig.java: CORS 配置FilterConfig.java: 过滤器配置TraceIdFilter.java: TraceId 过滤器tagtag-kernel)核心业务支持层,提供业务开发所需的通用支持和扩展点。
主要职责:
核心组件:
annotation/: 自定义注解(@RateLimit, @RequirePerm, @RequireRole)constant/: 业务常量(AppMessages, CacheConstants, Permissions, Roles, SecurityClaims, SecurityConstants)enums/: 业务枚举(GenderEnum, StatusEnum)tagtag-contract)API 定义与契约层,采用契约优先设计,将 API 定义与实现分离。
主要职责:
子模块:
tagtag-contract-authtagtag-contract-iamtagtag-contract-storagetagtag-contract-systemtagtag-module)业务实现层,每个模块对应一个具体的业务域,实现契约层定义的接口。
主要职责:
子模块:
tagtag-module-authtagtag-module-iamtagtag-module-storagetagtag-module-systemtagtag-start)应用启动入口,聚合所有模块并提供配置文件。
主要职责:
核心组件:
TagtagApplication.java: 主应用类resources/application.yml: 主配置文件resources/application-dev.yml: 开发环境配置resources/application-prod.yml: 生产环境配置resources/logback-spring.xml: 日志配置tagtag-ui 采用 Monorepo 结构管理,使用 pnpm 作为包管理器,实现代码共享和依赖管理的优化。
Monorepo 是一种将多个项目代码存储在单个仓库中的软件架构策略。Tagtag 采用 Monorepo 结构的主要优势包括:
apps)包含具体的应用实现,每个子目录对应一个独立的前端应用。
apps/tagtag - 主应用核心组件:
src/api/: API 请求定义和封装
core/: 核心 API(认证、用户、菜单)modules/: 模块 API(IAM、系统、存储)src/views/: 页面视图组件
_core/: 核心页面(登录、个人中心、404 等)dashboard/: 仪表盘页面modules/: 模块页面(IAM、系统、存储)src/router/: 路由配置
routes/: 路由定义access.ts: 路由守卫guard.ts: 权限守卫src/store/: Pinia 状态管理src/layouts/: 布局组件src/components/: 业务组件src/locales/: 国际化配置packages)提供可复用的核心功能和组件,供应用层使用。
packages/@core - 核心共享库子模块:
base: 基础设计系统、图标和共享工具
design/: 设计系统和设计令牌icons/: 图标库shared/: 共享工具类ui-kit: 封装的 UI 组件库
shadcn-ui: 基于 Shadcn UI 的基础组件form-ui: 表单组件封装layout-ui: 布局组件封装popup-ui: 弹窗、抽屉等组件封装tabs-ui: 标签页组件封装menu-ui: 菜单组件封装effects: 业务副作用与逻辑封装
access: 权限控制逻辑hooks: 通用 Hooks(useTabs, useRefresh, usePagination)request: 请求库封装plugins: 第三方插件集成(Echarts, Motion, Vxe-table)preferences: 应用偏好设置管理packages/effects - 业务副作用与逻辑access/: 权限控制实现common-ui/: 通用 UI 组件hooks/: 业务 Hookslayouts/: 布局组件plugins/: 插件集成internal)提供构建、开发和维护所需的工具和配置。
核心组件:
lint-configs/: ESLint, Prettier, Stylelint 等代码规范配置vite-config/: Vite 构建配置封装tailwind-config/: Tailwind CSS 配置封装tsconfig/: TypeScript 配置文件node-utils/: Node.js 工具函数tagtag-start/src/main/resources/application.yml)spring:
application:
name: tagtag-admin # 应用名称
version: 1.0.0 # 应用版本
profiles:
active: dev # 激活的配置文件
jackson:
date-format: yyyy-MM-dd HH:mm:ss # 日期格式
time-zone: GMT+8 # 时区
servlet:
multipart:
max-file-size: 50MB # 单个文件最大大小
max-request-size: 50MB # 请求最大大小
server:
port: 8080 # 服务端口
servlet:
context-path: / # 上下文路径
logging:
config: classpath:logback-spring.xml # 日志配置文件
mybatis-plus:
global-config:
banner: false # 关闭 MyBatis Plus banner
# 存储配置
storage:
local:
base-path: uploads # 本地存储基础路径
tagtag-ui/apps/tagtag/vite.config.mts)基于内部封装的 Vite 配置,提供统一的构建配置。
tagtag-ui/apps/tagtag/.env)# 开发环境
VITE_APP_API_BASE_URL=http://localhost:8080
VITE_APP_TITLE=Tagtag Admin
VITE_APP_SHORT_NAME=Tagtag
tagtag-ui/internal/tailwind-config/src/index.ts)统一的 Tailwind CSS 配置,包含主题、插件和自定义工具类。
文档系统基于 Nuxt Content 构建,提供现代化的文档阅读体验。
核心组件:
docs/app/: Nuxt 应用源码docs/content/: 文档内容(Markdown 文件)docs/nuxt.config.ts: Nuxt 配置文档结构:
1.getting-started/: 入门指南2.architecture/: 架构文档3.developer-guide/: 开发者指南3.modules/: 模块文档en/: 英文文档tagtag-contract 下创建新的契约模块tagtag-module 下创建对应的实现模块tagtag-start 中添加依赖tagtag-framework 中集成新的基础设施tagtag-kernel 中添加对应的支持tagtag-contract 中定义 API 契约tagtag-module 中实现业务逻辑packages/@core/ui-kit 中添加新组件apps/tagtag/src/views 中添加新页面apps/tagtag/src/router 中配置路由apps/tagtag/src/api 中添加 API 定义packages/effects 中添加新的副作用逻辑packages/@core/hooks 中添加新的 Hooks