Skip to content

Lirous587/go-scaffold

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

83 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

基于 Gin 的轻量级脚手架

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

Go Version Gin SQLBoiler

🚀 特性

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

🔧 技术栈

  • Gin - 高性能 HTTP Web 框架
  • SQLBoiler - 优秀的 ORM 库,基于代码生成
  • Redis - Redis 客户端
  • Zap - 高性能、结构化日志
  • Wire - Wire 依赖注入
  • JWT - JWT 鉴权管理

📁 项目结构

scaffold/
├── api/
├── docker/
├── internal/
│   ├── common
│   │    ├── email/         # email相关
│   │    ├── jwt/           # jwt相关
│   │    ├── logger/        # 日志配置
│   │    ├── metrics/       # 指数收集
│   │    ├── middleware/    # 中间件
│   │    ├── orm/           # SQLBoiler生成的代码
│   │    ├── server/        # 服务配置
│   │    ├── utils/         # utils工具函数
│   │    └── validator/     # validator管理
│   └── user                # 用户模块
│   └── ...                 # 其余模块
├── logs/                   # 日志文件
├── tool/                   # 工具脚本
├── .air.conf               # air配置
├── .env                    # 环境变量
├── .gitignore
├── main.go                 # 主入口
└── README.md
└── sqlboiler.toml          # sqlboiler相关配置

⚡ 快速开始

前置要求

  • Go 1.18+
  • PostgreSQL 10+
  • Redis 6.0+

快速开始

以下演示以Windows作为示例

  1. 新建目录
mkdir demo
  1. 克隆项目
git clone https://github.com/Lirou587/go-scaffold.git
  1. 移动目录 并删除git记录
robocopy go-scaffold . /E /XD .git
  1. 删除clone目录
Remove-Item go-scaffold -Recurse -Force
  1. 编写并运行replace脚本
cd ./tool/replace
go build
./replace.exe demo # 填写想要的实际module名
  1. 删除replace
cd ..
rm ./replace
  1. 安装依赖
cd ..
go mod tidy
  1. 修改配置 将 .copy.env 重命名为 .env,配置 .env

  2. 配置依赖 修改 docker 目录下的 .env 配置文件,将 COMPOSE_PROJECT_NAME 修改为对的项目名称以防止冲突,除此之外还需修改端口映射和网段以防止占用问题

  3. 运行服务

go run main.go
# 或者运行 air

📝 最佳实践

  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 模块式开发 高扩展

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages