All Projects → sagikazarmark → Modern Go Application

sagikazarmark / Modern Go Application

Licence: mit
Modern Go Application example

Programming Languages

go
31211 projects - #10 most used programming language
golang
3204 projects

Projects that are alternatives of or similar to Modern Go Application

toggler
toggler is a feature flag service to decouple deployment, feature enrollment and experiments
Stars: ✭ 27 (-96.96%)
Mutual labels:  golang-application
Gotests
Automatically generate Go test boilerplate from your source code.
Stars: ✭ 3,597 (+304.61%)
Mutual labels:  golang-application
Cobra
A Commander for modern Go CLI interactions
Stars: ✭ 24,437 (+2648.82%)
Mutual labels:  golang-application
GOCSP-responder
OCSP responder written in Go meant to be used with easy-rsa
Stars: ✭ 24 (-97.3%)
Mutual labels:  golang-application
cli
CLI for Vela (Target's official Pipeline Automation Framework)
Stars: ✭ 23 (-97.41%)
Mutual labels:  golang-application
Utask
µTask is an automation engine that models and executes business processes declared in yaml. ✏️📋
Stars: ✭ 374 (-57.93%)
Mutual labels:  golang-application
jump-jump
开箱即用,Golang 开发的一个功能完善的短链接系统。URL shortener service developed with golang.
Stars: ✭ 110 (-87.63%)
Mutual labels:  golang-application
Open Lambda
An open source serverless computing platform
Stars: ✭ 718 (-19.24%)
Mutual labels:  golang-application
Ovpm
OpenVPN Management Server - Effortless and free OpenVPN server administration
Stars: ✭ 256 (-71.2%)
Mutual labels:  golang-application
Sync gateway
Manages access and synchronization between Couchbase Lite and Couchbase Server
Stars: ✭ 427 (-51.97%)
Mutual labels:  golang-application
matrix-corporal
Matrix Corporal: reconciliator and gateway for a managed Matrix server
Stars: ✭ 100 (-88.75%)
Mutual labels:  golang-application
rais-image-server
RAIS: A IIIF-compliant, 100% open source image server for blazing-fast deep zooming
Stars: ✭ 72 (-91.9%)
Mutual labels:  golang-application
Run
Easily manage and invoke small scripts and wrappers
Stars: ✭ 378 (-57.48%)
Mutual labels:  golang-application
gino-keva
A simple Git Notes Key Value store
Stars: ✭ 23 (-97.41%)
Mutual labels:  golang-application
Goappmonitor
Golang application performance data monitoring.
Stars: ✭ 478 (-46.23%)
Mutual labels:  golang-application
smtp-dkim-signer
SMTP-proxy that DKIM-signs e-mails before submission to an upstream SMTP-server.
Stars: ✭ 28 (-96.85%)
Mutual labels:  golang-application
Ticker
Terminal stock ticker with live updates and position tracking
Stars: ✭ 3,986 (+348.37%)
Mutual labels:  golang-application
Dbxcli
A command line client for Dropbox built using the Go SDK
Stars: ✭ 764 (-14.06%)
Mutual labels:  golang-application
What Anime Cli
❓🖼 Find the anime scene by image using your terminal
Stars: ✭ 533 (-40.04%)
Mutual labels:  golang-application
Realize
Realize is the #1 Golang Task Runner which enhance your workflow by automating the most common tasks and using the best performing Golang live reloading.
Stars: ✭ 4,162 (+368.17%)
Mutual labels:  golang-application

Modern Go Application

Mentioned in Awesome Go Go Report Card go.dev reference

GitHub Workflow Status CircleCI Gitlab

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

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.

Inspiration

See 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 for more information.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].