Golang Microservices Boilerplate - Clean Architecture
Example structure to start a microservices project with golang. Using a MySQL databaseSQL. Using a Hexagonal Architecture tha is a Clean Architecture.
Manual Installation
If you would still prefer to do the installation manually, follow these steps:
Clone the repo:
git clone https://github.com/gbrayhan/microservices-go
If you need, configure the environment variables in file config.json, if you use docker-compose leave the variables set in the file config.json.example
cp config.json.example config.json
TL;DR command list
git clone https://github.com/gbrayhan/microservices-go
cd microservices-go
cp config.json.example config.json
docker-compose up --build -d
Table of Contents
- Features
- Commands
- Environment Variables
- Project Structure
- API Documentation
- Error Handling
- Validation
- Linting
Features
- Golang v1.20: Stable version of go
- Framework: A stable version of gin-go
- Token Security: with JWT
- SQL databaseSQL: MariaDB using internal sql package of go sql
- Testing: unit and integration tests using package of go testing
- API documentation: with swaggo @latest version that is a go implementation of swagger
- Dependency management: with go modules
- Environment variables: using viper
- Docker support
- Code quality: with CodeFactor and Codacy
- Linting: with golangci-lint an implementation of a Golang linter
Commands
Build and run image of docker
docker-compose up --build -d
Swagger Implementation
swag init -g infrastructure/rest/routes/routes.go
To visualize the swagger documentation on local use
http://localhost:8080/v1/swagger/index.html
Unit test command
# run recursive test
go test ./test/unit/...
# clean go test results in cache
go clean -testcache
Lint inspection of go
golangci-lint run ./...