{"id":13433260,"url":"https://github.com/resonatecoop/stream","last_synced_at":"2026-01-12T02:26:28.958Z","repository":{"id":37666516,"uuid":"170846863","full_name":"resonatecoop/stream","owner":"resonatecoop","description":"Monorepo for Resonate Coop player","archived":false,"fork":false,"pushed_at":"2022-10-30T18:32:56.000Z","size":31922,"stargazers_count":171,"open_issues_count":33,"forks_count":24,"subscribers_count":16,"default_branch":"development","last_synced_at":"2024-10-29T22:37:43.590Z","etag":null,"topics":["choo","tachyons"],"latest_commit_sha":null,"homepage":"https://stream.resonate.coop","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/resonatecoop.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null},"funding":{"open_collective":"resonate","custom":"https://resonate.is/donate"}},"created_at":"2019-02-15T10:28:01.000Z","updated_at":"2024-09-30T22:17:34.000Z","dependencies_parsed_at":"2023-01-19T12:17:31.404Z","dependency_job_id":null,"html_url":"https://github.com/resonatecoop/stream","commit_stats":null,"previous_names":["resonatecoop/stream2own"],"tags_count":73,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/resonatecoop%2Fstream","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/resonatecoop%2Fstream/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/resonatecoop%2Fstream/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/resonatecoop%2Fstream/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/resonatecoop","download_url":"https://codeload.github.com/resonatecoop/stream/tar.gz/refs/heads/development","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":237951355,"owners_count":19392681,"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":["choo","tachyons"],"created_at":"2024-07-31T02:01:23.252Z","updated_at":"2026-01-12T02:26:28.952Z","avatar_url":"https://github.com/resonatecoop.png","language":"JavaScript","funding_links":["https://opencollective.com/resonate","https://resonate.is/donate"],"categories":["JavaScript"],"sub_categories":[],"readme":"\u003e 🛠 **Status: Maintenance Mode | Stable**\n\u003e\n\u003e This project is currently in [maintenance mode](https://en.wikipedia.org/wiki/Maintenance_mode) - users should feel free to continue to use this app and expect bug fixes, but not expect many additional features.\n\n\u003cdiv align=\"center\"\u003e\n  \u003ch1 align=\"center\"\u003estream2own\u003c/h1\u003e\n  \u003cstrong\u003ePlay fair.\u003c/strong\u003e\n\u003c/div\u003e\n\n\u003cbr /\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003ch3\u003e\n    \u003ca href=\"https://resonate.coop\"\u003e\n      Website\n    \u003c/a\u003e\n    \u003cspan\u003e | \u003c/span\u003e\n    \u003ca href=\"https://www.twitter.com/resonatecoop/\"\u003e\n      Twitter\n    \u003c/a\u003e\n    \u003cspan\u003e | \u003c/span\u003e\n    \u003ca href=\"https://github.com/resonatecoop/stream2own/blob/master/CONTRIBUTING.md\"\u003e\n      Contributing\n    \u003c/a\u003e\n    \u003cspan\u003e | \u003c/span\u003e\n    \u003ca href=\"https://community.resonate.coop/t/dev-volunteers-needed-to-build-the-resonate-ecosystem/2262\"\u003e\n      Developer Guide\n    \u003c/a\u003e\n    \u003cspan\u003e | \u003c/span\u003e\n    \u003ca href=\"https://docs.resonate.coop\"\u003e\n      Resonate Docs\n    \u003c/a\u003e\n  \u003c/h3\u003e\n\u003c/div\u003e\n\n\u003cbr /\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003c!-- Standard --\u003e\n  \u003ca href=\"https://standardjs.com\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat-square\"\n      alt=\"Standard\" /\u003e\n  \u003c/a\u003e\n\u003c/div\u003e\n\nResonate is an open-source music streaming service run by a cooperative of artists and software developers.\n\nIf you want to know what we're building or want to get more involved, head over to the Platform category on our [forum](https://community.resonate.is/c/platform/l/latest?board=default) or read the [Developer Guide](https://community.resonate.coop/t/dev-volunteers-needed-to-build-the-resonate-ecosystem/2262) in our [Resonate Handbook](https://community.resonate.coop/docs).\n\nIf you're looking for a good first task, feel encouraged to take on an un-assigned ['help wanted' issues](https://github.com/resonatecoop/stream/issues).\n\nAre you building something using the Resonate [API](#api) and would like to request a change? Resonate welcomes #proposals in the [Co-Operation section of the forum](https://community.resonate.coop/c/66).\n\n## Table of Contents\n- [Development](#development)\n- [API](#api)\n- [Testing](#testing)\n- [Commands](#commands)\n- [Code style](#code-style)\n- [Contributors](#contributors)\n- [See Also](#see-also)\n\n## Getting Started\n\n### Quickstart\n\nQuick-n-dirty instructions to get the player up and running on your computer using http and pointing to the existing production API (see [API](#api) to learn more about the API).\nAssumes the latest version of [node.js](https://nodejs.org/).\n\n_Stuck? Make an issue on Github! Curious about the roadmap? Ask in the [forum](https://community.resonate.coop/t/development-team/1724)_.\n\nClone the repo and `cd` into it:\n\n```sh\ngit@github.com:resonatecoop/stream.git\ncd stream\n```\n\nInstall dependencies:\n\n```sh\nnpm install\n```\n\nCreate your env file:\n\n```sh\ncp beta/.env.example beta/.env\n```\n\nRun the app:\n\n```sh\nnpm run dev\n```\n\nYou should see the app running at http://localhost:8080.\n\nTry logging in at http://localhost:8080/login.\n\nYou can run the app at a different port using the command below:\n\n```sh\nnpm run dev -- --port 8089\n```\n\nThe embed app (optional)\n\n```sh\nnpm run dev:embed\n```\n\n### Testing on Mobile: Using HTTPS\n\nHTTPS is required to test PWAs on mobile. [Read more about Progressive Web Apps](https://web.dev/install-criteria/).\n\n#### Nginx\n\nYou can find a reference [nginx configuration](/docs/nginx/beta.resonate.localhost.conf) file in the docs.\nNote that the reference is not a complete `nginx.conf` file, it should fit within your existing configuration or be wrapped in a http block directive:\n\n```\nhttp {\n  server {\n  }\n}\n```\n\nIn the example `nginx.conf`, note the lines referring to the `ssl_certificate_key` and the `ssl_certificate_key`.\n\n#### Generating a Custom Certificate\n\nYou can generate a custom certificate using [mkcert](https://github.com/FiloSottile/mkcert) for `beta.resonate.localhost`. *This origin is whitelisted in our CORS config*.\n\nGenerate the certificate (`cert.pem`) and key (`key.pem`) for `beta.resonate.localhost`:\n\n```sh\nmkcert -key-file key.pem -cert-file cert.pem beta.resonate.localhost\n```\n\nIn your nginx.conf file, update the `ssl_certificate_key` and the `ssl_certificate_key` to refer to your new key and certificate files.\n\n#### Update your Hosts file\n\nUpdate your hosts file to include:\n\n```\n127.0.0.1       beta.resonate.localhost\n```\n\n#### Update on your .env file\n\n```sh\nAPP_DOMAIN=beta.resonate.localhost\nAPP_HOST=https://beta.resonate.localhost\n```\n\n#### Run the app!\n\n```sh\nnpm run dev\n```\nYou should now see the player running on https://beta.resonate.localhost or\n\n## Development\n\n### API\n\nIf you want to build on the API for personal use, consider checking the [backlog in our community forum](https://community.resonate.coop/c/platform/52).\nThe Tracks API repo is currently private, but you may ask for access in the forum.\n\nThe Swagger API documentation is currently in flux and split across the [Resonate Search API](https://api.resonate.coop/v2/docs) (see the top right corner for the different services) and [Resonate Service Documentation: User](https://api.resonate.ninja/#/).\n\n### Other Commands\n\n### Add a package\n\nInstalling one of the monorepo packages into one of the other ones is as easy as this:\n```sh\nnpm install @resonate/button --workspace \"beta\"\n```\nThis installs `@resonate/button` into the `beta` package.\n\n### Add a dev dependency\n\nHere's how you would add gulp so that it can be used in any package in this repo:\n\n```sh\nnpm install -D gulp\n```\n\n### Build\n\n```sh\nnpm run build\n```\n\nTo compile a specific package\n\n```sh\nnpm run build --workspace \"@resonate/rangeslider\"\n```\n\n## Testing\n\nRun all tests (lint, dependency-check)\n\n```sh\nnpm test\n```\n\nTest a specific component\n\n```sh\nnpm run test --workspace \"@resonate/player-component\"\n```\n\nA package can have browser tests (tape-run)\n\n```sh\nnpm run test:browser --workspace \"@resonate/api-factory-generator\"\n```\n\n## Commands\n\nCommand                 | Description                                      |\n------------------------|--------------------------------------------------|\n`$ npm run dev`         | Start beta app development server\n`$ npm test`            | Lint, validate deps \u0026 run dependency-check for all packages\n`$ npm run build`       | Compile all beta app files into `beta/dist/`\n\n## Code style\n\nWe use [eslint](https://eslint.org/) together with the [standard](https://standardjs.com/) config as a linter and javascript style guide.\nMake sure to add appropriate plugin for your editor, unless it is already supported out-of-box.\nIt can also be handy to install the [pre-commit hook](https://pre-commit.com/) (see `.pre-commit-config.yaml`) to automatically apply the standard style.\n\n## Maintainers\n\n- Augustin Godiscal \u003cauggod@resonate.is\u003e\n- Marie \u003cmarie@resonate.is\u003e\n\n## See Also\n- [choo](https://github.com/choojs/choo) - sturdy 4kb frontend framework\n- [nanohtml](https://github.com/choojs/nanohtml) - HTML template strings for the Browser with support for Server Side Rendering in Node.\n  strings\n- [nanocomponent](https://github.com/choojs/nanocomponent) - create performant HTML components\n- [tachyons](https://github.com/tachyons-css/tachyons) - functional CSS for\n  humans\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fresonatecoop%2Fstream","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fresonatecoop%2Fstream","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fresonatecoop%2Fstream/lists"}