Create Boilerplate for Go Projects
We need a base project for new Go projects. It should include the best software that makes developing with Go easier.
Possible software we should include
Look into the following software and determine if it is the best at what it does. Only include libraries that are popular on GitHub or are very specific. For all rejected software, add a comment letting us know why it should not be included in the base for all our Go projects:
- https://github.com/spf13/cobra
- https://github.com/goreleaser/goreleaser
- https://github.com/cosmtrek/air
- https://github.com/sanbornm/go-selfupdate
- https://github.com/cweill/gotests
- https://github.com/golang/lint
- https://pkg.go.dev/golang.org/x/tools/cmd/goimports
- https://github.com/psampaz/go-mod-outdated
- https://github.com/go-critic/go-critic
- https://github.com/kisielk/errcheck
- https://github.com/bradleyfalzon/apicompat
- https://github.com/asaskevich/govalidator
- https://github.com/go-ozzo/ozzo-validation
- https://github.com/asticode/go-astitodo
- https://github.com/qax-os/goreporter
- https://github.com/dvyukov/go-fuzz
- https://github.com/stretchr/testify
- https://github.com/robertkrimen/otto
- https://github.com/olebedev/go-duktape (I would like to see the ability to pass a JS file to the program without having to install Node -- if this is possible then how would node_modules work? Do they need to be embedded in the binary?)
- https://github.com/tools/godep
- https://github.com/Masterminds/glide
- https://github.com/golang/dep
- https://github.com/wailsapp/wails (We should include this to provide a generic UI for the CLI based on the CLI schema -- However, we should explore solutions that are Electron based instead since there is a bigger community around it)
- https://github.com/gopherjs/gopherjs (Allows us to release the Go package as an NPM package as well - still, research into this to see if its feasible)
- https://github.com/spf13/cobra
- https://github.com/integrii/flaggy
- https://github.com/jessevdk/go-flags
- https://github.com/urfave/cli
The boilerplate should be committed to: https://gitlab.com/megabyte-labs/templates/go
The common files used in the boilerplate should be committed to this repository. Check out other common repositories in this repository's group to get a better idea of what needs to be stored in the common repository.
Similar boilerplate projects with lots of GitHub stars:
- https://github.com/sagikazarmark/modern-go-application
- https://github.com/golang-standards/project-layout (we should try to follow this one as much as possible)
Also, go through this list to make sure there are no useful programs that we missed: