Yokai gRPC Template
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:
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.