{"id":28833122,"url":"https://github.com/apigee/registry-viewer","last_synced_at":"2025-07-22T11:03:11.445Z","repository":{"id":40278930,"uuid":"323512641","full_name":"apigee/registry-viewer","owner":"apigee","description":"The Registry Viewer is a graphical interface to the Registry API.","archived":true,"fork":false,"pushed_at":"2023-06-25T20:22:17.000Z","size":710,"stargazers_count":4,"open_issues_count":3,"forks_count":4,"subscribers_count":7,"default_branch":"main","last_synced_at":"2025-06-19T08:51:48.462Z","etag":null,"topics":["api-governance","api-lifecycle","api-registry","apigee","apis","flutter","grpc","openapi"],"latest_commit_sha":null,"homepage":"https://apigee.github.io/registry","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/apigee.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-12-22T03:41:30.000Z","updated_at":"2025-05-06T04:42:09.000Z","dependencies_parsed_at":"2023-02-16T10:01:41.083Z","dependency_job_id":null,"html_url":"https://github.com/apigee/registry-viewer","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/apigee/registry-viewer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apigee%2Fregistry-viewer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apigee%2Fregistry-viewer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apigee%2Fregistry-viewer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apigee%2Fregistry-viewer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/apigee","download_url":"https://codeload.github.com/apigee/registry-viewer/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apigee%2Fregistry-viewer/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266481734,"owners_count":23935938,"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","status":"online","status_checked_at":"2025-07-22T02:00:09.085Z","response_time":66,"last_error":null,"robots_txt_status":null,"robots_txt_updated_at":null,"robots_txt_url":"https://github.com/robots.txt","online":true,"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":["api-governance","api-lifecycle","api-registry","apigee","apis","flutter","grpc","openapi"],"created_at":"2025-06-19T08:40:37.821Z","updated_at":"2025-07-22T11:03:11.431Z","avatar_url":"https://github.com/apigee.png","language":"Dart","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Go Actions Status](https://github.com/apigee/registry-viewer/workflows/Flutter/badge.svg)](https://github.com/apigee/registry-viewer/actions)\n\n# Registry Viewer\n\nThis repository contains a graphical viewer for the\n[Registry API](https://github.com/apigee/registry). The viewer is written with\n[Flutter](https://flutter.dev), which allows it to be run on many platforms. It\nis developed on the Linux, MacOS, and web platforms, and this repository\nincludes support for web deployments on Google Cloud Run.\n\n## The Registry Viewer\n\nThe Registry Viewer allows API platform teams and other collectors of API\ndescriptions to view and curate API descriptions and metadata stored in a\nregistry. It is optimized for general browsing (vs. specific tasks), and is a\npossible starting point for application-specific interfaces that manage and\ngovern APIs through their lifecycles.\n\nPlease tell us about your experience if you use it.\n\n![API list](images/api-list.png)\n\n## The Implementation\n\nThe Registry Viewer is a Flutter application written in Dart. It can be run\nlocally and hosted on the web. One way to host the web version is in a\ncontainer deployed to services like\n[Google Cloud Run](https://cloud.google.com/run). Currently it stores all\ninformation directly in the Registry API (no other backend storage or service\nis used). Users authenticate with Google IDs, and a file in the implementation\nallows deployments to specify users and domains that are authorized to use the\nviewer.\n\n## Build Instructions\n\nThe following tools are needed to build this software:\n\n- The Flutter development environment, release 1.25.0-5.0.pre.91 or later.\n- protoc, the Protocol Buffer Compiler, version 3.10 or later.\n- make, git, and other elements of common unix build environments.\n\nThis repository contains a Makefile that performs frequently-used tasks,\nincluding building and deploying the viewer on\n[Google Cloud Run](https://cloud.google.com/run).\n\n## Generated Components\n\nPlatform-specific code is generally not included in the repo and should be\ncreated by running `make create` in the root of this repo. This uses\n`flutter create` to initialize the project.\n\nProtocol Buffer support code is needed and is generated by the\n[COMPILE-PROTOS.sh](tools/COMPILE-PROTOS.sh) script. This can be run by running\n`make protos` at the repo root.\n\n## Quickstart\n\nThe easiest way to try the Registry Viewer is to run the Linux build with\n`make linux`. This build gets its server address and authorization credentials\nfrom environment variables.\n\n**If you are running the Registry Server on Google Cloud Run**, you can set\nthese variables by running `source auth/CLOUDRUN.sh` from the\n[github.com/apigee/registry](https://github.com/apigee/registry) repo. There's\na version of this repo checked out in `third_party`, so one way to get\ncredentials would be to run the following:\n\n`source third_party/registry/auth/CLOUDRUN.sh`.\n\n**If you are running the Registry Server locally**, you can set these variables\nby running `source auth/LOCAL.sh` from the\n[github.com/apigee/registry](https://github.com/apigee/registry) repo. Using\nthe version checked out in `third_party`, you could run the following:\n\n`source third_party/registry/auth/LOCAL.sh`.\n\n**Once you have set up your credentials**, build and run the viewer with\n`make linux`.\n\n## Deploying the Registry Viewer with Google Cloud Run\n\nThe Registry Viewer can be built for the web and deployed like any Flutter web\napplication. This project contains support for deploying on\n[Google Cloud Run](https://cloud.google.com/run). To support this, the\n[Makefile](Makefile) contains targets that build a Docker image and that deploy\nit to Google Cloud Run. Both use the `gcloud` command, which should be\nauthenticated and configured for the project where the services should be run.\n\nRequirements:\n\n- Both targets require the [gcloud](https://cloud.google.com/sdk/gcloud)\n  command, which is part of the\n  [Google Cloud SDK](https://cloud.google.com/sdk).\n\n- If not already done, `gcloud auth login` gets user credentials for subsequent\n  `gcloud` operations and `gcloud config set project PROJECT_ID` can be used to\n  set your project ID to the one where you plan to host your servce.\n\n- The Makefile gets your project ID from the `REGISTRY_PROJECT_IDENTIFIER`\n  environment variable. This can be set automatically by running\n  `source auth/CLOUDRUN.sh`.\n\n`make build` uses [Google Cloud Build](https://cloud.google.com/cloud-build) to\nbuild a container containing a simple Go web server and the compiled Registry\nViewer application. The container is stored in\n[Google Container Registry](https://cloud.google.com/container-registry).\n\n`make deploy` deploys that container on\n[Google Cloud Run](https://cloud.google.com/run).\n\nWhen deploying to Cloud Run for the first time, you will be asked a few\nquestions, including this one:\n\n`Allow unauthenticated invocations to [registry-backend] (y/N)?`\n\nYou will need to answer \"y\" to be able to access your application.\n\nYou will also need to set two environment variables in your Cloud Run\nenvironment (described below).\n\n## Configuring web builds\n\nWeb builds of the Registry Viewer require two configuration strings that are\nspecified as meta tags in [registry/web/index.html](registry/web/index.html).\nBoth can be set using environment variables in the container running the web\nserver:\n\n- `google-signin-client_id` (environment variable `GOOGLE_SIGNIN_CLIENTID`) is\n  the OAuth Client ID used by the\n  [Google Signin](https://pub.dev/packages/google_sign_in) package to identify\n  your client application. Helpful instructions for creating your application\n  ID are [here](https://dev.to/happyharis/flutter-web-google-sign-in-42bb) and\n  web-specific package documentation is\n  [here](https://pub.dev/packages/google_sign_in_web). Application ID creation\n  includes setting authorized JavaScript origins to enable your implementation\n  to call the\n  [Google Signin API](https://developers.google.com/identity/sign-in/web).\n\n- `registry-service` (environment variable `REGISTRY_SERVICE`) is the URL of your\n  Registry API server (backend). Note that because web deployments run in\n  browsers, a [grpc-web](https://github.com/grpc/grpc-web) interface to the\n  Registry API is required. To support this, the\n  [registry](https://github.com/apigee/registry) distribution includes\n  [Envoy configuration](https://github.com/apigee/registry/tree/main/deployments/envoy)\n  that allows Envoy to proxy grpc-web connections and the Cloud Run deployments\n  supported by the\n  [registry Makefile](https://github.com/apigee/registry/blob/main/Makefile)\n  include this configured proxy.\n\nThe Google Signin component provides ids of authenticated users. To authorize\nthese users, adjust the variables in\n[registry/lib/authorizations.dart](registry/lib/authorizations.dart).\n\n## License\n\nThis software is licensed under the Apache License, Version 2.0. See\n[LICENSE](LICENSE) for the full license text.\n\n## Disclaimer\n\nThis is not an official Google product. Issues filed on Github are not subject\nto service level agreements (SLAs) and responses should be assumed to be on an\nad-hoc volunteer basis.\n\n## Contributing\n\nContributions are welcome! Please see [CONTRIBUTING](CONTRIBUTING.md) for notes\non how to contribute to this project.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fapigee%2Fregistry-viewer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fapigee%2Fregistry-viewer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fapigee%2Fregistry-viewer/lists"}