GitHub - ankorstore/yokai-grpc-template: gRPC application template based on the Yokai Go framework. (original) (raw)
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:
- a ready to extend Yokai application, with the gRPC server module installed
- a ready to use dev environment, based on Air (for live reloading)
- a ready to use Dockerfile for production
- some examples of service and test to get started
Layout
This template is following the recommended project layout:
cmd/: entry pointsconfigs/: configuration filesinternal/:service/: gRPC service and test examplesbootstrap.go: bootstrapregister.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:
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:50051for 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" }