GoWind Shop(风行商城)是一套面向出海场景的企业级多语言电商平台,采用 API 优先、前后端分离架构,提供多语言原生内容分发、多币种商品展示与单一结算币种能力。后端基于 golang + go-kratos 微服务框架,采用 Protobuf-first(契约驱动)工作流;前端后台基于 Vue.js 3 + TypeScript,店铺前台基于 Nuxt + Vue 3。
- 多语言原生支持:基于 i18n 的多语言内容分发,面向出海场景
- 契约驱动(Protobuf-first):接口、数据模型、错误码均以 proto 为单一事实源,自动生成 Go / TypeScript / OpenAPI
- 三服务 BFF 架构:
admin/app瘦网关 +core核心实现,业务逻辑与传输层解耦 - 全栈代码生成:Ent Schema → ORM,Wire 依赖注入,一键 CRUD 脚手架
- 生产就绪:JWT 鉴权、Casbin / OPA 授权、SSE 推送、Asynq 异步任务、OpenTelemetry 链路追踪、Swagger 文档、Docker 一键部署
GoWind Shop 采用三服务 BFF 架构:admin 与 app 为瘦网关,仅做参数校验与 gRPC 转发;core 为核心实现,所有数据访问集中于此。
HTTP/REST 请求
└─ admin-service (后台网关 BFF,REST:6600 / SSE:6601 / gRPC)
└─ gRPC → core-service (核心业务 + 数据落点)
app-service (前台网关 BFF,REST:6700) ──gRPC──→ core-service
core-service (gRPC,业务实现与数据访问)
| 服务 | 角色 | 是否访问 DB |
|---|---|---|
app/admin/service |
后台网关 BFF(接收 REST,转发 gRPC 到 core) | ❌ |
app/app/service |
前台网关 BFF | ❌ |
app/core/service |
核心业务实现(持久化、真实逻辑) | ✅ |
| 层级 | 技术 |
|---|---|
| 后端框架 | Golang · go-kratos v2 · Wire · Protobuf / Buf |
| ORM | entgo.io/ent · PostgreSQL · MySQL |
| 中间件 | Redis · MinIO(S3 兼容对象存储) · ElasticSearch / OpenSearch · etcd(服务发现) |
| 认证授权 | kratos-authn(JWT HS256) · kratos-authz(Casbin / OPA) |
| 实时通信 | SSE(服务端推送) · Asynq(异步任务) |
| 分布式 | OpenTelemetry + Jaeger(链路追踪) · DTM(分布式事务) |
| 后台前端 | Vue 3 · TypeScript · Vite · Element Plus |
| 店铺前端 | Nuxt · Vue 3 · TypeScript · Tailwind CSS · i18n |
| 部署运维 | Docker · Docker Compose · PM2 · Swagger UI |
| 工具 | 版本 |
|---|---|
| Go | 1.25+ |
| Node.js | >= 20.10.0 |
| pnpm | >= 10.0.0 |
| Docker | 20.0+ |
- Linux / macOS 开发环境:
scripts/env/install_unix_dev.sh - Linux / macOS 生产环境:
scripts/env/install_unix_prod.sh - Windows 开发环境:
scripts/env/install_windows_dev.ps1
- full_deploy 完整模式:同步启动中间件+后端应用,适用于一键演示、生产部署
- libs_only 依赖模式(推荐开发):仅启动中间件,应用本地 IDE 运行调试
Linux / macOS:
# 赋予脚本执行权限
chmod +x scripts/**/*.sh
# 开发环境(推荐)
./scripts/env/install_unix_dev.sh
./scripts/docker/libs_only.sh
cd backend/app/<admin|app|core>/service
make run
# 生产环境
./scripts/env/install_unix_prod.sh
./scripts/docker/full_deploy.sh
# PM2 进程托管(生产进阶)
./scripts/deploy/pm2_service.shWindows(PowerShell 管理员):
# 放行脚本策略(首次仅需执行一次)
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
# 初始化环境
.\scripts\env\install_windows_dev.ps1
# 本地开发
.\scripts\docker\libs_only.ps1
cd backend/app/<admin|app|core>/service
make run
# 一键完整部署
.\scripts\docker\full_deploy.ps1前端项目统一存放于 frontend 目录,依赖安装命令一致:
| 前端 | 目录 | 启动命令 |
|---|---|---|
| 后台管理 | frontend/admin |
pnpm dev |
| 店铺前台 | frontend/app |
pnpm dev |
# 安装依赖
pnpm install
# 后台管理(Vue3 + Element Plus)
cd frontend/admin && pnpm dev
# 店铺前台(Nuxt + Vue 3)
cd frontend/app && pnpm dev具体监听端口见各前端目录下的
.env.development。
| 功能 | 说明 |
|---|---|
| 商品管理 | 商品与 SKU 的发布、上下架与维护 |
| 商品属性 | 商品属性与属性值管理 |
| 类目管理 | 商品类目管理,支持树形结构 |
| 品牌管理 | 品牌信息管理 |
| SKU 与定价 | SKU、属性组合与价格管理 |
| 购物车 | 购物车与购物车项管理 |
| 订单管理 | 订单与订单明细管理 |
| 支付与退款 | 支付交易与退款记录管理 |
| 文件传输 | 商品图片与资源上传传输 |
| 功能 | 说明 |
|---|---|
| 用户档案 | 用户档案信息管理 |
| 租户管理 | 多租户管理与初始化 |
| 角色管理 | 角色与角色分组管理 |
| 权限管理 | 权限分组与权限点管理 |
| 菜单管理 | 系统菜单与按钮权限配置 |
| 组织管理 | 组织、部门、职位管理 |
| 接口管理 | 接口注册与同步 |
| 字典与多语言 | 数据字典与多语言内容管理 |
| 任务调度 | 异步任务与调度日志管理 |
| 文件管理 | 文件上传与对象存储管理 |
| 内部消息 | 站内消息与消息分类管理 |
| 审计日志 | 登录、操作、权限与数据访问审计日志 |
go-wind-shop/
├── backend/ # 后端项目
│ ├── api/ # Protobuf API 定义与生成代码
│ │ ├── protos/ # .proto 源文件(按领域分层)
│ │ └── gen/go/ # buf 生成的 Go 代码
│ ├── app/ # 应用实现层(admin / app / core 三个微服务)
│ │ └── <admin|app|core>/service/
│ │ ├── cmd/server/ # 入口 + wire 注入
│ │ ├── configs/ # 运行时配置(YAML)
│ │ └── internal/ # 业务核心(server / service / data)
│ ├── pkg/ # 跨服务公共库
│ ├── scripts/ # 部署与环境脚本(env / docker / deploy)
│ ├── sql/ # 数据库种子 / 演示数据脚本
│ └── Makefile / app.mk # 构建编排
├── frontend/ # 前端项目
│ ├── admin/ # Vue 3 + Element Plus 后台
│ └── app/ # Nuxt + Vue 3 店铺前台
└── README.md
- 微信个人号:
yang_lin_bo(备注:go-wind-shop)