go-goa
is example of goa framework for v3 with JWT implementation.
The example site consists of file server and API server.
- Clean up everything
- Integrate to Firebase using NextJS SSG
- Switch CI from TravisCI to Github Action
- Rebuild front-end by latest Next.js(React) or Svelte
- Replace E2E test by Hurl
Directory Name | Description |
---|---|
docs(assets) | assets for front-end |
build | docker/gcp configuration files |
cmd | main.go for cli/server |
config | toml configuration files |
internal | goa design files, generated files as separated module |
pkg | go files |
scripts | shell script |
web | developmental environment for front-end |
Directory Name | Description |
---|---|
config | config pkg to read toml file |
encryption | encryption for hash |
goa | goa logic based on generated file by goa gen |
jwts | jwt |
logger | logger using rs/zerolog |
model | auto generated by sqlboiler |
mysql | mysql |
repository | database operation |
go install goa.design/goa/v3/cmd/goa@v3
go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest
cd internal/goa/service/resume
- modify
design
files - generate files by
goa gen
- run MySQL first
docker compose mysql -d
go build -v -o ${GOPATH}/bin/goa-file-server ./cmd/fileserver/server/...
goa-file-server
- access
http://localhost:8080/
http://localhost:8080/login.html
([email protected] / password)
go build -v -o ${GOPATH}/bin/goa-server ./cmd/resume/server/...
goa-server -conf ./configs/settings.toml
- health
http://localhost:8090/api/health
- auth
http://localhost:8090/api/auth/login
- tech
http://localhost:8090/api/tech
http://localhost:8090/api/tech/1
- company
http://localhost:8090/api/company
http://localhost:8090/api/company/1
- user
http://localhost:8090/api/user
http://localhost:8090/api/user/1
- user tech
http://localhost:8090/api/user/1/liketech
http://localhost:8090/api/user/1/disliketech
- user work history
http://localhost:8090/api/user/1/workhistory
To eveluate performance, hey has been used.
Execute Make bench
# March 12 2017
hey -n 20000 -c 50 -m GET http://localhost:8080/api/user
Summary:
Total: 4.1092 secs
Slowest: 0.0939 secs
Fastest: 0.0002 secs
Average: 0.0101 secs
Requests/sec: 4867.1221
Total data: 60000 bytes
Size/request: 3 bytes
Status code distribution:
[200] 20000 responses