- Dependency Injection with Fx
- Configuration with Viper
- Logging with Zap
- Metrics with Prometheus
- Tracing with Open Telemetry
- Health checks
- Feature flags with Go Feature Flag
- Validation with Validator
- Authorization with Casbin
- HTTP with Fiber
- Background tasks/workers with Asynq
- Testing with Ginkgo and Gomega
- Migrations with Goose
- Storage with Mongo, Redis, and Gorm (Postgres)
- Version management with Semantic Release
- Image (using distroless) publishing to GitHub Container Registry
# set config path manually
export CONFIG_PATH="$PWD/config/config.yaml"
# or use mise (recommended)
mise allow .
docker compose up -d
# run migrations
go run cmd/migrate/migrate.go up
# run tests
go test ./...
# start server
go run cmd/app/app.go
# start worker
go run cmd/worker/worker.go