{"id":19610567,"url":"https://github.com/kaboc/piano_server","last_synced_at":"2025-07-08T05:12:24.879Z","repository":{"id":143049270,"uuid":"230045089","full_name":"kaboc/piano_server","owner":"kaboc","description":"A Dart gRPC server for flutter_remote_piano","archived":false,"fork":false,"pushed_at":"2023-08-19T12:13:32.000Z","size":23,"stargazers_count":7,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-05T03:41:22.511Z","etag":null,"topics":["dart","grpc","grpc-web"],"latest_commit_sha":null,"homepage":"","language":"Dart","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/kaboc.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":"2019-12-25T05:11:24.000Z","updated_at":"2024-03-20T05:31:45.000Z","dependencies_parsed_at":"2024-11-11T10:33:19.297Z","dependency_job_id":"dba4aa30-5766-413d-ade5-3c7bcd8e2ec9","html_url":"https://github.com/kaboc/piano_server","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/kaboc%2Fpiano_server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kaboc%2Fpiano_server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kaboc%2Fpiano_server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kaboc%2Fpiano_server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kaboc","download_url":"https://codeload.github.com/kaboc/piano_server/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251219600,"owners_count":21554444,"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":["dart","grpc","grpc-web"],"created_at":"2024-11-11T10:30:24.075Z","updated_at":"2025-07-08T05:12:24.874Z","avatar_url":"https://github.com/kaboc.png","language":"Dart","funding_links":[],"categories":[],"sub_categories":[],"readme":"# gRPC server for [Remote Piano](https://github.com/kaboc/flutter_remote_piano)\n\n## Usage\n\n```\n$ dart bin/server.dart -p {port number}\n```\n\nPort 50051 is used as the default if `-p` option is omitted.\n\n## For gRPC-Web\n\nThe web version of Remote Piano uses `gRPC-Web` instead of `grpc-dart`.\ngRPC-Web does not directly connect to a server but to a proxy before a server.\n\n### How to set up a proxy ([Envoy](https://www.envoyproxy.io/))\n\nThe following settings set up a Docker container with a proxy in it that listens on the port 50051 of the host machine and proxies to the port 9090, which the server should listen on.\n\n1. Copy `envoy.Dockerfile` and `envoy.yaml` in `proxy_example` to your preferred directory.\n2. The value of `address` on the last line of envoy.yaml may need to be changed depending on your environment.\nSee the README of gRPC-Web's [helloworld](https://github.com/grpc/grpc-web/tree/master/net/grpc/gateway/examples/helloworld) for more information.\n3. Build a Docker image by running the following command in the folder where envoy.Dockerfile is located.  \n```\n$ docker build -t piano/envoy -f ./envoy.Dockerfile .\n```\n4. Create a container and start it with the command below.\nIf necessary, change 50051 to another port you want the proxy to listen on.  \n```\n$ docker run -d -p 50051:8080 --name piano_proxy piano/envoy\n```\n5. Move back to the root folder of this example and start a server with the port number `9090` passed by the `-p` flag.\nChange the number accordingly if you have specified a different one on the last line of your envoy.yaml.  \n```\n$ dart bin/server.dart -p 9090\n```\n\n### Other options for a proxy\n\nYou can use some other tools instead as shown in [README](https://www.envoyproxy.io/) of gRPC-Web:\n\n* [NGINX](https://www.nginx.com/)\n    * [Here](https://github.com/grpc/grpc-web/blob/master/net/grpc/gateway/examples/echo/nginx.conf) is a sample configuration.\n    * See [this post](https://www.nginx.com/blog/nginx-1-13-10-grpc/) for more details.\n* [gRPC Web Go Proxy](https://github.com/improbable-eng/grpc-web/tree/master/go/grpcwebproxy)\n\n### Links\n\n* [Remote Piano](https://github.com/kaboc/flutter_remote_piano)\n* [Piano Server written in Go](https://github.com/kaboc/piano_server_go)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkaboc%2Fpiano_server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkaboc%2Fpiano_server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkaboc%2Fpiano_server/lists"}