modern-go-application alternatives and similar packages
Based on the "Project Layout" category.
Alternatively, view modern-go-application alternatives based on common mentions on social networks and blogs.
-
golang-standards/project-layout
Standard Go Project Layout -
ardanlabs/service
Starter code for writing web services in Go using Kubernetes. -
go-restful-api
An idiomatic Go REST API starter kit (boilerplate) following the SOLID principles and Clean Architecture -
pagoda
Rapid, easy full-stack web development starter kit in Go -
golang-templates/seed
Go application GitHub repository template. -
go-starter
An opinionated production-ready SQL-/Swagger-first RESTful JSON API written in Go, highly integrated with VSCode DevContainers by allaboutapps. -
go-todo-backend
Go Todo Backend example using modular project layout for product microservice. -
wangyoucao577/go-project-layout
My understanding of how to structure a golang project. -
insidieux/inizio
Golang project standard layout generator -
go-module
🧩 Template for a typical module written on Go.
Access the most powerful time series database as a service
Do you think we are missing an alternative of modern-go-application or a related project?
README
Modern Go Application
Go application boilerplate and example applying modern practices
This repository tries to collect the best practices of application development using Go language. In addition to the language specific details, it also implements various language independent practices.
Some of the areas Modern Go Application touches:
- architecture
- package structure
- building the application
- testing
- configuration
- running the application (eg. in Docker)
- developer environment/experience
- telemetry
To help adopting these practices, this repository also serves as a boilerplate for new applications.
Features
- configuration (using spf13/viper)
- logging (using logur.dev/logur and sirupsen/logrus)
- error handling (using emperror.dev/emperror)
- metrics and tracing using Prometheus and Jaeger (via OpenCensus)
- health checks (using AppsFlyer/go-sundheit)
- graceful restart (using cloudflare/tableflip) and shutdown
- support for multiple server/daemon instances (using oklog/run)
- messaging (using ThreeDotsLabs/watermill)
- MySQL database connection (using go-sql-driver/mysql)
Redis connection (using gomodule/redigo)removed due to lack of usage (see [#120](../../issues/120))
First steps
To create a new application from the boilerplate clone this repository (if you haven't done already) into your GOPATH then execute the following:
chmod +x init.sh && ./init.sh
? Package name (github.com/sagikazarmark/modern-go-application)
? Project name (modern-go-application)
? Binary name (modern-go-application)
? Service name (modern-go-application)
? Friendly service name (Modern Go Application)
? Update README (Y/n)
? Remove init script (y/N) y
It updates every import path and name in the repository to your project's values. Review and commit the changes.
Load generation
To test or demonstrate the application it comes with a simple load generation tool. You can use it to test the example endpoints and generate some load (for example in order to fill dashboards with data).
Follow the instructions in [etc/loadgen](etc/loadgen).
Inspiration
See [INSPIRATION.md](INSPIRATION.md) for links to articles, projects, code examples that somehow inspired me while working on this project.
License
The MIT License (MIT). Please see [License File](LICENSE) for more information.
*Note that all licence references and agreements mentioned in the modern-go-application README section above
are relevant to that project's source code only.