Boiler
Telemetry
$ export BOILER_TELEMETRY_ENABLED=true
$ make jaeger
Check http://localhost:16686/ after doing any request
Project
Architeture Layers
βββββββββββββββββ
βββ transport β ββ€ e.g. Rest, GraphQL, etc...
ββββ service β βββ€ i.e. business logic
ββββββ io β ββββββ€ i.e. external APIs, MySQL, redis, fileSystem, etc...
βββββββββββββββββ
Project
βββ README.md
βββ Makefile
βββ .golangci.yml // lint
βββ .wtc.yaml // watch settings
β
βββcmd
β βββ cmd.go // common function
β β
β βββworker // handle async operation
β β βββ worker.go
β β βββinternal
β β βββhandle
β β βββ handle.go
β β
β βββserver // HTTP server
β βββ server.go // entrypoint
β βββinternal
β βββrouter
β β βββ middleware.go
β β βββ router.go // route www, rest, graphql, etc..
β β
β βββwww
β β βββ handle.go
β β βββ static
β β βββ *.*
β β
β βββrest
β β βββ handle.go
β β βββentity
β β βββ <handle_name>.go // payload and response definitions
β β
β βββgraphql
β βββ handle.go
β βββ schema.graphql
β βββ gqlgen.yml
β βββ query.go
β βββ mutation.go
β βββ resolver.go
β βββentity
β βββ *.go
β
βββpkg
β
βββiface // project interfaces
β βββ *.go
β βββmock
β βββ *.go
β
βββservice // business logic
β βββ service.go // new
β βββ *.go
β
βββentity
β βββ *.go
β
βββerrors
β βββ codeerr.go
β βββ wraperr.go
β βββ errors.go
β
βββtelemetry // add telemetry Span for both iface.Service and iface.IO
β βββ service.go
β βββ io.go
β
βββio
β
βββconfig
β βββ config.go
β βββ *.yaml // custom config file
β
βββlog
β βββ log.go
β
βββdatabase.go
βββ database.go
βββ *.go
Requirements
Worker requires a running Redis server.
You can easily start a redis server using docker;
docker run -d --name=redis -p 6379:6379 --restart=always redis:7
Run Dev Mode
$ make
more info on .wtc.yaml