{"id":21319485,"url":"https://github.com/zoom/zoomapps-sample-js","last_synced_at":"2025-04-06T04:16:45.837Z","repository":{"id":37518674,"uuid":"504669088","full_name":"zoom/zoomapps-sample-js","owner":"zoom","description":"A Hello World Zoom App built with Vanilla JS","archived":false,"fork":false,"pushed_at":"2025-01-07T20:31:01.000Z","size":419,"stargazers_count":60,"open_issues_count":10,"forks_count":53,"subscribers_count":11,"default_branch":"main","last_synced_at":"2025-03-30T03:09:57.870Z","etag":null,"topics":["sample-app"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","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/zoom.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"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":"2022-06-17T20:52:08.000Z","updated_at":"2025-02-01T09:14:29.000Z","dependencies_parsed_at":"2023-11-28T21:46:47.405Z","dependency_job_id":"7454ea84-cb15-4e04-8212-67c4db61d0ce","html_url":"https://github.com/zoom/zoomapps-sample-js","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/zoom%2Fzoomapps-sample-js","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zoom%2Fzoomapps-sample-js/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zoom%2Fzoomapps-sample-js/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zoom%2Fzoomapps-sample-js/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zoom","download_url":"https://codeload.github.com/zoom/zoomapps-sample-js/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247430966,"owners_count":20937875,"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":["sample-app"],"created_at":"2024-11-21T19:42:21.460Z","updated_at":"2025-04-06T04:16:45.817Z","avatar_url":"https://github.com/zoom.png","language":"JavaScript","readme":"# Zoom Apps JavaScript Sample\n\nThis Zoom App Sample uses Node.js + Express to build a simple Hello World Zoom App.\n\n## Prerequisites\n\n1. [Node JS](https://nodejs.org/en/)\n2. [Ngrok](https://ngrok.com/docs/getting-started)\n3. [Zoom Account](https://support.zoom.us/hc/en-us/articles/207278726-Plan-Types-)\n4. [Zoom App Credentials](#config:-app-credentials) (Instructions below)\n    1. Client ID\n    2. Client Secret\n    3. Redirect URI\n\n## Getting started\n\nOpen your terminal:\n\n```bash\n# Clone down this repository\ngit clone git@github.com:zoom/zoomapps-sample-js.git\n\n# navigate into the cloned project directory\ncd zoomapps-sample-js\n\n# run NPM to install the app dependencies\nnpm install\n\n# initialize your ngrok session\nngrok http 3000\n```\n\n### Create your Zoom App\n\nIn your web browser, navigate to [Zoom Developer Portal](https://developers.zoom.us/) and register/log into your\ndeveloper account.\n\nClick the \"Build App\" button at the top and choose to \"Zoom Apps\" application.\n\n1. Name your app\n2. Choose whether to list your app on the marketplace or not\n3. Click \"Create\"\n\nFor more information, you can follow [this guide](https://dev.to/zoom/introducing-zoom-apps-33he)\ncheck out [this video series](https://www.youtube.com/playlist?list=PLKpRxBfeD1kGN-0QgQ6XtSwtxI3GQM16R) on how to create and configure these sample Zoom Apps.\n\n### Config: App Credentials\n\nIn your terminal where you launched `ngrok`, find the `Forwarding` value and copy/paste that into the \"Home URL\" and \"\nRedirect URL for OAuth\" fields.\n\n```\nHome URL:               https://xxxxx.ngrok.io\nRedirect URL for OAuth: https://xxxxx.ngrok.io/auth\n```\n\n\u003e NOTE: ngrok URLs under ngrok's Free plan are ephemeral, meaning they will only live for up to a couple hours at most, and will change every time you reinitialize the application. This will require you to update these fields every time you restart your ngrok service.\n\n#### OAuth allow list\n\n- `https://example.ngrok.io`\n\n#### Domain allow list\n\n- `appssdk.zoom.us`\n- `ngrok.io`\n\n### Config: Information\n\nThe following information is required to activate your application:\n\n- Basic Information\n    - App name\n    - Short description\n    - Long description (entering a short message here is fine for now)\n- Developer Contact Information\n    - Name\n    - Email address\n\n\u003e NOTE: if you intend to publish your application on the Zoom Apps Marketplace, more information will be required in this section before submitting.\n\n### Config: App Features\n\nUnder the Zoom App SDK section, click the `+ Add APIs` button and enable the following options from their respective\nsections:\n\n#### APIs\n\n- shareApp\n\n### Scopes\n\nEnsure that the following scope is selected on the Scopes tab:\n- `zoomapp:inmeeting`\n\n### Config `.env`\n\nWhen building for Development, open the `.env` file in your text editor and enter the following information from the App Credentials section you just\nconfigured:\n\n```ini\n# Client ID for your Zoom App\nZM_CLIENT_ID=[app_client_id]\n\n# Client Secret for your Zoom app\nZM_CLIENT_SECRET=[app_client_secret]\n\n# Redirect URI set for your app in the Zoom Marketplace\nZM_REDIRECT_URL=https://[xxxx-xx-xx-xxx-x].ngrok.io/auth\n```\n\n#### Zoom for Government\n\nIf you are a [Zoom for Government (ZfG)](https://www.zoomgov.com/) customer you can use the `ZM_HOST` variable to change\nthe base URL used for Zoom. This will allow you to adjust to the different Marketplace and API Base URLs used by ZfG\ncustomers.\n\n**Marketplace URL:** marketplace.*zoomgov.com*\n\n**API Base URL:** api.*zoomgov.com*\n\n## Start the App\n\n### Development\n\nRun the `dev` npm script to start in development mode using a Docker container.\n\n```shell\nnpm run dev\n```\n\nThe `dev` script will:\n\n1. Watch JS files and built to the dist/ folder\n1. Watch Server files and build to the dist/ folder\n1. Start the application\n\n### Production\n\nWhen running your application in production no logs are sent to the console by default and the server is not restarted\non file changes.\n\nWe use the `NODE_ENV` environment variable here to tell the application to start in prodcution mode.\n\n```shell\n# Mac/Linux\nNODE_ENV=production npm start\n\n# Windows\nset NODE_ENV=production \u0026\u0026 npm start\n````\n\n## Usage\n\nTo install the Zoom App, Navigate to the **Home URL** that you set in your browser and click the link to install.\n\nAfter you authorize the app, Zoom will automatically open the app within the client.\n\n### Keeping secrets secret\n\nThis application makes use of your Zoom App Client ID and Client Secret as well as a custom secret for signing session\ncookies. During development, the application will read from the .env file. ;\n\nIn order to align with security best practices, this application does not read from the .env file in production mode.\n\nThis means you'll want to set environment variables on the hosting platform that you'\nre using instead of within the .env file. This might include using a secret manager or a CI/CD pipeline.\n\n\u003e :warning: **Never commit your .env file to version control:** The file likely contains Zoom App Credentials and Session Secrets\n\n### Code Style\n\nThis project uses [prettier](https://prettier.io/) and [eslint](https://eslint.org/) to enforce style and protect\nagainst coding errors along with a pre-commit git hook(s) via [husky](https://typicode.github.io/husky/#/) to ensure\nfiles pass checks prior to commit.\n\n### Testing\n\nAt this time there are no e2e or unit tests.\n\n## Need help?\n\nIf you're looking for help, try [Developer Support](https://devsupport.zoom.us) or\nour [Developer Forum](https://devforum.zoom.us). Priority support is also available\nwith [Premier Developer Support](https://zoom.us/docs/en-us/developer-support-plans.html) plans.\n\n### Documentation\nMake sure to review [our documentation](https://marketplace.zoom.us/docs/zoom-apps/introduction/) as a reference when building your Zoom Apps.","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzoom%2Fzoomapps-sample-js","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzoom%2Fzoomapps-sample-js","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzoom%2Fzoomapps-sample-js/lists"}