{"id":13760911,"url":"https://github.com/jellyfin/jellyfin-web","last_synced_at":"2026-05-25T01:02:26.975Z","repository":{"id":37431836,"uuid":"164221924","full_name":"jellyfin/jellyfin-web","owner":"jellyfin","description":"The Free Software Media System - Official Web Client","archived":false,"fork":false,"pushed_at":"2026-01-15T01:25:40.000Z","size":208907,"stargazers_count":3307,"open_issues_count":482,"forks_count":1763,"subscribers_count":40,"default_branch":"master","last_synced_at":"2026-01-15T03:04:50.250Z","etag":null,"topics":["hacktoberfest","jellyfin","media","videos"],"latest_commit_sha":null,"homepage":"https://jellyfin.org","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jellyfin.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":".github/CODEOWNERS","security":null,"support":".github/SUPPORT.md","governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"open_collective":"jellyfin"}},"created_at":"2019-01-05T14:26:33.000Z","updated_at":"2026-01-15T01:25:44.000Z","dependencies_parsed_at":"2024-01-18T00:18:57.061Z","dependency_job_id":"68687e23-8bfe-45a1-80d1-3358c775e165","html_url":"https://github.com/jellyfin/jellyfin-web","commit_stats":{"total_commits":20209,"total_committers":2179,"mean_commits":9.274437815511703,"dds":0.7483794349052402,"last_synced_commit":"9f8905989fdf2f774c327a9e65ca145082c7f53a"},"previous_names":[],"tags_count":103,"template":false,"template_full_name":null,"purl":"pkg:github/jellyfin/jellyfin-web","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jellyfin%2Fjellyfin-web","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jellyfin%2Fjellyfin-web/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jellyfin%2Fjellyfin-web/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jellyfin%2Fjellyfin-web/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jellyfin","download_url":"https://codeload.github.com/jellyfin/jellyfin-web/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jellyfin%2Fjellyfin-web/sbom","scorecard":{"id":113002,"data":{"date":"2025-08-11","repo":{"name":"github.com/jellyfin/jellyfin-web","commit":"185223d2fc1a64c4dbddb38aa149688cd11f8023"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.8,"checks":[{"name":"Dangerous-Workflow","score":0,"reason":"dangerous workflow patterns detected","details":["Warn: untrusted code checkout '${{ github.event.pull_request.head.sha }}': .github/workflows/pull_request.yml:82"],"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":"Code-Review","score":3,"reason":"Found 6/20 approved changesets -- score normalized to 3","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":"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":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"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":"Maintained","score":10,"reason":"30 commit(s) and 11 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: GNU General Public License v2.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Info: found token with 'none' permissions: .github/workflows/pull_request.yml:1","Warn: jobLevel 'security-events' permission set to 'write': .github/workflows/pull_request.yml:55","Info: jobLevel 'actions' permission set to 'read': .github/workflows/pull_request.yml:53","Info: jobLevel 'contents' permission set to 'read': .github/workflows/pull_request.yml:54","Info: jobLevel 'contents' permission set to 'read': .github/workflows/pull_request.yml:67","Warn: jobLevel 'deployments' permission set to 'write': .github/workflows/pull_request.yml:68","Info: found token with 'none' permissions: .github/workflows/push.yml:1","Warn: jobLevel 'security-events' permission set to 'write': .github/workflows/push.yml:42","Info: jobLevel 'actions' permission set to 'read': .github/workflows/push.yml:40","Info: jobLevel 'contents' permission set to 'read': .github/workflows/push.yml:41","Info: jobLevel 'contents' permission set to 'read': .github/workflows/push.yml:53","Warn: jobLevel 'deployments' permission set to 'write': .github/workflows/push.yml:54","Warn: no topLevel permission defined: .github/workflows/__automation.yml:1","Warn: no topLevel permission defined: .github/workflows/__codeql.yml:1","Warn: no topLevel permission defined: .github/workflows/__deploy.yml:1","Warn: no topLevel permission defined: .github/workflows/__job_messages.yml:1","Warn: no topLevel permission defined: .github/workflows/__package.yml:1","Warn: no topLevel permission defined: .github/workflows/__quality_checks.yml:1","Warn: no topLevel permission defined: .github/workflows/pull_request.yml:1","Warn: no topLevel permission defined: .github/workflows/push.yml:1"],"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":"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":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Security-Policy","score":10,"reason":"security policy file detected","details":["Info: security policy file detected: github.com/jellyfin/.github/SECURITY.md:1","Info: Found linked content: github.com/jellyfin/.github/SECURITY.md:1","Info: Found disclosure, vulnerability, and/or timelines in security policy: github.com/jellyfin/.github/SECURITY.md:1","Info: Found text in security policy: github.com/jellyfin/.github/SECURITY.md:1"],"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":"Branch-Protection","score":-1,"reason":"internal error: error during GetBranch(release-10.10.z): error during branchesHandler.query: internal error: githubv4.Query: Resource not accessible by integration","details":null,"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":10,"reason":"all dependencies are pinned","details":["Info:  15 out of  15 GitHub-owned GitHubAction dependencies pinned","Info:   4 out of   4 third-party GitHubAction dependencies pinned","Info:   3 out of   3 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":"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":"SAST","score":10,"reason":"SAST tool is run on all commits","details":["Info: SAST configuration detected: CodeQL","Info: all commits (16) 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":"13 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-xffm-g5w8-qvg7","Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw","Warn: Project is vulnerable to: GHSA-grv7-fg5c-xmjg","Warn: Project is vulnerable to: GHSA-vhxf-7vqr-mrjg","Warn: Project is vulnerable to: GHSA-4gmj-3p3h-gm8h","Warn: Project is vulnerable to: GHSA-fjxv-7rqg-78g4","Warn: Project is vulnerable to: GHSA-952p-6rrq-rcjv","Warn: Project is vulnerable to: GHSA-76c9-3jph-rj3q","Warn: Project is vulnerable to: GHSA-wgrm-67xf-hhpq","Warn: Project is vulnerable to: GHSA-7fh5-64p2-3v2j","Warn: Project is vulnerable to: GHSA-w5p7-h5w8-2hfq","Warn: Project is vulnerable to: GHSA-7p7h-4mm5-852v","Warn: Project is vulnerable to: GHSA-p9pc-299p-vxgp"],"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-15T15:43:20.432Z","repository_id":37431836,"created_at":"2025-08-15T15:43:20.433Z","updated_at":"2025-08-15T15:43:20.433Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28559345,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-19T00:46:33.223Z","status":"online","status_checked_at":"2026-01-19T02:00:08.049Z","response_time":67,"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":["hacktoberfest","jellyfin","media","videos"],"created_at":"2024-08-03T13:01:26.916Z","updated_at":"2026-05-25T01:02:26.961Z","avatar_url":"https://github.com/jellyfin.png","language":"JavaScript","funding_links":["https://opencollective.com/jellyfin"],"categories":["JavaScript"],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003eJellyfin Web\u003c/h1\u003e\n\u003ch3 align=\"center\"\u003ePart of the \u003ca href=\"https://jellyfin.org\"\u003eJellyfin Project\u003c/a\u003e\u003c/h3\u003e\n\n---\n\n\u003cp align=\"center\"\u003e\n\u003cimg alt=\"Logo Banner\" src=\"https://raw.githubusercontent.com/jellyfin/jellyfin-ux/master/branding/SVG/banner-logo-solid.svg?sanitize=true\"/\u003e\n\u003cbr/\u003e\n\u003cbr/\u003e\n\u003ca href=\"https://github.com/jellyfin/jellyfin-web\"\u003e\n\u003cimg alt=\"GPL 2.0 License\" src=\"https://img.shields.io/github/license/jellyfin/jellyfin-web.svg\"/\u003e\n\u003c/a\u003e\n\u003ca href=\"https://github.com/jellyfin/jellyfin-web/releases\"\u003e\n\u003cimg alt=\"Current Release\" src=\"https://img.shields.io/github/release/jellyfin/jellyfin-web.svg\"/\u003e\n\u003c/a\u003e\n\u003ca href=\"https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/?utm_source=widget\"\u003e\n\u003cimg src=\"https://translate.jellyfin.org/widgets/jellyfin/-/jellyfin-web/svg-badge.svg\" alt=\"Translation Status\"/\u003e\n\u003c/a\u003e\n\u003cbr/\u003e\n\u003ca href=\"https://opencollective.com/jellyfin\"\u003e\n\u003cimg alt=\"Donate\" src=\"https://img.shields.io/opencollective/all/jellyfin.svg?label=backers\"/\u003e\n\u003c/a\u003e\n\u003ca href=\"https://features.jellyfin.org\"\u003e\n\u003cimg alt=\"Feature Requests\" src=\"https://img.shields.io/badge/fider-vote%20on%20features-success.svg\"/\u003e\n\u003c/a\u003e\n\u003ca href=\"https://matrix.to/#/+jellyfin:matrix.org\"\u003e\n\u003cimg alt=\"Chat on Matrix\" src=\"https://img.shields.io/matrix/jellyfin:matrix.org.svg?logo=matrix\"/\u003e\n\u003c/a\u003e\n\u003ca href=\"https://www.reddit.com/r/jellyfin\"\u003e\n\u003cimg alt=\"Join our Subreddit\" src=\"https://img.shields.io/badge/reddit-r%2Fjellyfin-%23FF5700.svg\"/\u003e\n\u003c/a\u003e\n\u003c/p\u003e\n\nJellyfin Web is the frontend used for most of the clients available for end users, such as desktop browsers, Android, and iOS. We welcome all contributions and pull requests! If you have a larger feature in mind please open an issue so we can discuss the implementation before you start. Translations can be improved very easily from our \u003ca href=\"https://translate.jellyfin.org/projects/jellyfin/jellyfin-web\"\u003eWeblate\u003c/a\u003e instance. Look through the following graphic to see if your native language could use some work!\n\n\u003ca href=\"https://translate.jellyfin.org/engage/jellyfin/?utm_source=widget\"\u003e\n\u003cimg src=\"https://translate.jellyfin.org/widgets/jellyfin/-/jellyfin-web/multi-auto.svg\" alt=\"Detailed Translation Status\"/\u003e\n\u003c/a\u003e\n\n## Build Process\n\n### Dependencies\n\n- [Node.js](https://nodejs.org/en/download)\n- npm (included in Node.js)\n\n### Getting Started\n\n1. Clone or download this repository.\n\n   ```sh\n   git clone https://github.com/jellyfin/jellyfin-web.git\n   cd jellyfin-web\n   ```\n\n2. Install build dependencies in the project directory.\n\n   ```sh\n   npm install\n   ```\n\n3. Run the web client with webpack for local development.\n\n   ```sh\n   npm start\n   ```\n\n4. Build the client with sourcemaps available.\n\n   ```sh\n   npm run build:development\n   ```\n\nReview the [Contributing Guide](./CONTRIBUTING.md) for more information on our process and tech stack.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjellyfin%2Fjellyfin-web","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjellyfin%2Fjellyfin-web","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjellyfin%2Fjellyfin-web/lists"}