A sample production grade REST API application written in Golang with Invoice managment business functionalities.
- Microservices
- Docker Containers
- REST Api + GRPC for internal Communication
- Distributed logging
- Distributed tracing
- Monitoring (grafana + Prometheus)
- Auth0 token-access & validation with support for Roles & scopes
- Performance analysis(pprof + benchmark testing + autocannon)
- Postgres database with Auto Migration and Seeding
- Database Transaction support at service level for data integrity
- Debugging capacity with inspector
- Load .env files for configuration settings
- 80% Unit testing coverage
- Mocks (mockery)
- Autoi generated Swagger OpenApi & Markdown Docs
- ThunderClient requests for Testing APIs
- Makefile for easy commands
- Docker-Compose for local running
- Enforcing Coding standards with
https://github.com/tekwizely/pre-commit-golang
- Run command
make precommit-invoices
- Run command
make precommit-portal
- Run command
make test
- Run command
make build
- Run command
make run
- Run command
make reload
When we run above run or reload command, the db container and app container will be up and running then we can access APIs provided by the App
-
The swagger documentation UI will be available at
http://localhost:8080/swagger/index.html
-
The PProf will be avilable at
http://localhost:8080/debug/pprof
-
The Inspector UI will be available at
hhttp://localhost:8080/_inspector
-
The metrics api will be available at
hhttp://localhost:8080/metrics
-
The Coding standard will be enforeced while commiting the code to the repository