/grpcx

gRPCX is a library for easily building gRPC services in Go. It has support for REST APIs, ORM, Database Migrations, Cache, Message Streaming, Structured Logging, Config, Healthchecks, Prometheus Metrics, and more.

Primary LanguageGoApache License 2.0Apache-2.0

gRPCX

GoDoc

gRPCX is a framework for building enterprise-grade Saas applications with gRPC. It is meant to be a batteries-included framework for building enterprise-grade gRPC services.

go get github.com/autom8ter/grpcx

Features

  • gRPC
  • gRPC-gateway
  • Serve Gateway/gRPC same port(cmux)
  • Flexible Provider/Interface based architecture: use the same code with different providers depending on tech stack
  • Metrics(prometheus)
  • File Storage dependency injection(local, gcs)
  • Structured Logging(slog)
  • Database Migrations(golang-migrate)
  • Database dependency injection(sqlite,mysql,postgres)
  • Cache dependency injection(redis)
  • Stream dependency injection(redis,nats)
  • Email dependency injection(smtp)
  • Payment Processing dependency injection(stripe)
  • Context Tagging Middleware/Interceptor
  • Authentication with protoc-gen-authenticate
  • Authorization with protoc-gen-authorize
  • Rate-limiting with protoc-gen-ratelimit
  • Request Validation with protoc-gen-validate
  • Compatible with protoc-gen-validate
  • Flexible configuration(viper)
  • Graceful Shutdown
  • Panic Recovery middleware/interceptor
  • CORS middleware(for gRPC-gateway)
  • Can be run completely in-memory for testing

Other gRPC Projects

TODO

  • Add more tests
  • Add more examples
  • Add more documentation
  • Add kafka stream provider
  • Add rabbitmq stream provider
  • Add sendgrid email provider
  • Add mailgun email provider
  • Add tracing support