This is a simple skeleton for golang application. Inspired by development experience and updated according to github.com/golang-standards/project-layout.
How to use?
Clone the repository (with git client git clone github.com/wajox/gobase [project_name] or use it as template on github for creating a new project)
replace github.com/wajox/gobase with [your_pkg_name] in the all files
Structure
/api - OpenAPI specs, documentation generated by swag
/cmd - apps
/db - database migrations and seeds
/docs - documentation
/internal - application sources for internal usage
/pkg - application sources for external usage(SDK and libraries)
/test - some stuff for testing purposes
Commands
# install dev tools(wire, golangci-lint, swag, ginkgo)
make install-tools
# start test environment from docker-compose-test.yml
make start-docker-compose-test
# stop test environment from docker-compose-test.yml
make stop-docker-compose-test
# build application
make build
# run all tests
make test-all
# run go generate
make gen
# generate OpenAPI docs with swag
make swagger
# generate source code from .proto files
make proto
# generate dependencies with wire
make deps