{"id":19754931,"url":"https://github.com/mopidy/website","last_synced_at":"2025-04-30T11:31:45.355Z","repository":{"id":1335284,"uuid":"1281113","full_name":"mopidy/website","owner":"mopidy","description":"The Mopidy project's website, excluding docs","archived":false,"fork":false,"pushed_at":"2024-10-29T09:33:16.000Z","size":7622,"stargazers_count":12,"open_issues_count":2,"forks_count":18,"subscribers_count":11,"default_branch":"main","last_synced_at":"2024-10-29T11:44:32.175Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://mopidy.com","language":"Sass","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mopidy.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2011-01-22T05:58:39.000Z","updated_at":"2024-10-29T09:33:14.000Z","dependencies_parsed_at":"2024-02-06T08:49:47.861Z","dependency_job_id":"5555d172-26bd-4193-9959-e4eb14df8f9c","html_url":"https://github.com/mopidy/website","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/mopidy%2Fwebsite","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mopidy%2Fwebsite/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mopidy%2Fwebsite/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mopidy%2Fwebsite/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mopidy","download_url":"https://codeload.github.com/mopidy/website/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224208102,"owners_count":17273674,"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":[],"created_at":"2024-11-12T03:06:40.712Z","updated_at":"2024-11-12T03:06:41.130Z","avatar_url":"https://github.com/mopidy.png","language":"Sass","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Mopidy website\n\nThis repo is the source for https://mopidy.com, hosted at GitHub Pages.\n\nThe documentation site, https://docs.mopidy.com, does not use this repo. It is\nbased on the `docs/` dir of the main Mopidy repo, and is hosted by [Read The\nDocs](https://readthedocs.org/).\n\n\n## Running locally\n\nSee the docs on [Testing your GitHub Pages site locally with Jekyll][1].\n\n[1]: https://help.github.com/en/articles/testing-your-github-pages-site-locally-with-jekyll\n\n\n## Deploying changes\n\nTo update https://mopidy.com, make changes to the source, commit, and push to\n`git@github.com:mopidy/website.git`.\n\nThat's it.\n\n\n## Extension registry\n\nThis extension registry is a community effort, and will never be complete\nwithout your help.\n\nTo add or update an extension, use the existing extension definitions in the\n`_ext/` directory for inspiration. Submit your update as a pull request on\nthis repo.\n\nThe source files for the Mopidy extension registry can be found in the\n`_ext/` directory. Any related images are in the `media/ext/` directory.\n\nThe \"front matter\" part of the extension definitions is a YAML data structure\nwith the following fields:\n\n``` yaml\n### Required fields:\n\ntitle: Mopidy-Foo               # Name of extension\ntype: backend                   # One of \"backend\"/\"frontend\"/\"mixer\"/\"web\"\n\n### Optional fields:\n\ndev:                            # Development related fields\n  github: mopidy/mopidy-foo         # GitHub repo\n  circleci: true                    # Whether using CircleCI\n  travisci: false                   # Whether using Travis CI\n  codecov: true                     # Whether using Codecov code coverage\n  coveralls: false                  # Whether using Coveralls code coverage\n\ndist:                           # Distribution related fields:\n  pypi: Mopidy-Foo                  # PyPI package name\n  apt-debian: mopidy-foo            # Debian/Ubuntu package name\n  apt-mopidy: mopidy-foo            # apt.mopidy.com package name\n  arch-aur: mopidy-foo              # Arch Linux AUR package name\n  fedora: mopidy-foo                # Fedora package name\n  rpmfusion: mopidy-foo             # RPM Fusion package name\n  homebrew:\n    tap: mopidy/mopidy              # Homebrew tap name\n    formula: mopidy-foo             # Homebrew formula name in above tap\n\nlogo: /media/ext/foo.png        # Logo, e.g. of the music service\n\nimages:                         # List of images of the extension in use\n  - /media/ext/foo.jpg\n\nservice: FooBar                 # Name of the upstream service if any.\n\noauth:                          # OAuth integration for services that require tokens:\n  endpoint: https://example.com     # Redirection endpoint to start OAuth flow\n  origin: https://example.org       # Origin of callback page at end of OAuth flow\n                                    # Defaults to endpoint's origin if not set\n  button:                           # Styling for auth button\n    style: background: ...              # Inline CSS to apply to button.\n    logo:\n      url:                              # URL to logo to use\n      style:                            # Inline CSS to apply to logo.\n  config:                           # One or more config sections to fill with data\n    section_name:                       # Name of the config section\n     - config_field                     # Config field name\n  note: Extra markdown info...      # Optional text adding more info\n```\n\n### OAuth authentication\n\nThe extension registry has support for integrating OAuth for service\nintegration. This works by opening a pop-up targeted at the configured\nendpoint, during the flow we try polling with `postMessage` targeted at the\ncallback origin. Once the flow is complete, and your callback page loads it\nshould install an event listener that will reply to our polling. Once our code\nhas the data we close the pop-up for you.\n\n``` javascript\nconst data = {\n  auth_token: ...,\n  state: ...,\n  error: ...,\n  error_description: ...,\n};\nwindow.addEventListener('message', event =\u003e {\n  if (event.origin === 'https://mopidy.com') {\n    event.source.postMessage(data, event.origin);\n  }\n});\n```\n\nNote that the field names in the data should be mapped to the expected config\nfield names. E.g. mapping `access_token` to `auth_token`. The `error` field is\nan error code, and `error_description` a human friendly version of the same\nerror. `state` is there to pass back any initial state we might have sent to\nthe endpoint.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmopidy%2Fwebsite","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmopidy%2Fwebsite","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmopidy%2Fwebsite/lists"}