SoundCrowd - Social jukebox
SoundCrowd - a social jukebox application that extends Spotify's platform enabling multiple users to vote on the track order of a playlist.
Upon signing in, users are presented with a list of their Spotify playlists. Users then select one of their playlists, or use our playlist generator to enable realtime voting on the track order of that playlist. Once the playlist owner is ready to start the first song, a one-click "play" button from the screen initializes the playlist on Spotify and begins reordering the playlist's tracks based on vote count.
Any user with the playlist's custom URL can access the voting system, however, users are limited to one vote per track (voter is able to change their mind once ie if they vote up, but meant down they can edit their vote and vice versa). All users see the tracks reorder to reflect vote count in realtime on their screens and the actual Spotify playlist reorders once every 10 seconds.
Once the current track has finished, the highest voted song is queued up and the prior song is placed back into the voting system with a vote count of 0.
All users can add songs to the playlist using our in-app Spotify search feature. Autocompleted search functionality and filter capability allow users to add songs to the playlist while remain in our application - no back and forth navigation from SoundCrowd to Spotify. A convenient side bar shows users the most recently added and played songs so they are privvy to changes.
SoundCrowd was engineered to help enhance Spotify's already amazing application of which we are all fans and users. Their continued support and extension of their API affords our application a great deal of room to grow. Some of the features we are excited to work on include:
- Song addition filters set by playlist owner
- Reverting playlist to original
- Locking of next song in queue
- Trending songs showing voting patterns
- Simpler song change mechanism (Spotify "end of song" hook API addition would make it much simpler)
- Node 6.4
- Redis 2.6
- MySQL 2.13
- Databases: MySQL, Redis (session)
- Server: Node w/ Express JS Framework
- Framework: ReactJS w/ Redux
Design:
Testing:
From within the root directory:
npm install
npm start (give it a second to run all tasks)
View the project roadmap here
See CONTRIBUTING.md for contribution guidelines.
- Michael Thelin - Michael's Spotify Web API Wrapper was incredibly useful for a majority of the simpler API calls our application needed to make.
- Joshua Comeau - Josh's React Flip Move module brought our track reordering to life. Our front-end engineer was ecstatic he didn't have to write CSS animations for the application.
- React Training - The documentation for React-Router v4 at ReactTraining.com was an invaluable resource.