/go-web

Modern Web Application with Golang

Primary LanguageGoMIT LicenseMIT

big-gopher

License MIT Build Status Go Report Card

Go-Web

Modern Web Application with Golang "Keep it simple, stupid"

Stack

Backend

Frontend

Getting Started

Project structure

Follows https://github.com/golang-standards/project-layout

Building From Source

This project requires Go +1.13 and Go module support.

To build the project run:

make

Bootstrap infrastructure and run application

This project requires docker and docker compose to run the required services.

  1. To run the services:
docker-compose up
  1. To create database
docker run --network="host" -it cockroachdb/cockroach:v19.2.1 sql --insecure -e "$(cat ./scripts/create.db.sql)"
  1. Build web application

  2. Start server

go run main.go
  1. Navigate to users list page

CI and Static Analysis

CI

All pull requests will run through CI, which is currently hosted by Github-CI. Community contributors should be able to see the outcome of this process by looking at the checks on their PR. Please fix any issues to ensure a prompt review from members of the team.

Static Analysis

This project uses the following static analysis tools. Failure during the running of any of these tools results in a failed build. Generally, code must be adjusted to satisfy these tools, though there are exceptions.

  • go vet checks for Go code that should be considered incorrect.
  • go fmt checks that Go code is correctly formatted.
  • golangci-lint checks for things like: unused code, code that can be simplified, code that is incorrect and code that will have performance issues.
  • go mod tidy ensures that the source code and go.mod agree.

Releasing

When a new tag is pushed, the version is released with goreleaser.

$ git tag -a v0.1.0 -m "First release"
$ git push origin v0.1.0 # => want to release v0.1.0

Tooling

Documentation

$ godoc github.com/starptech/go-web/pkg/controller
$ godoc -http=:6060

Visit localhost:6060 and search for go-web

Benchmarking

$ bombardier -c 10 -n 10000 http://localhost:8080/users

Cockroachdb Cluster overview

http://localhost:8111/

Deploy on Heroku

Heroku Deploy

Further reading