{"id":20083901,"url":"https://github.com/hiromaily/go-goa","last_synced_at":"2025-07-19T13:02:55.887Z","repository":{"id":57567728,"uuid":"84661950","full_name":"hiromaily/go-goa","owner":"hiromaily","description":"goa framework example","archived":false,"fork":false,"pushed_at":"2023-03-03T20:47:21.000Z","size":95493,"stargazers_count":7,"open_issues_count":4,"forks_count":2,"subscribers_count":3,"default_branch":"main","last_synced_at":"2024-06-20T14:25:34.595Z","etag":null,"topics":["docker","gcp","goa-framework","golang","jwt","kubernetes","mysql","nextjs","openapi3","react","reactjs","riotjs"],"latest_commit_sha":null,"homepage":"go-goa.vercel.app","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hiromaily.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-03-11T16:01:20.000Z","updated_at":"2024-02-28T15:09:39.000Z","dependencies_parsed_at":"2024-06-20T14:22:48.734Z","dependency_job_id":null,"html_url":"https://github.com/hiromaily/go-goa","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hiromaily%2Fgo-goa","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hiromaily%2Fgo-goa/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hiromaily%2Fgo-goa/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hiromaily%2Fgo-goa/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hiromaily","download_url":"https://codeload.github.com/hiromaily/go-goa/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224479571,"owners_count":17318297,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","gcp","goa-framework","golang","jwt","kubernetes","mysql","nextjs","openapi3","react","reactjs","riotjs"],"created_at":"2024-11-13T15:49:24.695Z","updated_at":"2024-11-13T15:49:25.405Z","avatar_url":"https://github.com/hiromaily.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# go-goa\n\n[![Go Report Card](https://goreportcard.com/badge/github.com/hiromaily/go-goa)](https://goreportcard.com/report/github.com/hiromaily/go-goa)\n[![codebeat badge](https://codebeat.co/badges/f2ee2ed0-5588-46f9-a47e-d50633a06739)](https://codebeat.co/projects/github-com-hiromaily-go-goa-master)\n[![Codacy Badge](https://api.codacy.com/project/badge/Grade/f207ca57e48e456389341fc41bb06951)](https://www.codacy.com/app/hiromaily2/go-goa?utm_source=github.com\u0026amp;utm_medium=referral\u0026amp;utm_content=hiromaily/go-goa\u0026amp;utm_campaign=Badge_Grade)\n[![MIT License](http://img.shields.io/badge/license-MIT-blue.svg?style=flat)](https://raw.githubusercontent.com/hiromaily/go-goa/master/LICENSE)\n\n`go-goa` is example of [goa](https://github.com/goadesign/goa) framework for v3 with JWT implementation.  \nThe example site consists of file server and API server.\n\n![Example Resume Site](resume.png \"example resume site\")\n\n\n## Refactoring\n- [ ] Clean up everything\n- [ ] Integrate to Firebase using NextJS SSG\n- [ ] Switch CI from TravisCI to Github Action\n- [ ] Rebuild front-end by latest Next.js(React) or Svelte\n- [ ] Replace E2E test by [Hurl](https://hurl.dev/)\n\n## Directory Structure\n| Directory Name | Description                                           |\n|:---------------|:------------------------------------------------------|\n| docs(assets)   | assets for front-end                                  |\n| build          | docker/gcp configuration files                        |\n| cmd            | main.go for cli/server                                |\n| config         | toml configuration files                              |\n| internal       | goa design files, generated files as separated module |\n| pkg            | go files                                              |\n| scripts        | shell script                                          |\n| web            | developmental environment for front-end               |\n\n### pkg directory\n| Directory Name | Description                                    |\n|:---------------|:-----------------------------------------------|\n| config         | config pkg to read toml file                   |\n| encryption     | encryption for hash                            |\n| goa            | goa logic based on generated file by `goa gen` |\n| jwts           | jwt                                            |\n| logger         | logger using `rs/zerolog`                      |\n| model          | auto generated by `sqlboiler`                  |\n| mysql          | mysql                                          |\n| repository     | database operation                             |\n\n\n## Install goa\n```\ngo install goa.design/goa/v3/cmd/goa@v3\ngo install google.golang.org/protobuf/cmd/protoc-gen-go@latest\ngo install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest\n```\n\n\n## Development process\n- `cd internal/goa/service/resume`\n- modify `design` files\n- generate files by `goa gen`\n\n\n## Server\n### Database\n- run MySQL first\n```\ndocker compose mysql -d\n```\n\n### File Server\n```\ngo build -v -o ${GOPATH}/bin/goa-file-server ./cmd/fileserver/server/...\ngoa-file-server\n```\n- access\n  - `http://localhost:8080/`\n  - `http://localhost:8080/login.html` (hiroki@goa.com / password)\n\n### Resume API Server\n```\ngo build -v -o ${GOPATH}/bin/goa-server ./cmd/resume/server/...\ngoa-server -conf ./configs/settings.toml\n```\n\n### Resume API List\n- health\n  - `http://localhost:8090/api/health`\n- auth\n  - `http://localhost:8090/api/auth/login`\n- tech\n  - `http://localhost:8090/api/tech`\n  - `http://localhost:8090/api/tech/1`\n- company\n  - `http://localhost:8090/api/company`\n  - `http://localhost:8090/api/company/1`\n- user\n  - `http://localhost:8090/api/user`\n  - `http://localhost:8090/api/user/1`\n- user tech\n  - `http://localhost:8090/api/user/1/liketech`\n  - `http://localhost:8090/api/user/1/disliketech`\n- user work history\n  - `http://localhost:8090/api/user/1/workhistory`\n\n\n## Performance\nTo eveluate performance, [hey](https://github.com/rakyll/hey) has been used.\nExecute `Make bench`\n\n```\n# March 12 2017\nhey -n 20000 -c 50 -m GET http://localhost:8080/api/user\n\nSummary:\n  Total:\t4.1092 secs\n  Slowest:\t0.0939 secs\n  Fastest:\t0.0002 secs\n  Average:\t0.0101 secs\n  Requests/sec:\t4867.1221\n  Total data:\t60000 bytes\n  Size/request:\t3 bytes\n\nStatus code distribution:\n  [200]\t20000 responses\n```\n\n## Licence\n[MIT](https://github.com/hiromaily/go-goa/blob/master/LICENSE)\n\n## Author\n[hiromaily](https://github.com/hiromaily)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhiromaily%2Fgo-goa","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhiromaily%2Fgo-goa","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhiromaily%2Fgo-goa/lists"}