Our inspiration for CrowdPleaser was a point of pain in our personal lives. When listening to music with large groups of people for extended periods of time, it is very difficult to continue playing music that everyone wants to hear. It is nearly impossible to please the entire crowd with your music selection and attempting to do so can result in wasted time and quarrels.
What it does
CrowdPleaser is a web application that allows the individual controlling the music to start a "room" and select a master playlist from their Spotify account. Guests can then open CrowdPleaser in their own browser and join the room using a unique room code. Once in the room, guests can recommend songs (to add to the master playlist), and vote on a subset of the master playlist to choose the order of the music being played. Songs that receive no votes in a round of voting are removed from the playlist.
How we built it
The server side of the project was implemented using: Node.js, socket.io, and express. The user interface was implemented using: React, and Bootstrap.
Challenges we ran into
One of our biggest challenges was trying to set up multiple private rooms each on their own individual socket , and having those sockets communicate solely with their respective administrator and guests.
Another challenge we encountered was that the Spotify API did not behave as we expected. We thought we would be able to modify a users "up next" queue, so that we could directly manipulate: the order of the songs being played, songs being removed from the queue, and songs being added to the queue. Unfortunately Spotify does not allow you to access a users "up next" queue and so we had to rework our application to re-order, add, and remove from playlists.
Accomplishments that we're proud of
What we learned
We learned a ton about react components and using react in general. We also learned basics about how to set up and transfer information between multiple clients and the server using sockets
What's next for CrowdPleaser
We plan to work on CrowdPleaser after the event (when we have a bit less schoolwork to catch up on!) and finish the project. We hope to one day host CrowdPleaser online so that we can use it in social settings, and share our creation with our friends!