This is a simple skeleton for golang application. Inspired by development experience and updated according to github.com/golang-standards/project-layout.
- 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
- /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
# 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
With clonegopkg
# install clonegopkg
go install github.com/wajox/clonegopkg@latest
# create your project
clonegopkg clone git@github.com:wajox/gobase.git github.com/wajox/newproject
# push to your git repository
cd ~/go/src/github.com/wajox/newproject
git add .
git commit -m "init project from gobase template"
git remote add origin git@github.com:wajox/newproject.git
git push origin master
- gin-gonic
- ginkgo with gomega
- spf13/viper
- spf13/cobra
- envy
- zerolog
- golangci-lint
- wire
- swag
- migrate
- protoc
- jsonapi
- docker with docker-compose