一个基于 Gin 框架的轻量级脚手架,集成了常用组件,帮助你快速搭建高性能的 Go Web 应用。
- 📝 完整的项目结构和最佳实践
- 🔒 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作为示例
- 新建目录
mkdir demo
- 克隆项目
git clone https://github.com/Lirou587/go-scaffold.git
- 移动目录 并删除git记录
robocopy go-scaffold . /E /XD .git
- 删除clone目录
Remove-Item go-scaffold -Recurse -Force
- 编写并运行replace脚本
cd ./tool/replace
go build
./replace.exe demo # 填写想要的实际module名
- 删除replace
cd ..
rm ./replace
- 安装依赖
cd ..
go mod tidy
-
修改配置 将
.copy.env
重命名为.env
,配置.env
-
配置依赖 修改
docker
目录下的.env
配置文件,将COMPOSE_PROJECT_NAME
修改为对的项目名称以防止冲突,除此之外还需修改端口映射和网段以防止占用问题 -
运行服务
go run main.go
# 或者运行 air
- 配置验证 - 启动时自动验证必要配置项
- 错误处理 - 使用
github.com/pkg/errors
提供完整错误栈 - 优雅关机 - 处理 SIGTERM 等信号,平滑关闭服务
- 热重启 - 支持不停机更新应用程序
欢迎贡献代码或提出建议!请遵循以下步骤:
- Fork 项目
- 创建特性分支 (
git checkout -b feature/amazing-feature
) - 提交更改 (
git commit -m 'Add some amazing feature'
) - 推送到分支 (
git push origin feature/amazing-feature
) - 创建 Pull Request
本项目采用 MIT 许可证 - 详情参见 LICENSE 文件
以下排名不分先后
⭐️ 如果这个项目对你有帮助,请给它一个 start!