{"id":13413402,"url":"https://github.com/jirenius/go-res","last_synced_at":"2026-01-22T15:51:35.370Z","repository":{"id":49993711,"uuid":"141013281","full_name":"jirenius/go-res","owner":"jirenius","description":"RES Service protocol library for Go","archived":false,"fork":false,"pushed_at":"2024-07-10T18:42:04.000Z","size":3409,"stargazers_count":62,"open_issues_count":7,"forks_count":9,"subscribers_count":5,"default_branch":"master","last_synced_at":"2024-07-31T20:52:18.735Z","etag":null,"topics":["go","golang","golang-package","microservice","nats-server","real-time","realtime","resgate","rest-api"],"latest_commit_sha":null,"homepage":"","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/jirenius.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","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},"funding":{"github":["jirenius"],"custom":["https://www.paypal.me/jirenius"]}},"created_at":"2018-07-15T09:10:11.000Z","updated_at":"2024-07-10T18:42:08.000Z","dependencies_parsed_at":"2024-06-18T21:24:52.539Z","dependency_job_id":"613b328e-067a-44ce-af1b-bcfa90f5557b","html_url":"https://github.com/jirenius/go-res","commit_stats":null,"previous_names":["jirenius/res"],"tags_count":13,"template":false,"template_full_name":null,"purl":"pkg:github/jirenius/go-res","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jirenius%2Fgo-res","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jirenius%2Fgo-res/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jirenius%2Fgo-res/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jirenius%2Fgo-res/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jirenius","download_url":"https://codeload.github.com/jirenius/go-res/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jirenius%2Fgo-res/sbom","scorecard":{"id":521531,"data":{"date":"2025-08-11","repo":{"name":"github.com/jirenius/go-res","commit":"30f62c293ba654bec3cbe4d55a4a07f0df4baf8f"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.6,"checks":[{"name":"Code-Review","score":0,"reason":"Found 1/22 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/build.yml:1","Warn: topLevel 'contents' permission set to 'write': .github/workflows/release.yml:10","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Pinned-Dependencies","score":1,"reason":"dependency not pinned by hash detected -- score normalized to 1","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/jirenius/go-res/build.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:20: update your workflow using https://app.stepsecurity.io/secureworkflow/jirenius/go-res/build.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:33: update your workflow using https://app.stepsecurity.io/secureworkflow/jirenius/go-res/build.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:35: update your workflow using https://app.stepsecurity.io/secureworkflow/jirenius/go-res/build.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:54: update your workflow using https://app.stepsecurity.io/secureworkflow/jirenius/go-res/build.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:56: update your workflow using https://app.stepsecurity.io/secureworkflow/jirenius/go-res/build.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/jirenius/go-res/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:22: update your workflow using https://app.stepsecurity.io/secureworkflow/jirenius/go-res/release.yml/master?enable=pin","Warn: goCommand not pinned by hash: scripts/install-checks.sh:3","Warn: goCommand not pinned by hash: scripts/install-checks.sh:4","Warn: goCommand not pinned by hash: .github/workflows/build.yml:61","Warn: goCommand not pinned by hash: .github/workflows/build.yml:62","Warn: goCommand not pinned by hash: .github/workflows/build.yml:46","Info:   0 out of   8 GitHub-owned GitHubAction dependencies pinned","Info:   3 out of   8 goCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 13 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":0,"reason":"32 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GO-2022-0380 / GHSA-2c64-vj8g-vwrq / GHSA-4w5x-x539-ppf5","Warn: Project is vulnerable to: GO-2022-0402 / GHSA-h2fg-54x9-5qhq / GHSA-hmm9-r2m2-qg9w","Warn: Project is vulnerable to: GO-2022-0386 / GHSA-62mh-w5cv-p88c / GHSA-j756-f273-xhp4","Warn: Project is vulnerable to: GO-2022-0398 / GHSA-gwj5-3vfq-q992","Warn: Project is vulnerable to: GO-2022-0852 / GHSA-jp4j-47f9-2vc3","Warn: Project is vulnerable to: GO-2022-0855 / GHSA-m4jx-6526-vvhm","Warn: Project is vulnerable to: GO-2024-2850 / GHSA-jj54-5q2m-q7pj","Warn: Project is vulnerable to: GO-2022-0307 / GHSA-g6w6-r76c-28j7","Warn: Project is vulnerable to: GO-2024-2980 / GHSA-2h2x-8hh2-mfq8","Warn: Project is vulnerable to: GO-2021-0227 / GHSA-3vm4-22fp-5rfm","Warn: Project is vulnerable to: GO-2022-0968 / GHSA-gwc9-m7rh-j2ww","Warn: Project is vulnerable to: GO-2021-0356 / GHSA-8c26-wmh5-6g9v","Warn: Project is vulnerable to: GO-2024-2961","Warn: Project is vulnerable to: GO-2023-2402 / GHSA-45x7-px36-x8w8","Warn: Project is vulnerable to: GO-2024-3321 / GHSA-v778-237x-gjrc","Warn: Project is vulnerable to: GO-2025-3487 / GHSA-hcg3-q754-cr77","Warn: Project is vulnerable to: GO-2022-0536 / GHSA-39qc-96h7-956f / GHSA-hgr8-6h9x-f7q9","Warn: Project is vulnerable to: GO-2022-0236 / GHSA-h86h-8ppg-mxmh","Warn: Project is vulnerable to: GO-2021-0238 / GHSA-83g2-8m93-v3w7","Warn: Project is vulnerable to: GO-2022-0288","Warn: Project is vulnerable to: GO-2022-0969 / GHSA-69cg-p879-7622","Warn: Project is vulnerable to: GO-2022-1144 / GHSA-xrjj-mj9h-534m","Warn: Project is vulnerable to: GO-2023-1571 / GHSA-vvpx-j8f3-3w6h","Warn: Project is vulnerable to: GO-2023-1988 / GHSA-2wrh-6pvc-2jm9","Warn: Project is vulnerable to: GO-2023-2102 / GHSA-4374-p667-p6c8","Warn: Project is vulnerable to: GHSA-qppj-fm5r-hxr3","Warn: Project is vulnerable to: GO-2024-2687 / GHSA-4v7x-pqxf-cx7m","Warn: Project is vulnerable to: GO-2024-3333","Warn: Project is vulnerable to: GO-2025-3503 / GHSA-qxp5-gwg8-xv66","Warn: Project is vulnerable to: GO-2025-3595 / GHSA-vvgc-356p-c3xw","Warn: Project is vulnerable to: GO-2022-0493 / GHSA-p782-xgp4-8hr8","Warn: Project is vulnerable to: GO-2024-2611 / GHSA-8r3f-844c-mc37"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-20T03:08:35.901Z","repository_id":49993711,"created_at":"2025-08-20T03:08:35.901Z","updated_at":"2025-08-20T03:08:35.901Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28665663,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-22T14:01:31.714Z","status":"ssl_error","status_checked_at":"2026-01-22T13:59:23.143Z","response_time":144,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["go","golang","golang-package","microservice","nats-server","real-time","realtime","resgate","rest-api"],"created_at":"2024-07-30T20:01:39.487Z","updated_at":"2026-01-22T15:51:35.354Z","avatar_url":"https://github.com/jirenius.png","language":"Go","funding_links":["https://github.com/sponsors/jirenius","https://www.paypal.me/jirenius"],"categories":["Messaging","消息系统","消息","机器学习","Relational Databases"],"sub_categories":["Advanced Console UIs","SQL 查询语句构建库","Search and Analytic Databases","检索及分析资料库"],"readme":"\u003cp align=\"center\"\u003e\u003ca href=\"https://resgate.io\" target=\"_blank\" rel=\"noopener noreferrer\"\u003e\u003cimg width=\"100\" src=\"https://resgate.io/img/resgate-logo.png\" alt=\"Resgate logo\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2 align=\"center\"\u003e\u003cb\u003eRES Service for Go\u003c/b\u003e\u003cbr/\u003eSynchronize Your Clients\u003c/h2\u003e\n\u003cp align=\"center\"\u003e\n\u003ca href=\"LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/badge/license-MIT-blue.svg\" alt=\"License\"\u003e\u003c/a\u003e\n\u003ca href=\"http://goreportcard.com/report/jirenius/go-res\"\u003e\u003cimg src=\"http://goreportcard.com/badge/github.com/jirenius/go-res\" alt=\"Report Card\"\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/jirenius/go-res/actions/workflows/build.yml?query=branch%3Amaster\"\u003e\u003cimg src=\"https://img.shields.io/github/actions/workflow/status/jirenius/go-res/build.yml?branch=master\" alt=\"Build Status\"\u003e\u003c/a\u003e\n\u003ca href=\"https://coveralls.io/github/jirenius/go-res?branch=master\"\u003e\u003cimg src=\"https://coveralls.io/repos/github/jirenius/go-res/badge.svg?branch=master\" alt=\"Coverage\"\u003e\u003c/a\u003e\n\u003ca href=\"https://pkg.go.dev/github.com/jirenius/go-res\"\u003e\u003cimg src=\"https://img.shields.io/static/v1?label=reference\u0026message=go.dev\u0026color=5673ae\" alt=\"Reference\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n---\n\n[Go](http://golang.org) package used to create REST, real time, and RPC APIs, where all your reactive web clients are synchronized seamlessly through [Resgate](https://github.com/resgateio/resgate).\n\nVisit [Resgate.io](https://resgate.io) for more information.\n\n## Installation\n\n```bash\ngo get github.com/jirenius/go-res\n```\n\n## As easy as\n\n```go\npackage main\n\nimport res \"github.com/jirenius/go-res\"\n\nfunc main() {\n   s := res.NewService(\"example\")\n   s.Handle(\"model\",\n      res.Access(res.AccessGranted),\n      res.GetModel(func(r res.ModelRequest) {\n         r.Model(struct {\n            Message string `json:\"message\"`\n         }{\"Hello, World!\"})\n      }),\n   )\n   s.ListenAndServe(\"nats://localhost:4222\")\n}\n```\n\u003e **Prerequisite**\n\u003e\n\u003e [Install](https://resgate.io/docs/get-started/installation/) *NATS Server* and *Resgate*. Can be done with 3 docker commands:\n\u003e ```text\n\u003e docker network create res\n\u003e docker run -d --name nats -p 4222:4222 --net res nats\n\u003e docker run --name resgate -p 8080:8080 --net res resgateio/resgate --nats nats://nats:4222\n\u003e ```\n\n\n## Examples\n\n| Example | Description\n| --- | ---\n| [Hello World](examples/01-hello-world/) | Smallest of services serving a static message.\n| [Edit Text](examples/02-edit-text/) | Single text field that is updated in real time.\n| [Book Collection](examples/03-book-collection/) | List of book titles \u0026 authors that can be edited by many.\n| [Book Collection Store](examples/04-book-collection-store/) | Book Collection example persisting changes using BadgerBD store.\n| [Search Query](examples/05-search-query/) | Make live queries against a large customer database.\n\n\u003e **Note**\n\u003e\n\u003e Above examples are complete with both service and client.\n\n## Usage\n\n#### Create a new service\n\n```go\ns := res.NewService(\"myservice\")\n```\n\n#### Add handlers for a model resource\n\n```go\nmymodel := map[string]interface{}{\"name\": \"foo\", \"value\": 42}\ns.Handle(\"mymodel\",\n   res.Access(res.AccessGranted),\n   res.GetModel(func(r res.ModelRequest) {\n      r.Model(mymodel)\n   }),\n)\n```\n\n#### Add handlers for a collection resource\n\n```go\nmycollection := []string{\"first\", \"second\", \"third\"}\ns.Handle(\"mycollection\",\n   res.Access(res.AccessGranted),\n   res.GetCollection(func(r res.CollectionRequest) {\n      r.Collection(mycollection)\n   }),\n)\n```\n\n#### Add handlers for parameterized resources\n\n```go\ns.Handle(\"article.$id\",\n   res.Access(res.AccessGranted),\n   res.GetModel(func(r res.ModelRequest) {\n      article := getArticle(r.PathParam(\"id\"))\n      if article == nil {\n         r.NotFound()\n      } else {\n         r.Model(article)\n      }\n   }),\n)\n```\n\n#### Add handlers for method calls\n\n```go\ns.Handle(\"math\",\n   res.Access(res.AccessGranted),\n   res.Call(\"double\", func(r res.CallRequest) {\n      var p struct {\n         Value int `json:\"value\"`\n      }\n      r.ParseParams(\u0026p)\n      r.OK(p.Value * 2)\n   }),\n)\n```\n\n#### Send change event on model update\nA change event will update the model on all subscribing clients.\n\n```go\ns.With(\"myservice.mymodel\", func(r res.Resource) {\n   mymodel[\"name\"] = \"bar\"\n   r.ChangeEvent(map[string]interface{}{\"name\": \"bar\"})\n})\n```\n\n#### Send add event on collection update:\nAn add event will update the collection on all subscribing clients.\n\n```go\ns.With(\"myservice.mycollection\", func(r res.Resource) {\n   mycollection = append(mycollection, \"fourth\")\n   r.AddEvent(\"fourth\", len(mycollection)-1)\n})\n```\n\n#### Add handlers for authentication\n\n```go\ns.Handle(\"myauth\",\n   res.Auth(\"login\", func(r res.AuthRequest) {\n      var p struct {\n         Password string `json:\"password\"`\n      }\n      r.ParseParams(\u0026p)\n      if p.Password != \"mysecret\" {\n         r.InvalidParams(\"Wrong password\")\n      } else {\n         r.TokenEvent(map[string]string{\"user\": \"admin\"})\n         r.OK(nil)\n      }\n   }),\n)\n```\n\n#### Add handlers for access control\n\n```go\ns.Handle(\"mymodel\",\n   res.Access(func(r res.AccessRequest) {\n      var t struct {\n         User string `json:\"user\"`\n      }\n      r.ParseToken(\u0026t)\n      if t.User == \"admin\" {\n         r.AccessGranted()\n      } else {\n         r.AccessDenied()\n      }\n   }),\n   res.GetModel(func(r res.ModelRequest) {\n      r.Model(mymodel)\n   }),\n)\n```\n\n#### Using routes\n\n```go\ns.Route(\"v2\", func(m *res.Mux) {\n   m.Handle(\"mymodel\",\n      /* ... */\n   )\n})\n```\n\n#### Start service\n\n```go\ns.ListenAndServe(\"nats://localhost:4222\")\n```\n\n## Testing [![Reference][godev]](https://pkg.go.dev/github.com/jirenius/go-res/restest)\n\nThe [restest](restest/) subpackage is used for testing services and validate responses.\n\n## Inter-service communication [![Reference][godev]](https://pkg.go.dev/github.com/jirenius/go-res/resprot)\n\nThe [resprot](resprot/) subpackage provides low level structs and methods for communicating with other services over NATS server.\n\n## Storage [![Reference][godev]](https://pkg.go.dev/github.com/jirenius/go-res/store)\n\nThe [store](store/) subpackage contains handlers and interfaces for working with database storage.\n\n| Name | Description | Documentation\n| --- | --- | ---\n| [mockstore](store/mockstore/) | Mock store implementation for testing | [![Reference][godev]](https://pkg.go.dev/github.com/jirenius/go-res/store/mockstore)\n| [badgerstore](store/badgerstore/) | BadgerDB store implementation | [![Reference][godev]](https://pkg.go.dev/github.com/jirenius/go-res/store/badgerstore)\n\n## Credits\n\nInspiration on the go-res API has been taken from [github.com/go-chi/chi](https://github.com/go-chi/chi), a great package when writing ordinary HTTP services, and will continue to do so when it is time to implement Middleware, sub-handlers, and mounting.\n\n## Contributing\n\nThe go-res package is still under development, but the API is mostly settled. Any feedback on the package API or its implementation is highly appreciated!\n\nOnce the API is fully settled, the package will be moved to the [resgateio](https://github.com/resgateio/) GitHub organization.\n\nIf you find any issues, feel free to [report them](https://github.com/jirenius/go-res/issues/new) as an issue.\n\n[godev]: https://img.shields.io/static/v1?label=reference\u0026message=go.dev\u0026color=5673ae \"Reference\"\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjirenius%2Fgo-res","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjirenius%2Fgo-res","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjirenius%2Fgo-res/lists"}