Skip to content

Jiang-Xia/gin-zone

Repository files navigation

🚀 Gin Zone

一个现代化的全栈开发练手项目

Go + React + UniApp 技术栈的完整实现

license Go React UniApp Gin

📖 项目介绍

Gin Zone 是一个基于现代化技术栈的全栈开发练手项目,采用前后端分离架构,旨在为开发者提供一个完整的学习和实践平台。项目涵盖了社交动态、实时聊天、博客系统、后台管理等多个核心功能模块。

🎯 项目特色

  • 🏗️ 现代化架构:采用前后端分离,微服务化设计思想
  • 📱 一码多端:基于 UniApp 实现 H5、小程序、APP 多端发布
  • ⚡ 高性能后端:Go + Gin 提供高并发、低延迟的 API 服务
  • 🎨 现代化前端:React + TypeScript + Ant Design 构建管理后台
  • 💬 实时通信:WebSocket 实现的实时聊天功能
  • 🔐 完善权限:JWT 认证 + 路由守卫的安全体系
  • 📊 数据可视化:图表展示和数据分析功能
  • 🚀 工程化:Husky + Commitlint 规范化开发流程

🛠️ 技术栈

后端服务 (Server)

技术 版本 说明
Go 1.23.3 开发语言
Gin 1.10.0 Web框架
GORM 1.25.12 ORM框架
MySQL 8.0+ 关系型数据库
Redis latest 缓存数据库
JWT 4.5.1 身份认证
WebSocket latest 实时通信
Swagger 1.16.4 API文档
Logrus 1.9.3 日志记录

前端管理后台 (Admin)

技术 版本 说明
React 18.2.0 前端框架
TypeScript 4.4.2 类型系统
Ant Design 5.4.0 UI组件库
Redux Toolkit 1.9.3 状态管理
React Router 6.x 路由管理
Axios 1.3.5 HTTP客户端
Craco 7.1.0 构建工具

跨端客户端 (Client)

技术 版本 说明
Vue 3.x 前端框架
UniApp latest 跨端框架
Vite latest 构建工具
uni-ui latest UI组件库
dayjs 1.11.13 日期处理
marked 4.2.12 Markdown解析
prismjs 1.29.0 代码高亮

✨ 核心功能

🔐 用户系统

  • 用户注册/登录、微信授权登录
  • JWT令牌认证、密码加密
  • 用户信息管理、头像上传
  • 权限控制和路由守卫

📝 动态模块

  • 发布动态、图片/视频上传
  • 点赞浏览统计、动态列表展示
  • 地理位置标记、时间管理
  • 富文本编辑、Markdown支持

💬 聊天系统

  • WebSocket实时通信
  • 私聊/群聊功能
  • 好友管理、聊天记录
  • AI聊天集成、表情支持

📱 博客系统

  • 文章发布和管理
  • Markdown编辑器
  • 代码高亮显示
  • 文章分类和标签

📊 数据展示

  • 图表可视化
  • 数据统计分析
  • 支付转账演示
  • 扫码功能

🔧 管理后台

  • 动态内容管理
  • 用户信息管理
  • 数据统计报表
  • 系统配置管理

📁 项目结构

gin-zone/
├── server/                 # 后端服务 (Go + Gin)
│   ├── app/               # 应用核心代码
│   │   ├── controller/    # 控制器层
│   │   ├── service/       # 业务逻辑层
│   │   ├── model/         # 数据模型
│   │   ├── cron/          # 定时任务
│   │   └── database/      # 数据库配置
│   ├── config/            # 配置文件
│   ├── middleware/        # 中间件
│   ├── router/            # 路由配置
│   ├── pkg/               # 工具包
│   ├── docs/              # API文档
│   ├── storage/           # 数据库脚本
│   └── main.go            # 程序入口
├── admin/                 # 管理后台 (React + TypeScript)
│   ├── src/
│   │   ├── api/           # API接口
│   │   ├── pages/         # 页面组件
│   │   ├── components/    # 公共组件
│   │   ├── redux/         # 状态管理
│   │   ├── routers/       # 路由配置
│   │   └── utils/         # 工具函数
│   └── package.json
├── client/                # 跨端客户端 (UniApp + Vue3)
│   ├── pages/             # 页面路由
│   ├── components/        # 自定义组件
│   ├── uni_modules/       # UI组件库
│   ├── stores/            # 状态管理
│   ├── common/            # 公共资源
│   ├── static/            # 静态资源
│   └── package.json
├── scripts/               # 自动化脚本
│   ├── install.sh         # 依赖安装
│   └── run.sh             # 启动脚本
└── package.json           # 根目录配置

