Skip to content
Dan Stein / DJ Fresh edited this page Sep 2, 2018 · 14 revisions

RobotsCantDance.com

Screnshot

This repo is defunct, please use the API and Client repos below.

Platform: www.RobotsCantDance.com Telegram: https://t.me/joinchat/G2gtZwzbKKvsFW_7zCavIA API: https://github.com/happy-machine/RCD_Api Client: https://github.com/happy-machine/RCD_Client

What are we:

We are an open source community with a goal to empower musicians and music lovers with new and exciting ways to listen to and share music and ideas.

Initial Spike (Aug 2018)

We aim to create a spike to showcase syncing audio and video streaming, allowing groups to take turns being the DJ and share content with each other in realtime. Think of it like a silent disco where anyone can be the dj. This should be particularly fun on mobile!

We aim to create a spike which enables users to log in simply by authenticating with Spotify, and to create links which can be shared with friends enabling them to join a group of friends listening on Spotify. The React front-end will allow listeners to optionally communicate with each other and logout / remove annoying participators.

The tool will use shared state on a Laravel server and the Spotify player v2 API to loosely synchronise playback. When a user changes track, the server which is polling the Spotify API every 300ms per user will diff the users from the master and change the master to the new track, passing down the state to the other listeners who will be resynced by track uri and play position via the new API.

A landing page will be the destination of new users having received a link and authenticated with Spotify. This page will show a list of other users allowing the user to disconnect or vote to disconnect annoying users, or logout. The server will communicate with the landing page via websockets to inform users via HTML5 browser notifications of a change in track, which they can revert by clicking an attached button. This landing page could optionally be a browser extension and could be used for websockets chat and other services / features after the initial Spike.

Clone this wiki locally