一句话:一套 API、两个前端——UniApp 打 C 端多端,React 打 B 端,Gin 扛并发与 WebSocket。
写在前面
Gin-Zone 是我用 Go + React + UniApp 写的全栈练手项目,也是本博客 Go 学习记录 的落地载体。与当前主博客(Nuxt + Nest)技术栈不同,但模块划分思路相通:用户、动态、博客、聊天、后台管理。
适合谁:想练 Go Web、跨端 UniApp、或对照「社交 + 内容 + 实时」产品结构的开发者。
仓库:GitHub gin-zone · Gitee 镜像
三端架构
flowchart TB
subgraph client [Client · UniApp Vue3]
H5[H5]
MP[微信小程序]
APP[App]
end
subgraph admin [Admin · React TS]
Arco[Ant Design 5]
end
subgraph server [Server · Go Gin]
API[REST API]
WS[WebSocket 聊天]
DB[(MySQL + Redis)]
end
H5 --> API
MP --> API
APP --> API
Arco --> API
client --> WS
API --> DB
| 子项目 | 技术 | 默认端口 | 职责 |
|---|---|---|---|
server/ |
Go 1.23 · Gin · GORM | 9600 | API、JWT、WS、Swagger |
admin/ |
React 18 · TS · Ant Design | 3001 | 运营后台、动态/用户管理 |
client/ |
UniApp · Vue 3 · Vite | 3000 (H5) | 社交动态、博客、聊天、扫码 |
技术栈概览
后端 Server
| 组件 | 说明 |
|---|---|
| Gin | HTTP 路由与中间件 |
| GORM | MySQL ORM |
| Redis | 缓存 / 会话辅助 |
| JWT | 登录态;支持微信 OAuth |
| WebSocket | 私聊 / 群聊 |
| Swagger | /api/v1/swagger/index.html |
| Cron | 定时任务 |
| Logrus | 结构化日志 |
MVC 分层:controller → service → model,中间件处理鉴权、日志、跨域。
管理端 Admin
React 18 + TypeScript + Ant Design 5 + Redux Toolkit + React Router 6。面向运营:动态审核、用户管理、数据报表。
客户端 Client
UniApp 一码多端:H5、微信小程序、App。内置 uni-ui、Markdown(marked + prismjs)、国密通信示例、多环境配置(SIT/UAT/PROD)。
核心功能模块
用户系统
- 注册 / 登录、微信授权
- JWT + 路由守卫
- 头像上传、资料编辑
动态(社交)
- 图文 / 视频动态发布
- 点赞、浏览统计
- 地理位置、时间线列表
实时聊天
- WebSocket 长连接
- 私聊、群聊、好友关系
- 可选 AI 对话集成
博客
- Markdown 发文
- 分类 / 标签
- 代码高亮
管理后台
- 内容与用户 CRUD
- 统计图表
- 系统配置
与本博客主站相比:gin-zone 更偏「社交 App 原型」;jiang-xia.top 主站已演进为 Nuxt + Nest + RPG 游戏化,二者可对照学习架构演进。
项目结构
gin-zone/
├── server/ # Go API
│ ├── app/ # controller · service · model
│ ├── middleware/
│ ├── router/
│ ├── config/
│ └── storage/ # zone.sql · initData.sql
├── admin/ # React 管理端
├── client/ # UniApp 客户端
└── scripts/ # install.sh · run.sh
快速开始
环境
- Go 1.23+
- Node.js 16+
- MySQL 8.0+、Redis
安装与启动
bash
git clone https://github.com/Jiang-Xia/gin-zone.git
cd gin-zone
npm run i:all # 或 bash scripts/install.sh
# 数据库
mysql -u root -p -e "CREATE DATABASE zone_db CHARACTER SET utf8mb4;"
mysql -u root -p zone_db < server/storage/zone.sql
# 配置 server/config/env.local.ini 后
npm run r:all # 或 bash scripts/run.sh
| 服务 | 地址 |
|---|---|
| API | http://localhost:9600 |
| Swagger | http://localhost:9600/api/v1/swagger/index.html |
| Admin | http://localhost:3001 |
| Client H5 | http://localhost:3000 |
线上体验
- H5:Gin Zone 博客页
- API 文档:Swagger
工程化与部署
- 提交规范:Conventional Commits + Husky + Commitlint
- Docker:根目录
docker-compose一键构建(见仓库 README) - Linux 编译后端:
powershell
# PowerShell 交叉编译示例
$env:GOOS="linux"
$env:GOARCH="amd64"
cd server
go build -o zone-server main.go
与本博客的关系
| 项目 | 角色 |
|---|---|
| gin-zone | Go 技术栈练手、敏感词分级等想法的原型(参见 Go练手项目 gin-zone 记录) |
| blog-server (Nest) | 当前生产 API,含 RPG、RBAC、支付等 |
| blog-home-nuxt | 当前生产 C 端 |
若你已在 Nest 博客系统里开发,仍推荐 clone gin-zone 对照 Go 版 MVC + WS 的实现差异。
小结
- Gin-Zone = Server + Admin + Client 标准三端分离 monorepo
- UniApp 负责多端触达,React 负责重运营后台,Gin 负责 API 与实时
- 适合作为 Go 全栈入门与社交产品模块参考,MIT 开源欢迎 Star / PR

全部评论(0)