Awesome
π¦ eagle
<a href="http://opentracing.io"><img src="https://img.shields.io/badge/OpenTracing-enabled-blue.svg" alt="OpenTracing Badge"></a>
A Go framework suitable for rapid business development, which can quickly build API services or Web sites.
English | δΈζζζ‘£
Features
- API framework gin
- RPC framework gRPC
- Configuration viper
- Logging component zap
- Database ORM component gorm | MongoDB
- Search component Elasticsearch
- Cache component go-redis, ristretto
- Message Queue Rabbitmq | redis
- Authentication JWT
- Parameter Validator validator
- Scheduled tasks cron
- Metrics monitoring prometheus, grafana
- Distributed Tracing opentelemetry
- Service registration and discovery etcd | consul | nacos
- Unit Test GoConvey
- Lint GolangCI-lint
- CI/CD GitHub Actions, docker, kubernetes
Framework Layered Architecture
Logic Layered Architecture
Eagle utilizes a classic layered structure and employs the Wire dependency injection framework to enhance modularity and reduce coupling between components.
Directory Structure
βββ Makefile
βββ api
βββ cmd
βββ config
βββ docs
βββ internal
β βββ cache
β βββ handler
β βββ middleware
β βββ model
β βββ dao
β βββ ecode
β βββ routers
β βββ server
β βββ service
βββ logs
βββ main.go
βββ pkg
βββ test
βββ scripts
Installtion CLI
GOPROXY="https://goproxy.cn,direct"
# go >= 1.16
go install github.com/go-eagle/eagle/cmd/eagle@latest
# go < 1.16
go get github.com/go-eagle/eagle/cmd/eagle
Quick Start
# only gen a server with http
eagle new eagle-demo
# or
eagle new github.com/foo/eagle-demo
# gen a server with http and gRPC
eagle new -b=main eagle-demo
# or
eagle new github.com/foo/eagle-demo
# install dependence
go mod tidy
# run
make run
Documentation
CHANGELOG
Who is using
Discussion
Microservice Roadmap
Contributing
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!
- Fork the repository to your own GitHub account.
- Create a new branch for your changes.
- Make your changes to the code.
- Commit your changes and push the branch to your forked repository.
- Open a pull request on our repository.
Stargazers over time
License
MIT. See the LICENSE file for details.