Cago 一个快速开发的集成式框架.使用模块化的开发模式,每一个组件都可以单独的调用.
Cago 只对社区工具进行集成,大大减少迁移难度和学习成本,我们不生产代码,我们只是方案的搬运工.
使用 go 的struct来声明 API 和 swagger 文档,可以通过脚手架来帮助你生成相关内容.
你可以通过简单示例来快速的了解 Cago 的使用。你也可以复制这个示例来创建你的项目。
完整文档入口见 Cago 文档导航。
你可以安装脚手架来帮助你生成代码。
仓库通过 make lint 运行固定版本的 golangci-lint,并内置 Cago 框架结构检查器
cagolint。除了常规 Go 静态检查外,它还会检查 API 路由元数据、
Controller handler 签名、Service/Repository 命名和分层依赖。支持安全修复的规则可以通过
make lint-fix 自动处理。
CI 会在每次 push 和 pull request 时执行相同的 lint harness。规则列表、配置和开发方式见
tools/cagolint/README.md。
cago 提供了gitlab-ci、golanglint-ci和
Kubernetes helm的 CI/CD 配置文件,可以快速帮你实现 CI/CD.
当本地调试时也可以使用docker-compose.yaml启动调试环境.
可以使用etcd作为配置中心,也支持文件作为配置启动。
大多数组件都是基于社区工具进行封装,方便使用。
Cago使用三层架构,并混合了DDD的思想,推荐使用下面的目录结构。你也可以根据自己的需求来调整目录结构。
cmd/app/main.go项目的入口configsconfig.yaml配置文件...其他配置文件,也可以写配置读取方法,其它包调用:configs.GetConfig().XXX
docs文档目录,包括 swagger api 文档、设计文档等deploy部署资源文件internal内部包apiAPI 请求结构体example/example.goapi请求与返回结构router.go路由定义
controller控制器目录,API请求会调用控制器,做一些数据处理校验逻辑model数据模型entity数据库实体模型,推荐使用充血模型xxx.go一些数据模型的定义
pkg项目内通用的模块code错误码定义utils工具包
repository数据库操作service服务接口task任务模块crontab定时任务queue消息队列handler消息队列处理器message消息定义xxx.go消息队列定义
task.go任务定义
migrations数据库迁移文件pkg公共的模块,可以被其它项目引用.golangci.ymlgolangci-lint 配置文件Makefile项目的 Makefile 文件
本项目提供了 AI 编程助手的 Skill 支持,详见 Skill 文档。
cago:从 API、Service 或数据库结构生成项目代码和 Swagger 文档。cagolint:检查 Cago 项目的分层、路由元数据和命名约定,已集成到make lint。tools/skill:供 AI 编程助手读取的框架知识,不是可执行程序,也不参与 Go 构建。
- GoFrame
- GoMicro