monorepo

module
v0.0.0-...-a7b4bc4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 24, 2024 License: MIT

README ยถ

Monorepo

Go Report Card Go Reference License

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

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL