Example structure to start a microservices project with golang. Using a MySQL databaseSQL. Using a Hexagonal Architecture tha is a Clean Architecture.
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
- Features
- Commands
- Environment Variables
- Project Structure
- API Documentation
- Error Handling
- Validation
- Linting
- 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
docker-compose up --build -d
swag init -g infrastructure/rest/routes/routes.go
To visualize the swagger documentation on local use
http://localhost:8080/v1/swagger/index.html
# run recursive test
go test ./test/unit/...
# clean go test results in cache
go clean -testcache
golangci-lint run ./...