Skip to content

purposeinplay/go-starter-grpc-gateway

Repository files navigation

GoStarter

This starter kit is designed to get you up and running with a project structure optimized for developing RESTful API services in Go. It is an opinionated Go starter kit built on top of Chi, using battle tested libraries proven to provide a good foundation for a project written in Golang.

Prerequisites

The codebase requires these development tools:

  • Go compiler and runtime: 1.15.2 or greater.
  • Protobuf: 3.14.0 or greater.
  • Docker Engine: 19.0.0 or greater.

You must install the Go plugins for the Protobuf toolchain:

env GO111MODULE=off go install "github.com/golang/protobuf/protoc-gen-go"

For the latest instructions see the official documentation.

Go Dependencies

The project uses Go modules which should be vendored:

env GO111MODULE=on GOPRIVATE="github.com" go mod vendor

You can regenerate the Protobuf Go generated stubs:

make proto

Configuration

You may configure GoStarter using either a configuration file named .env, environment variables, or a combination of both. Environment variables are prefixed with GOSTARTER, and will always have precedence over values provided via file.

Server

SERVER_ADDRESS: localhost
SERVER_PORT: 7350

ADDRESS - string

Hostname to listen on.

PORT - number

Port number to listen on. Defaults to 7350.

Database

DB_DRIVER: postgres
DB_HOST: dbhost
DB_USER: dbuser
DB_PASSWORD: dbpassword
DB_NAME: dbname

Migrations Note Migrations are not applied automatically, so you will need to run them after you've built GoStarter.

  • If built locally: ./gostarter migrate
  • Using Docker: docker run --rm gostarter gostarter migrate

Start in Development

The recommended workflow is to use Docker and the compose file to build and run the service and resources.

docker-compose -f docker-compose.dev.yml up

Hot Reloading: GoStarter uses Reflex in development for hot reloading.

Start In Production

make image

now run the image with

docker run -it go-user

Run Tests

Running the tests locally requires a valid database connection. Configure config.test.yaml with the appropriate values.

make test

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •