A greatest starting point for building REST APIs in Go.
We hope to assist you in swiftly constructing and developing robust Go applications.
While this project lacks most implementation code, it adheres to certain principles outlined in the directory and package structure. Moreover, the design of this project is based on the following concepts and will continuously evolve, requiring your adherence:
- Concepts from Clean Architecture
- Concepts from Domain Driven Design
- High testability
- Backend API for microservices
Important
Given the numerous elements essential to software architecture, a detailed explanation of each element is beyond the scope of this text.
- Configuration using spf13/viper
- CLI features using spf13/cobra
- Structured logging using rs/zerolog
- Web framework using gofiber/fiber
- Testing using stretchr/testify
- CI using GitHub Actions workflow
- Releaser using GoReleaser
- hot reloading using Air
- Dependency Inject using samber/do
- Code generate tool
before running, setup air
make setupAir
or
go install github.com/cosmtrek/air@latest
make test
By default viper will look at $HOME/.go-rest-boilerplate.yaml for a config file.
go-rest-boilerplate/
├── cmd
│ └── api
│ └── server
└── internal
├── adapter
├── config
├── di
├── domain
├── driver
├── logger
├── port
├── rest
│ ├── handlers
│ └── routes
└── usecase
TODO 英語文章にする
上記のディレクトリ・パッケージ群は基本的な構造であり、増やしても減らしても良い。ただし、プロジェクトが持つ基本設計方針に従っているべきである。
TODO
internalパッケージは、外部に参照されるべきでないアプリケーション内のコードであることを明確にするためのパッケージです。 アプリケーション独自の全てのコードはこのパッケージに集約されるべきです。
特に重要なパッケージについての説明
adapter
packagedomain
packagedriver
packageport
packageusecase
package