cmd/go-project-template | ||
config | ||
db | ||
web | ||
.gitignore | ||
go-project-template.sample.json | ||
go.mod | ||
go.sum | ||
LICENSE | ||
README.md | ||
renovate.json | ||
sqlc.yaml |
go-project-template
This is a template for go projects. It provides a postgres database connection and a webserver.
Template Usage
This template is intended for use with gonew, but can also be manually copied and the package name updated.
After you run gonew or update the package name manually, you will also want to:
- search for the string
go-project-template
and replace it with the name of your project, as that string appears in a few places other than the package name itself. - Rename the sample config file in the root from
go-project-template.sample.json
- You might want to put a human-readable project name in
httpserver/templates/base.html
, wherego-project-template
appears multiple times. - Rewrite this README
Project Usage
This project requires a postgres server. For development, it is usually easiest to create a temporary database in a container:
docker run --rm --name postgresql -e POSTGRES_PASSWORD=password -p 5432:5432 library/postgres
Then make a copy of the sample config file:
cp go-project-template.sample.json go-project-template.json
The database schema and migrations are defined in db/migrations/
. Migrations are applied by goose when the program starts.
Queries are written in database/queries/
, which gets read by sqlc to generate much of the go code in db/
. If you update a query, run
sqlc generate
to update the generated go files.