{"repo":"sy159/snowgo","free":true,"listed":false,"github":"https://github.com/sy159/snowgo","clone":"git clone https://github.com/sy159/snowgo.git","description":"基于Gin+Gorm封装的快速开发Golang API轻量项目，开箱既用，快速开发，存在配套基础管理后台","language":"Go","stars":22,"topics":["gen","gin","go","gorm","jwt","rbac","golang"],"license":"MIT","category":"auth-billing-email","readme_excerpt":"snowgo 基于 Gin + GORM Gen 的模块化 Go Web 脚手架，内置后台管理、鉴权、RBAC、缓存、消息队列与工程治理约束，适合快速构建企业内部 RESTful API 服务 --- 📑 目录 - ✨ 特性概览 - 🏗️ 架构设计 - 📂 项目结构 - 🚀 快速开始 - 🛠️ 常用命令 - 🔌 服务入口 - 🧩 中间件清单 - 🏥 健康检查 - 📐 新业务功能开发流程 - 🌍 环境变量 - 🔄 CI / CD - 📖 文档 & 参考 - 📄 许可证 --- ✨ 特性概览 模块 组件 描述 :------------ :--------------------------- :---- 🌐 Web 框架 Gin 高性能 HTTP 框架 ⚙️ 配置管理 Viper 多环境配置文件（dev / container / uat / prod） 📜 日志系统 Zap + RotateLogs 结构化日志，支持文件轮转与脱敏输出； deploy/elk 提供可选采集示例 🗄️ 数据访问 GORM + Gen + dbresolver ORM 工具，支持读写分离、多数据库配置；Model/Query 代码自动生成 🚀 缓存系统 go-redis Redis 客户端封装，支持缓存与分布式锁 🔐 鉴权系统 JWT v5 access token / refresh token 双 Token 鉴权，refresh token 单用+JTI 追踪 🛂 权限系统 自定义 RBAC 基于菜单树结构的按钮/接口级权限控制 🛡️ 限流中间件 Fixed Window + Token Bucket 固定窗口（Redis 原子计数）+ 令牌桶（内存速率控制）；支持 IP 白名单、路由级限流、Key 级限流 🔗 链路追踪 OpenTelemetry 可选开启，trace id 自动注入日志与 HTTP Header；Tempo 作为外部后端接入 📊 性能分析 pprof 按需开启，内网 IP 白名单保护 🏥 健康检查 /healthz / /readyz 支持 K8s liveness / readiness probe 📨 消息队列 RabbitMQ 生产者/消费者封装，独立部署扩缩容 📈 监控部署 Prometheus + Grafana deploy/monitor 提供部署示例；业务指标与告警规则按项目接入 🔨 代码生成 GORM Gen 根据数据库表自动生成 Model + Query API --- 🏗️ 架构设计 分层规则 ：Router → API → Service → DAO → DAL → MySQL / Redis - 每层只调用下一层，禁止跨层调用 - API 只调用 Service（不调 DAO），Service 只调用 DAO（不调 GORM Gen 直接） - 跨 Service package 的共享能力通过 internal/service/admin/contract 定义稳定接口与 DTO，业务包依赖契约而不是依赖其他业务包的具体 Service - Service 层决定事务边界；DAO 统一接收调用方传入的 query.Query - 多表写操作、需要操作日志原子落库的业务写操作必须使用事务；独立单表写入可按业务需要非事务执行 - 缓存失效在 DB 提交后执行，禁止在事务中操作缓存 --- 📂 项目结构 --- 🚀 快速开始 环境要求 - Go = 1.25 -","default_branch":null,"files":null,"tree":[],"storefront":"/r/sy159","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/sy159/snowgo/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}