{"id":30416742,"url":"https://github.com/semro/syncwatch","last_synced_at":"2025-08-22T05:07:44.570Z","repository":{"id":35161851,"uuid":"120048309","full_name":"Semro/syncwatch","owner":"Semro","description":"Browser extension to watch videos together","archived":false,"fork":false,"pushed_at":"2025-05-11T21:58:11.000Z","size":12935,"stargazers_count":159,"open_issues_count":12,"forks_count":22,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-08-22T00:23:37.407Z","etag":null,"topics":["chrome-extension","firefox-extension","nodejs","opera-extension","realtime","social","socket-io","synchronization","video-player"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","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/Semro.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,"zenodo":null}},"created_at":"2018-02-03T01:15:12.000Z","updated_at":"2025-08-20T22:37:39.000Z","dependencies_parsed_at":"2023-10-16T03:15:53.258Z","dependency_job_id":"a0b4c599-7d7b-4c6c-a3bb-2f55fa31c78e","html_url":"https://github.com/Semro/syncwatch","commit_stats":{"total_commits":290,"total_committers":5,"mean_commits":58.0,"dds":0.04137931034482756,"last_synced_commit":"640cb5d83b70b2efae233aa69372ade9aece4407"},"previous_names":[],"tags_count":47,"template":false,"template_full_name":null,"purl":"pkg:github/Semro/syncwatch","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Semro%2Fsyncwatch","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Semro%2Fsyncwatch/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Semro%2Fsyncwatch/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Semro%2Fsyncwatch/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Semro","download_url":"https://codeload.github.com/Semro/syncwatch/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Semro%2Fsyncwatch/sbom","scorecard":{"id":127597,"data":{"date":"2025-08-11","repo":{"name":"github.com/Semro/syncwatch","commit":"263d599bab3100ab735b63c353216f9d94e560e2"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.8,"checks":[{"name":"Code-Review","score":0,"reason":"Found 0/16 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":"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":"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":"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":"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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/deploy-server.yml:1","Warn: no topLevel permission defined: .github/workflows/submit-extension.yml:1","Warn: no topLevel permission defined: .github/workflows/tests.yml:1","Warn: no topLevel permission defined: .github/workflows/validate.yml:1","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":"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":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v1.1.0 not signed: https://api.github.com/repos/Semro/syncwatch/releases/216364037","Warn: release artifact v1.0.4 not signed: https://api.github.com/repos/Semro/syncwatch/releases/180872587","Warn: release artifact v1.0.3 not signed: https://api.github.com/repos/Semro/syncwatch/releases/180203836","Warn: release artifact v1.0.2 not signed: https://api.github.com/repos/Semro/syncwatch/releases/180198875","Warn: release artifact v1.1.0 does not have provenance: https://api.github.com/repos/Semro/syncwatch/releases/216364037","Warn: release artifact v1.0.4 does not have provenance: https://api.github.com/repos/Semro/syncwatch/releases/180872587","Warn: release artifact v1.0.3 does not have provenance: https://api.github.com/repos/Semro/syncwatch/releases/180203836","Warn: release artifact v1.0.2 does not have provenance: https://api.github.com/repos/Semro/syncwatch/releases/180198875"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.md:0","Info: FSF or OSI recognized license: MIT License: LICENSE.md:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"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":"Pinned-Dependencies","score":2,"reason":"dependency not pinned by hash detected -- score normalized to 2","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/deploy-server.yml:24: update your workflow using https://app.stepsecurity.io/secureworkflow/Semro/syncwatch/deploy-server.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/deploy-server.yml:27: update your workflow using https://app.stepsecurity.io/secureworkflow/Semro/syncwatch/deploy-server.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/deploy-server.yml:33: update your workflow using https://app.stepsecurity.io/secureworkflow/Semro/syncwatch/deploy-server.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/deploy-server.yml:49: update your workflow using https://app.stepsecurity.io/secureworkflow/Semro/syncwatch/deploy-server.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/deploy-server.yml:52: update your workflow using https://app.stepsecurity.io/secureworkflow/Semro/syncwatch/deploy-server.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/deploy-server.yml:63: update your workflow using https://app.stepsecurity.io/secureworkflow/Semro/syncwatch/deploy-server.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/deploy-server.yml:66: update your workflow using https://app.stepsecurity.io/secureworkflow/Semro/syncwatch/deploy-server.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/deploy-server.yml:72: update your workflow using https://app.stepsecurity.io/secureworkflow/Semro/syncwatch/deploy-server.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/deploy-server.yml:75: update your workflow using https://app.stepsecurity.io/secureworkflow/Semro/syncwatch/deploy-server.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/deploy-server.yml:87: update your workflow using https://app.stepsecurity.io/secureworkflow/Semro/syncwatch/deploy-server.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/deploy-server.yml:91: update your workflow using https://app.stepsecurity.io/secureworkflow/Semro/syncwatch/deploy-server.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/submit-extension.yml:27: update your workflow using https://app.stepsecurity.io/secureworkflow/Semro/syncwatch/submit-extension.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/submit-extension.yml:32: update your workflow using https://app.stepsecurity.io/secureworkflow/Semro/syncwatch/submit-extension.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/submit-extension.yml:59: update your workflow using https://app.stepsecurity.io/secureworkflow/Semro/syncwatch/submit-extension.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/Semro/syncwatch/tests.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/Semro/syncwatch/tests.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests.yml:32: update your workflow using https://app.stepsecurity.io/secureworkflow/Semro/syncwatch/tests.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests.yml:45: update your workflow using https://app.stepsecurity.io/secureworkflow/Semro/syncwatch/tests.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/validate.yml:12: update your workflow using https://app.stepsecurity.io/secureworkflow/Semro/syncwatch/validate.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/validate.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/Semro/syncwatch/validate.yml/master?enable=pin","Warn: containerImage not pinned by hash: nginx/Dockerfile:1: pin your Docker image by updating nginx:alpine to nginx:alpine@sha256:d67ea0d64d518b1bb04acde3b00f722ac3e9764b3209a9b0a98924ba35e4b779","Warn: containerImage not pinned by hash: packages/syncwatch-server/Dockerfile:1: pin your Docker image by updating node:22-alpine to node:22-alpine@sha256:1b2479dd35a99687d6638f5976fd235e26c5b37e8122f786fcd5fe231d63de5b","Warn: downloadThenRun not pinned by hash: nginx/Dockerfile:14-15","Info:   0 out of  13 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   7 third-party GitHubAction dependencies pinned","Info:   0 out of   2 containerImage dependencies pinned","Info:   0 out of   1 downloadThenRun dependencies pinned","Info:   4 out of   4 npmCommand 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":"Packaging","score":10,"reason":"packaging workflow detected","details":["Info: Project packages its releases by way of GitHub Actions.: .github/workflows/deploy-server.yml:19"],"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":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 19 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":"11 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-968p-4wvh-cqc8","Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw","Warn: Project is vulnerable to: GHSA-582f-p4pg-xc74","Warn: Project is vulnerable to: GHSA-67mh-4wv8-2f99","Warn: Project is vulnerable to: GHSA-52f5-9888-hmc6","Warn: Project is vulnerable to: GHSA-vg6x-rcgg-rjx6","Warn: Project is vulnerable to: GHSA-x574-m823-4x7w","Warn: Project is vulnerable to: GHSA-4r4m-qw57-chr8","Warn: Project is vulnerable to: GHSA-xcj6-pq6g-qj4x","Warn: Project is vulnerable to: GHSA-356w-63v5-8wf4","Warn: Project is vulnerable to: GHSA-859w-5945-r5v3"],"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-16T04:23:06.326Z","repository_id":35161851,"created_at":"2025-08-16T04:23:06.326Z","updated_at":"2025-08-16T04:23:06.326Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271588743,"owners_count":24785751,"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-22T02:00:08.480Z","response_time":65,"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":["chrome-extension","firefox-extension","nodejs","opera-extension","realtime","social","socket-io","synchronization","video-player"],"created_at":"2025-08-22T05:07:43.687Z","updated_at":"2025-08-22T05:07:44.548Z","avatar_url":"https://github.com/Semro.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![GitHub release](https://img.shields.io/github/v/release/semro/syncwatch.svg)](https://github.com/semro/syncwatch/releases/latest)\n[![License](https://img.shields.io/badge/license-MIT-blue.svg?style=flat-square)](LICENSE.md)\n[![Telegram](https://img.shields.io/badge/telegram-syncwatch-blue.svg?logo=telegram\u0026label=Telegram)](https://t.me/syncwatch)\n[![Discord](https://discordapp.com/api/guilds/483775330524332032/widget.png?style=shield)](https://discord.gg/7AYpju4)\n\u003cimg src=\"packages/syncwatch-extension/public/icons/icon128.png\" alt=\"SyncWatch logo\" align=\"right\" /\u003e\n\n# SyncWatch\n\nSyncWatch is extension for browsers which lets you watch videos together with friends synchrounosly.\n\n## Browsers support\n\n| [\u003cimg src=\"https://raw.githubusercontent.com/alrra/browser-logos/master/src/firefox/firefox_48x48.png\" alt=\"Firefox\" width=\"24px\" height=\"24px\" /\u003e\u003cbr/\u003eFirefox](https://addons.mozilla.org/firefox/addon/syncwatch/) | [\u003cimg src=\"https://raw.githubusercontent.com/alrra/browser-logos/master/src/chrome/chrome_48x48.png\" alt=\"Chrome\" width=\"24px\" height=\"24px\" /\u003e\u003cbr/\u003eChrome](https://chrome.google.com/webstore/detail/syncwatch/ggiafipgeeaaahnjamgpjcgkdpanhddg) | [\u003cimg src=\"https://raw.githubusercontent.com/alrra/browser-logos/master/src/opera/opera_48x48.png\" alt=\"Opera\" width=\"24px\" height=\"24px\" /\u003e\u003cbr/\u003eOpera](https://addons.opera.com/extensions/details/syncwatch/) |\n| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n\n## How to use\n\n1. Install extension.\n1. Click on plugin icon.\n1. Write your name and room name. (If room is not exist it will be created)\n1. Click 'connect'.\n1. Share name of the room with friends. They must follow this instruction (1-4 steps).\n1. Go to the page where video is located.\n1. Click 'share' to send link in room.\n1. Other in room should open this link.\n\n## Run server locally\n\nTo get a local copy up and running follow these simple steps.\n\n1. Clone the repo\n\n```sh\ngit clone https://github.com/Semro/syncwatch.git\n```\n\n2. Move to the project directory\n\n```sh\ncd syncwatch/packages/syncwatch-server\n```\n\n3. Install NPM packages\n\n```sh\nnpm ci\n```\n\n4. Run the server\n\n```sh\nnpm run start:dev\n```\n\n- Run the server on other port\n\n```sh\n  npx cross-env PORT=8080 npm run start:dev\n```\n\n## How to add a localization\n\n1. Determine an ISO language code such as `en` referring to [kLanguageInfoTable](https://src.chromium.org/viewvc/chrome/trunk/src/third_party/cld/languages/internal/languages.cc).\n1. Go to locales package folder: `cd packages/syncwatch-locales`\n1. Add a column to [locales.csv](packages/syncwatch-locales/locales.csv) with language code at the top cell.\n1. Add translated messages in following cells.\n1. Generate localized files with `npm run locales` (optional step, you can just pull request `.csv` file).\n1. To localize store description, make a folder in [web-store-assets](web-store-assets) with a corresponding ISO code.\n\n## License\n\n[MIT](https://choosealicense.com/licenses/mit/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsemro%2Fsyncwatch","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsemro%2Fsyncwatch","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsemro%2Fsyncwatch/lists"}