EnGin

基于 entgo + Gin + Cobra 的 Go 后端项目脚手架,开箱即用。

技术栈

组件 选型
ORM entgo.io/ent — 代码生成式 ORM
Web 框架 Gin
CLI Cobra
配置管理 Viper + YAML + 热加载
日志 Zap + Lumberjack 自动轮转
数据库 MySQL / PostgreSQL

项目结构

EnGin/
├── cmd/server/              # CLI 入口与子命令
│   ├── main.go              # 程序入口
│   ├── root.go              # 根命令(加载配置、初始化日志)
│   ├── server.go            # server 子命令:启动 Web 服务
│   ├── migrate.go           # migrate 子命令:数据库迁移
│   ├── user.go              # user 子命令:用户操作
│   └── gen.go               # gen 子命令:重新生成 ent 代码
├── configs/
│   └── config.yaml          # 主配置文件
├── internal/
│   ├── conf/                # 配置结构定义与加载
│   ├── db/                  # 数据库客户端初始化 + 连接池
│   ├── ent/                 # ent 生成的 ORM 代码
│   │   └── schema/          # Schema 定义(在这里定义数据模型)
│   ├── global/              # 全局变量 (Config, Log)
│   ├── handler/             # HTTP 路由注册
│   ├── logger/              # Zap 日志初始化
│   ├── server/              # Gin 服务启动
│   └── service/             # 业务逻辑层
├── Makefile
├── go.mod
└── .air.toml                # Air 热重载配置

快速开始

环境要求

  • Go >= 1.25
  • MySQL 或 PostgreSQL

1. 配置数据库

编辑 configs/config.yaml:

database:
  driver: "postgres"     # mysql 或 postgres
  host: "127.0.0.1"
  port: 5432
  user: "postgres"
  password: "123456"
  dbname: "test_db"

2. 安装依赖

go mod tidy

3. 运行

# 启动 Web 服务
go run cmd/server/*.go server

# 或使用 Makefile
make run

CLI 命令

# 查看帮助
go run cmd/server/*.go -h

# 启动 HTTP 服务(默认 :8080)
go run cmd/server/*.go server -c configs/config.yaml

# 数据库自动迁移
go run cmd/server/*.go migrate -c configs/config.yaml

# 重新生成 ent 代码
go run cmd/server/*.go gen

# 用户操作
go run cmd/server/*.go user create    # 创建用户

开发指南

添加新数据模型

  1. 在 internal/ent/schema/ 下创建新的 Schema 文件
  2. 运行代码生成:
make generate
# 或 go generate ./internal/ent

添加新 API

  1. 在 internal/service/ 中编写业务逻辑
  2. 在 internal/handler/router.go 中注册路由

配置说明

配置项 说明
server.port 服务端口
server.mode debug(控制台彩色日志)/ release(JSON 日志)
database.driver mysql 或 postgres
logger.level debug / info / warn / error
logger.filename 日志输出路径
logger.max_size 单个日志文件最大大小(MB)
logger.max_backups 保留的旧日志文件数
logger.max_age 日志保留天数

热重载(可选)

项目已配置 Air,安装后可直接使用:

air

Makefile

make run        # 启动服务
make generate   # 生成 ent 代码
make build      # 编译二进制到 bin/server

License

MIT

S
Description
No description provided
Readme MIT
15 MiB
0 Stars 1 Watchers 0 Forks
Languages
Go 99.7%
Makefile 0.3%