🚀 快速开始

环境要求

  • Go 1.23.3+
  • Node.js 16.0.0+
  • MySQL 8.0+
  • Redis latest
  • Git latest

一键安装

# 克隆项目
git clone https://github.com/Jiang-Xia/gin-zone.git
cd gin-zone

# 安装所有依赖
npm run i:all
# 或者使用脚本
bash ./scripts/install.sh

数据库配置

  1. 创建MySQL数据库
CREATE DATABASE zone_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
  1. 导入数据库结构
mysql -u root -p zone_db < server/storage/zone.sql
  1. 导入初始数据(可选)
mysql -u root -p zone_db < server/storage/initData.sql
  1. 配置环境变量
# 复制并修改配置文件
cp server/config/env.ini server/config/env.local.ini
# 根据实际情况修改数据库连接信息

启动服务

一键启动所有服务

npm run r:all
# 或者使用脚本
bash ./scripts/run.sh

分别启动服务

后端服务

cd server
# 开发环境(推荐使用Air热重载)
air
# 或直接运行
go run main.go

管理后台

cd admin
npm start
# 默认端口: 3001

客户端

cd client
# H5开发
npm run dev:h5
# 微信小程序
npm run dev:mp-weixin
# 使用HBuilderX(推荐)
# 用HBuilderX打开client文件夹,点击运行

访问地址

📱 在线预览

🌐 在线体验

📱 移动端体验

APP下载 H5页面 微信小程序 支付宝小程序
扫码下载APP 扫码体验H5页面 扫码体验小程序 扫码体验小程序

📚 详细文档

Server端 (详细文档请查看 server/README.md)

  • 架构设计: MVC分层架构,中间件模式
  • API接口: RESTful API设计,Swagger文档
  • 数据库: GORM + MySQL + Redis
  • 认证授权: JWT + 微信登录
  • 实时通信: WebSocket聊天系统
  • 定时任务: Cron定时任务调度
  • 日志系统: 结构化日志记录
  • 文件上传: 多媒体文件处理

Client端 (详细文档请查看 client/README.md)

  • 跨端开发: 一套代码多端发布
  • UI组件: 丰富的uni-ui组件库
  • 状态管理: Vuex状态管理
  • 网络请求: 统一的API请求封装
  • 富文本: Markdown解析和代码高亮
  • 实时聊天: WebSocket客户端实现
  • 国密加密: 安全通信支持
  • 多环境: SIT/UAT/PROD环境配置

Admin端 (详细文档请查看 admin/README.md)

  • 现代化UI: React 18 + Ant Design 5
  • 类型安全: TypeScript完整类型定义
  • 状态管理: Redux Toolkit
  • 路由管理: React Router 6
  • 动态管理: 社交动态内容管理
  • 用户认证: 多种登录方式
  • 数据展示: 高级表格和图表组件

🚀 部署指南

Docker部署(推荐)

# 构建镜像
docker-compose build

# 启动服务
docker-compose up -d

传统部署

# 后端编译 部署linux系统
set CGO_ENABLED=0
# 坑点:这是window cmd中的语法
set GOOS=linux
# powershell 需要使用以下命令设置
$env:GOOS="linux"
set GOARCH=amd64
cd server
go build -o zone-server main.go

# 前端构建
cd admin
npm run build

cd client
npm run build

坑点(Linux 服务器):可执行文件拷贝或编译到 Linux 后,默认可能没有执行权限,直接运行 ./main./zone-server 等会报 bash: Permission denied。在二进制所在目录执行:

chmod +x ./main          # 或与 go build -o 指定的文件名一致,如 zone-server
./main

🤝 贡献指南

欢迎提交 Issue 和 Pull Request!

  1. Fork 本仓库
  2. 创建特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 打开 Pull Request

提交规范

本项目使用 Conventional Commits 规范:

feat: 新功能
fix: 修复bug
docs: 文档更新
style: 代码格式
refactor: 重构
test: 测试
chore: 构建/工具

🔗 相关链接

代码仓库

技术文档

📄 开源协议

本项目基于 MIT 协议开源。

👨‍💻 开源作者

jiang-xia


⭐ 如果这个项目对你有帮助,请给一个 Star 支持一下!

About

gin-zone 包含了admin和client两个前端项目,server一个后端服务。Client 是一个基于 Vue3、Vite、Uniapp 跨端项目,可打包生成h5 app 微信小程序等。Zone server 服务端是使用go、gin、等技术栈编写的MVC模式后端服务。欢迎star!

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors