Monorepo
A monorepo integrating Kratos, Ent, and GraphQL for building modern, scalable, and maintainable backend services.
๐ Overview
keg (short for Kratos, Ent, and GraphQL) is a highly modular monorepo structure that provides a robust foundation for developing backend services in Go. By combining the best practices of Kratos (a Go microservices framework), Ent (an ORM for Go), and GraphQL, this monorepo streamlines the process of building and scaling backend applications.
๐ฏ Features
- Kratos Integration: Use Kratos for building efficient and scalable microservices with advanced features like service discovery, logging, and configuration management.
- Ent ORM: A powerful, type-safe ORM that simplifies database schema management and querying.
- GraphQL Support: First-class GraphQL support for defining, querying, and mutating data.
- Monorepo Structure: Centralized codebase for better dependency management and shared utilities across services.
๐ Project Structure
.
โโโ Makefile
โโโ bin
โโโ cmd
โ โโโ admin # admin service (example)
โ โ โโโ main.go
โ โ โโโ wire.go
โ โ โโโ wire_gen.go
โ โโโ gateway # kratos-gateway
โ โโโ main.go
โโโ configs
โ โโโ admin.yaml
โ โโโ gateway.yaml
โโโ deploy
โ โโโ components
โ โ โโโ docker-compose.yaml
โ โโโ build
โ โ โโโ Dockerfile
โ โ โโโ admin
โ โ โ โโโ Dockerfile # Dockerfile for admin service
โ โ โโโ common
โ โ โโโ Dockerfile # common Dockerfile for all services
โ โโโ kubernetes # k8s deployment template files
โ โโโ admin.yaml
โ โโโ configmap.yaml
โ โโโ gateway.yaml
โ โโโ output # k8s deployment files output directory
โโโ internal
โ โโโ app
โ โ โโโ admin
โ โ โ โโโ biz
โ โ โ โโโ cmd
โ โ โ โโโ conf
โ โ โ โโโ data
โ โ โ โโโ job
โ โ โ โโโ schedule
โ โ โ โโโ server
โ โ โ โโโ service
โ โ โ โโโ graphql
โ โ โ โ โโโ dataloader # Optimizing N+1 database queries
โ โ โ โ โ โโโ dataloader.go
โ โ โ โ โโโ ent.graphql
โ โ โ โ โโโ ent.resolvers.go
โ โ โ โ โโโ generate.go
โ โ โ โ โโโ gqlgen.yml
โ โ โ โ โโโ model
โ โ โ โ โ โโโ models_gen.go
โ โ โ โ โโโ resolver.go
โ โ โ โโโ service.go
โ โ โโโ gateway
โ โ โ โโโ middleware # custom gateway middleware
โ โ โ โโโ auth.go
โ โ โ โโโ permission.go
โ โโโ data # database schema
โ โ โโโ example
โ โ โ โโโ ent
โ โ โ โโโ schema
โ โโโ pkg
โ โโโ auth
โ โโโ auth.go
โโโ keg.yaml # keg ้
็ฝฎๆไปถ
โโโ logs
โโโ scripts
โ โโโ base.mk
โ โโโ compose.mk
โ โโโ init.mk
โโโ website