# Template for go services using MySQL

This places common utilities in a shared location but allows them to be ran inside an individual service.

# Setup

This is designed to be an opinionated setup:

* GRPC with grpc-gateway to also expose an HTTP API and generate OpenAPI
* Store data with MySQL
* Deploy with docker
* Build with make
* Run commands with Just

It should be possible to remove any one of these components if desired.


# Usage

A new service can be created with

    template/new.sh service

This will create a new directory adjacent to the template directory.

Using the same command to upgrade is also supported:
  * This tool will not overwrite existing files
  * Generated files are almost all symlinks or have includes to files here


# Development of the project template

This system uses one principle: there is no templating!
There is only one variable: the initial service argument that is given.
This argument is used to create a directory, and scripts will look at that directory name.
