Awesome Open Source
Awesome Open Source


Microservices starter kit for Golang, aims to be developer friendly.

GoDoc Go Renovate dependency Status MIT license

Build Status

Build Status


Go Report Card Total alerts codecov Language grade: Go fuzzit


Image of Deployment

What you get

Getting Started


Refer prerequisites docs

Initial Setup

Also Refer scaffolding docs

clone the repo

git clone ~/Developer/Work/go/micro-starter-kit
# pull dependencies (when every time `go.mod` changed)
go mod download



By default this project use embedded sqlite3 database. if you want to use postgreSQL,

  • start postgres via docker-compose command provided below
  • uncommend postgres import statement and comment sqlite in plugin.go
  • start micro server with flag
    i.e., go run srv/account/main.go srv/account/plugin.go
# to start postgres in foreground
docker-compose up postgres
# to stop postgres
docker-compose down
# if needed, remove `postgres_data` volume to recreate database next time, when you start.
docker system prune --volumes


Node: --server_address=localhost:5501x --broker_address=localhost:5502x required only when you are behind VPN a.k.a Work From Home

# dev mode
make run-account
# or
make run-account ARGS="--server_address=localhost:55011 --broker_address=localhost:55021"
# or
go run srv/account/main.go srv/account/plugin.go \
--configDir deploy/bases/account-srv/config \
--server_address=localhost:55011 --broker_address=localhost:55021

make run-greeter
# or
make run-emailer ARGS="--server_address=localhost:55012 --broker_address=localhost:55022"

make run-emailer
# or
make run-emailer ARGS="--server_address=localhost:55013 --broker_address=localhost:55023"

# integration tests for config module via CMD
make run TARGET=demo TYPE=cmd
go run cmd/demo/main.go --help
go run cmd/demo/main.go --database_host= --database_port=7777

export APP_ENV=production
go run cmd/demo/main.go


Refer testing docs



Refer makefile docs


Refer docker docs


Refer releasing docs


make docker DOCKER_CONTEXT_PATH=xmlking/micro-starter-kit
docker rmi $(docker images -f "dangling=true" -q)

# make kustomize OVERLAY=e2e NS=default VERSION=v0.1.0-440-g6c7fb7a
make kustomize
kubectl apply -f build/kubernetes.yaml

POD_NAME=$(kubectl get pods -o jsonpath='{.items[0]}')
kubectl logs -f -c srv $POD_NAME

kubectl delete -f build/kubernetes.yaml


Project Docs

  1. prerequisites
  2. scaffolding
  3. makefile
  4. testing
  5. docker
  6. gitops
  7. Protobuf Style Guide
  8. Google Protobuf Style Guide

External Docs

  1. Go-Micro Getting Started
  2. examples - example usage code for micro
  3. microhq - a place for prebuilt microservices
  4. explorer - which aggregates micro based open source projects
  5. micro-plugins extensible micro plugins
  6. step-by-step-guide-micro
  7. micro-in-cn
  8. Platform Web
  9. grpc template
  10. Simple API backed by PostgresQL, Golang and gRPC

Get A Weekly Email With Trending Projects For These Topics
No Spam. Unsubscribe easily at any time.
go (15,168
golang (3,887
kubernetes (1,772
microservices (463
grpc (303
monorepo (108
gateway (105
cicd (64
micro (57
go-micro (17