Stream
Monorepo for Resonate Coop player
> ๐ **Status: Maintenance Mode | Stable** > > 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. The project is written primarily in JavaScript, distributed under the GNU General Public License v3.0 license, first published in 2019. Key topics include: choo, tachyons.
<div align="center"> <h1 align="center">stream2own</h1> <strong>Play fair.</strong> </div> <br /> <div align="center"> <h3> <a href="https://resonate.coop"> Website </a> <span> | </span> <a href="https://www.twitter.com/resonatecoop/"> Twitter </a> <span> | </span> <a href="https://github.com/resonatecoop/stream2own/blob/master/CONTRIBUTING.md"> Contributing </a> <span> | </span> <a href="https://community.resonate.coop/t/dev-volunteers-needed-to-build-the-resonate-ecosystem/2262"> Developer Guide </a> <span> | </span> <a href="https://docs.resonate.coop"> Resonate Docs </a> </h3> </div> <br /> <div align="center"> <!-- Standard --> <a href="https://standardjs.com"> <img src="https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat-square" alt="Standard" /> </a> </div>๐ Status: Maintenance Mode | Stable
This project is currently in maintenance mode - users should feel free to continue to use this app and expect bug fixes, but not expect many additional features.
Resonate is an open-source music streaming service run by a cooperative of artists and software developers.
If you want to know what we're building or want to get more involved, head over to the Platform category on our forum or read the Developer Guide in our Resonate Handbook.
If you're looking for a good first task, feel encouraged to take on an un-assigned 'help wanted' issues.
Are you building something using the Resonate API and would like to request a change? Resonate welcomes #proposals in the Co-Operation section of the forum.
Table of Contents
Getting Started
Quickstart
Quick-n-dirty instructions to get the player up and running on your computer using http and pointing to the existing production API (see API to learn more about the API).
Assumes the latest version of node.js.
Stuck? Make an issue on Github! Curious about the roadmap? Ask in the forum.
Clone the repo and cd into it:
shgit@github.com:resonatecoop/stream.git cd stream
Install dependencies:
shnpm install
Create your env file:
shcp beta/.env.example beta/.env
Run the app:
shnpm run dev
You should see the app running at http://localhost:8080.
Try logging in at http://localhost:8080/login.
You can run the app at a different port using the command below:
shnpm run dev -- --port 8089
The embed app (optional)
shnpm run dev:embed
Testing on Mobile: Using HTTPS
HTTPS is required to test PWAs on mobile. Read more about Progressive Web Apps.
Nginx
You can find a reference nginx configuration file in the docs.
Note 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:
http {
server {
}
}
In the example nginx.conf, note the lines referring to the ssl_certificate_key and the ssl_certificate_key.
Generating a Custom Certificate
You can generate a custom certificate using mkcert for beta.resonate.localhost. This origin is whitelisted in our CORS config.
Generate the certificate (cert.pem) and key (key.pem) for beta.resonate.localhost:
shmkcert -key-file key.pem -cert-file cert.pem beta.resonate.localhost
In your nginx.conf file, update the ssl_certificate_key and the ssl_certificate_key to refer to your new key and certificate files.
Update your Hosts file
Update your hosts file to include:
127.0.0.1 beta.resonate.localhost
Update on your .env file
shAPP_DOMAIN=beta.resonate.localhost APP_HOST=https://beta.resonate.localhost
Run the app!
shnpm run dev
You should now see the player running on https://beta.resonate.localhost or
Development
API
If you want to build on the API for personal use, consider checking the backlog in our community forum.
The Tracks API repo is currently private, but you may ask for access in the forum.
The Swagger API documentation is currently in flux and split across the Resonate Search API (see the top right corner for the different services) and Resonate Service Documentation: User.
Other Commands
Add a package
Installing one of the monorepo packages into one of the other ones is as easy as this:
shnpm install @resonate/button --workspace "beta"
This installs @resonate/button into the beta package.
Add a dev dependency
Here's how you would add gulp so that it can be used in any package in this repo:
shnpm install -D gulp
Build
shnpm run build
To compile a specific package
shnpm run build --workspace "@resonate/rangeslider"
Testing
Run all tests (lint, dependency-check)
shnpm test
Test a specific component
shnpm run test --workspace "@resonate/player-component"
A package can have browser tests (tape-run)
shnpm run test:browser --workspace "@resonate/api-factory-generator"
Commands
| Command | Description |
|---|---|
$ npm run dev | Start beta app development server |
$ npm test | Lint, validate deps & run dependency-check for all packages |
$ npm run build | Compile all beta app files into beta/dist/ |
Code style
We use eslint together with the standard config as a linter and javascript style guide.
Make sure to add appropriate plugin for your editor, unless it is already supported out-of-box.
It can also be handy to install the pre-commit hook (see .pre-commit-config.yaml) to automatically apply the standard style.
Maintainers
- Augustin Godiscal auggod@resonate.is
- Marie marie@resonate.is
See Also
- choo - sturdy 4kb frontend framework
- nanohtml - HTML template strings for the Browser with support for Server Side Rendering in Node.
strings - nanocomponent - create performant HTML components
- tachyons - functional CSS for
humans
Contributors
Showing top 12 contributors by commit count.
