module
3.0.0+incompatible
Repository: https://github.com/syahidfrd/go-boilerplate.git
Documentation: pkg.go.dev
# README
GO Boilerplate
Directory Structure
├── cmd
│ └── api // Main applications for this project
├── config // Configuration app
├── delivery // Delivery usefull to encode raw body, query params, make a response to client
│ ├── http
│ └── middleware
├── docs // Design and user documents (in addition to your godoc generated documentation)
├── domain // Domains is a struct to store any objects from database, example you have a products in your tables.
├── infrastructure
│ └── datastore // Database configuration
├── migration // Database migrations.
├── mocks // Mock code, generated by mockery
├── repository // Represents the behavior of the data store. It can be implemented using PostgreSQL, MongoDB, etc
│ ├── pgsql
│ └── redis
├── transport // Request and response model
│ └── request
├── usecase // Usecase contains all of business logic
└── utils // Additional services
├── crypto
├── jwt
└── logger
Prerequisite and full list what has been used
- PostgreSQL - PostgreSQL Database
- Redis - Redis
- golang-migrate - Database migrations. CLI and Golang library
- echo - Web framework
- go-redis - Type-safe Redis client for Golang
- zap - Logger
- ozzo-validation - Go Struct and Field validation
- mockery - A mock code autogenerator for Golang
- swag - Generator RESTful API documentation with Swagger
- echo-swagger - Echo middleware for Swagger
- testify - A toolkit with common assertions and mocks
- godotenv - Environment variables loader
App requires 2 database (PostgreSQL and Redis server), run from your local machine or run it using docker with the following command
# run postgreSQL
docker run -d -p 5432:5432 -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=postgres -e POSTGRES_DB=go_boilerplate postgres
# run redis
docker run -d -p 6379:6379 redis
Migration
Run below command to run migration
migrate -path migration -database "${DATABASE_URL}" up
To create a new migration file
migrate create -ext sql -dir migration -seq name
Test
Run below command to run test, and make sure that all tests are passing
go test -v ./...
Running
Run below command to run app
go run ./cmd/api/main.go
Swagger URL
${BASE_URL}/swagger/index.html
You can find usefull commands in Makefile
.
# Packages
No description provided by the author
No description provided by the author
No description provided by the author
Package docs GENERATED BY SWAG; DO NOT EDIT This file was generated by swaggo/swag.
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author