Thanks to visit codestin.com
Credit goes to github.com

Skip to content

gRPC application template based on the Yokai Go framework.

License

Notifications You must be signed in to change notification settings

ankorstore/yokai-grpc-template

Repository files navigation

Yokai gRPC Template

License: MIT Go version Documentation

gRPC application template based on the Yokai Go framework.

Documentation

For more information about the Yokai framework, you can check its documentation.

Overview

This template provides:

Layout

This template is following the recommended project layout:

  • cmd/: entry points
  • configs/: configuration files
  • internal/:
    • service/: gRPC service and test examples
    • bootstrap.go: bootstrap
    • register.go: dependencies registration
  • proto/: protobuf definition and stubs

Makefile

This template provides a Makefile:

make up      # start the docker compose stack
make down    # stop the docker compose stack
make logs    # stream the docker compose stack logs
make fresh   # refresh the docker compose stack
make stubs   # generate gRPC stubs with protoc (ex: make stubs from=proto/example.proto)
make test    # run tests
make lint    # run linter

Getting started

Installation

With GitHub

You can create your repository using the GitHub template.

It will automatically rename your project resources and push them, this operation can take a few minutes.

Once ready, after cloning and going into your repository, simply run:

make fresh

With gonew

You can install gonew, and simply run:

gonew github.com/ankorstore/yokai-grpc-template github.com/foo/bar
cd bar
make fresh

Usage

Once ready, the application will be available on:

  • localhost:50051 for the application gRPC server
  • http://localhost:8081 for the application core dashboard

If you update the proto definition, you can run make stubs from=proto/example.proto to regenerate the stubs.

Usage examples with gRPCurl:

  • with ExampleService/ExampleUnary:
grpcurl -plaintext -d '{"text":"hello"}' localhost:50051 example.ExampleService/ExampleUnary
{
  "text": "response from grpc-app: you sent hello"
}
  • with ExampleService/ExampleStreaming:
grpcurl -plaintext -d '@' localhost:50051 example.ExampleService/ExampleStreaming <<EOF
{"text":"hello"}
{"text":"world"}
EOF
{
  "text": "response from grpc-app: you sent hello"
}
{
  "text": "response from grpc-app: you sent world"
}

You can use any gRPC clients, for example Postman or Evans.