项目结构
gvt init 生成的项目采用严格分层架构,依赖单向流动:
请求 → router → middleware → handler → service → repository → database生成目录
my-project/
├── backend/ # Go 后端源码(Gin + GORM)
│ ├── cmd/server/main.go # 服务入口
│ ├── config/config.go # 环境变量配置
│ ├── database/db.go # 数据库连接 + 自动迁移
│ ├── model/ # 数据模型(auth/、user/)
│ ├── repository/user_repo.go # CRUD 封装(GetBy 模式)
│ ├── service/user_service.go # 业务逻辑
│ ├── handler/user_handler.go # HTTP 处理器
│ ├── middleware/auth.go # JWT 认证 + CORS
│ ├── router/router.go # 路由注册
│ ├── pkg/
│ │ ├── response/response.go # 统一响应格式
│ │ └── logger/logger.go # Zap 日志封装
│ ├── setup/ # DI 容器(sync.Once 懒加载)
│ └── STANDARD.md # 后端开发规范文档
├── frontend/ # 前端(Vue 3 / React)
│ ├── portal/ # Vue 3 Portal(若选择)
│ ├── admin/ # Vue 3 Admin(若选择)
│ └── react-app/ # React 骨架(若选择)
├── .githooks/ # Git 钩子
├── .opencode/ # OpenCode 技能配置
├── .claude/ # Claude Code 符号链接
├── .agents/ # 通用 Agent 符号链接
├── scripts/
│ └── install-hooks.sh # 钩子激活脚本
├── .gvt/
│ ├── hooks.toml # 钩子检查配置文件
│ └── docker.toml # [Docker] Docker 构建配置
├── docker/ # [Docker] Docker 文件目录
├── buildkitd.toml # [Docker] buildx 镜像加速配置
├── go.mod # Go 模块定义(根目录)
├── Makefile # 常用命令
└── README.md
[Docker]标记的文件仅在选择 Docker 支持时生成。
后端分层职责
| 层 | 职责 |
|---|---|
| handler | 参数绑定、调用 service、组装响应 |
| service | 业务规则校验、跨模型协调 |
| repository | 通用 GetBy 查询模式(IDs 数组优先 + 指针字段 + AND/OR) |
| setup | sync.Once 懒加载单例,自动处理初始化顺序 |
| pkg/response | 统一 JSON 响应 {code, message, data} |
| pkg/logger | Zap 结构化日志(文件 JSON + 控制台彩色) |
前端技术栈
| 选项 | 生成方式 | 覆盖层内容 |
|---|---|---|
| Vue 3 Portal | --template vue-ts | src/ 完整目录 + oxlint/oxfmt 配置 |
| Vue 3 Admin | 同上 | 同上 + 管理端布局骨架 |
| React | --template react-ts | src/ 基础骨架 + oxlint/oxfmt 配置 |