{"id":17312299,"url":"https://github.com/samdutton/apprtc-pwa","last_synced_at":"2025-08-18T11:12:26.842Z","repository":{"id":141527646,"uuid":"90281822","full_name":"samdutton/apprtc-pwa","owner":"samdutton","description":"PWA version of appr.tc","archived":false,"fork":false,"pushed_at":"2017-06-16T17:53:15.000Z","size":1047,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-27T01:14:53.287Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/samdutton.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","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-05-04T15:50:28.000Z","updated_at":"2020-03-06T16:37:28.000Z","dependencies_parsed_at":null,"dependency_job_id":"aa9311b0-eeae-45a3-abf6-fe8446f3a050","html_url":"https://github.com/samdutton/apprtc-pwa","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/samdutton/apprtc-pwa","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/samdutton%2Fapprtc-pwa","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/samdutton%2Fapprtc-pwa/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/samdutton%2Fapprtc-pwa/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/samdutton%2Fapprtc-pwa/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/samdutton","download_url":"https://codeload.github.com/samdutton/apprtc-pwa/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/samdutton%2Fapprtc-pwa/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270982207,"owners_count":24679449,"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-08-18T02:00:08.743Z","response_time":89,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","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":[],"created_at":"2024-10-15T12:43:09.557Z","updated_at":"2025-08-18T11:12:26.821Z","avatar_url":"https://github.com/samdutton.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Build Status](https://travis-ci.org/webrtc/apprtc.svg?branch=master)](https://travis-ci.org/webrtc/apprtc)\n\n# AppRTC Demo Code\n\n## Development\n\nDetailed information on devloping in the [webrtc](https://github.com/webrtc) github repo can be found in the [WebRTC GitHub repo developer's guide](https://docs.google.com/document/d/1tn1t6LW2ffzGuYTK3366w1fhTkkzsSvHsBnOHoDfRzY/edit?pli=1#heading=h.e3366rrgmkdk).\n\nThe development AppRTC server can be accessed by visiting [http://localhost:8080](http://localhost:8080).\n\nRunning AppRTC locally requires the [Google App Engine SDK for Python](https://cloud.google.com/appengine/downloads#Google_App_Engine_SDK_for_Python) and [Grunt](http://gruntjs.com/).\n\nDetailed instructions for running on Ubuntu Linux are provided below.\n\n### Running on Ubuntu Linux\n\nInstall grunt by first installing [npm](https://www.npmjs.com/). npm is\ndistributed as part of nodejs.\n\n```\nsudo apt-get install nodejs\nsudo npm install -g npm\n```\n\nOn Ubuntu 14.04 the default packages installs `/usr/bin/nodejs` but the `/usr/bin/node` executable is required for grunt. This is installed on some Ubuntu package sets; if it is missing, you can add this by installing the `nodejs-legacy` package,\n\n```\nsudo apt-get install nodejs-legacy\n```\n\nIt is easiest to install a shared version of `grunt-cli` from `npm` using the `-g` flag. This will allow you access the `grunt` command from `/usr/local/bin`. More information can be found on [`gruntjs` Getting Started](http://gruntjs.com/getting-started).\n\n```\nsudo npm -g install grunt-cli\n```\n\n*Omitting the `-g` flag will install `grunt-cli` to the current directory under the `node_modules` directory.*\n\nFinally, you will want to install grunt and required grunt dependencies. *This can be done from any directory under your checkout of the [webrtc/apprtc](https://github.com/webrtc/apprtc) repository.*\n\n```\nnpm install\n```\n\nOn Ubuntu, you will also need to install the webtest package:\n```\nsudo apt-get install python-webtest\n```\n\n\nBefore you start the AppRTC dev server and *everytime you update the source code you need to recompile the App Engine package by running,\n\n```\ngrunt build\n```\n\nStart the AppRTC dev server from the `out/app_engine` directory by running the Google App Engine SDK dev server,\n\n```\n\u003cpath to sdk\u003e/dev_appserver.py ./out/app_engine\n```\nThen navigate to http://localhost:8080 in your browser (given it's on the same machine).\n\n### Testing\n\nAll tests by running `grunt`.\n\nTo run only the Python tests you can call,\n\n```\ngrunt runPythonTests\n```\n\n### Enabling Local Logging\n\n*Note that logging is automatically enabled when running on Google App Engine using an implicit service account.*\n\nBy default, logging to a BigQuery from the development server is disabled. Log information is presented on the console. Unless you are modifying the analytics API you will not need to enable remote logging.\n\nLogging to BigQuery when running LOCALLY requires a `secrets.json` containing Service Account credentials to a Google Developer project where BigQuery is enabled. DO NOT COMMIT `secrets.json` TO THE REPOSITORY.\n\nTo generate a `secrets.json` file in the Google Developers Console for your project:\n1. Go to the project page.\n1. Under *APIs \u0026 auth* select *Credentials*.\n1. Confirm a *Service Account* already exists or create it by selecting *Create new Client ID*.\n1. Select *Generate new JSON key* from the *Service Account* area to create and download JSON credentials.\n1. Rename the downloaded file to `secrets.json` and place in the directory containing `analytics.py`.\n\nWhen the `Analytics` class detects that AppRTC is running locally, all data is logged to `analytics` table in the `dev` dataset. You can bootstrap the `dev` dataset by following the instructions in the [Bootstrapping/Updating BigQuery](#bootstrappingupdating-bigquery).\n\n## BigQuery\n\nWhen running on App Engine the `Analytics` class will log to `analytics` table in the `prod` dataset for whatever project is defined in `app.yaml`.\n\n### Schema\n\n`bigquery/analytics_schema.json` contains the fields used in the BigQuery table. New fields can be added to the schema and the table updated. However, fields *cannot* be renamed or removed. *Caution should be taken when updating the production table as reverting schema updates is difficult.*\n\nUpdate the BigQuery table from the schema by running,\n\n```\nbq update -t prod.analytics bigquery/analytics_schema.json\n```\n\n### Bootstrapping\n\nInitialize the required BigQuery datasets and tables with the following,\n\n```\nbq mk prod\nbq mk -t prod.analytics bigquery/analytics_schema.json\n```\n\n### Deployment\n\nIn order to deploy your own AppRTC instance you need a TURN/ICE server and a signaling server, in addition to AppRTC itself. The signaling server (Collider) is part of this repository and can be found [here](https://github.com/webrtc/apprtc/tree/master/src/collider)) while the TURN server used is [rfc5766-turn-server](https://github.com/coturn/rfc5766-turn-server). Credentials and TURN server instances are provided by a [CEOD](https://github.com/juberti/computeengineondemand) service that generates TURN servers on demand in form of a JSON response.\n\nThis means you need to either set-up a web server that returns TURN credentials and IP addresses (basically mimic the [CEOD](https://github.com/juberti/computeengineondemand) server) in a JSON response, or replace the [CEOD](https://github.com/webrtc/apprtc/blob/master/src/app_engine/constants.py#L15) details with your own TURN server provider details, and then change https://github.com/webrtc/apprtc/blob/master/src/app_engine/apprtc.py#L256 to turn_url = constants.TURN_URL_TEMPLATE.\n\nYou can test using your own TURN server by appending the ?ts=serverUrl parameter, details on AppRTC URL parameters can be found at https://appr.tc/params.html.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsamdutton%2Fapprtc-pwa","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsamdutton%2Fapprtc-pwa","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsamdutton%2Fapprtc-pwa/lists"}