Skip to content

Lirous587/go-scaffold

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

32 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

基于 Gin 的轻量级脚手架

一个基于 Gin 框架的轻量级脚手架,集成了常用组件,帮助你快速搭建高性能的 Go Web 应用。

Go Version Gin GORM

🚀 特性

  • 📝 完整的项目结构和最佳实践
  • 🔒 JWT 认证集成
  • 📊 统一的 API 响应格式
  • 🔄 强大的中间件支持
  • 📋 详尽的日志记录
  • 🔌 多数据库支持
  • 🛠️ 优雅的错误处理
  • 🚦 优雅启动和关闭

🔧 技术栈

  • Gin - 高性能 HTTP Web 框架
  • GORM - 优秀的 ORM 库,支持 MySQL、PostgreSQL 等
  • Viper - 完整的配置解决方案
  • Zap - 高性能、结构化日志
  • Redis - Redis 客户端

📁 项目结构

scaffold/
├── internal/         # 实际业务逻辑
│   └── ...
│   └── ...
├── logs/             # 日志文件
├── manifest/         # 配置文件目录
│   └── config/
│       └── config.yaml
│   └── docker/
│       └── Dockerfile
├── pkg/              # 依赖项
│   ├── config/       # 配置结构化管理
│   ├── httpserver/   # gin引擎初始化
│   ├── logger/       # 日志配置
│   ├── repository/   # 数据存储层
│   │   ├── db/       # 数据库单例
│   │   └── redis/    # Redis单例
│   ├── validator/    # validator管理
├── resource/              # 静态资源
├── utility/          # 工具函数
├── .air.conf         # air配置
├── .gitignore
├── main.go           # 主入口
└── README.md

⚡ 快速开始

前置要求

  • Go 1.18+
  • MySQL 5.7+ 或 PostgreSQL 10+
  • Redis 6.0+

安装

  1. 克隆项目
git clone https://github.com/yourusername/scaffold.git
cd scaffold
  1. 安装依赖
go mod tidy
  1. 修改配置

编辑 manifest/config/config.yaml 配置文件,设置数据库和 Redis 连接信息。

  1. 运行服务
go run main.go

⚙️ 配置项

配置文件路径:manifest/config/config.yaml

server:
  mode: "production" # 运行模式: development, production
  port: "8080" # 服务端口

log:
  mode: "dev" # 日志模式
  level: "info" # 日志级别: debug, info, warn, error
  filename: "logs/scaffold.log"
  max_size: 1 # 单个日志文件大小(MB)
  max_age: 30 # 日志保留天数
  max_backups: 7 # 保留的旧日志文件数量

db:
  driver: "mysql" # 数据库类型: mysql, postgres
  host: "127.0.0.1"
  port: "3306"
  username: "root"
  password: "password"
  dbname: "scaffold"
  max_open_con: 100
  max_idle_con: 50
  log_level: "info"
  slow_threshold: 200 # 慢SQL阈值(ms)

redis:
  host: "127.0.0.1"
  port: "6379"
  db: 0
  password: ""
  pool_size: 200

auth:
  admin:
    jwt_secret: "your-secret-key"
    jwt_expire_minute: 120
  user:
    jwt_secret: "your-secret-key"
    jwt_expire_minute: 120

🔌 主要组件

httpserver - Web 引擎

基于 Gin 封装,支持优雅重启和关闭:

// 初始化路由
s := httpserver.New(8080)

// 启动服务
s.Run()

Logger - 日志系统

基于 Zap,支持分级、轮转和多输出:

// 记录信息
zap.L().Info("操作成功",
    zap.String("user", "admin"),
    zap.Int("items", 10))

// 记录错误
zap.L().Error("数据库错误",
    zap.Error(err),
    zap.String("query", "SELECT * FROM users"))

数据库 - GORM

支持 MySQL 和 PostgreSQL,自动迁移:

Redis - 缓存

简化的 Redis 操作:

// 设置缓存
err := redis.Client().Set(ctx, "key", "value", time.Minute).Err()

// 获取缓存
val, err := redis.Client().Get(ctx, "key").Result()

📝 最佳实践

  1. 配置验证 - 启动时自动验证必要配置项
  2. 错误处理 - 使用 github.com/pkg/errors 提供完整错误栈
  3. 优雅关机 - 处理 SIGTERM 等信号,平滑关闭服务
  4. 热重启 - 支持不停机更新应用程序

🤝 贡献

欢迎贡献代码或提出建议!请遵循以下步骤:

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

📄 许可证

本项目采用 MIT 许可证 - 详情参见 LICENSE 文件

🙏 致谢


⭐️ 如果这个项目对你有帮助,请给它一个 start!

About

go手脚架 基于gin 模块式开发 高扩展

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages