We've been thinking how in parties many people don't like the song that's played by the dJ. What's a better way than giving them access to decide collaboratively what song should be played next.
What it does
When you create a pool, a playlist is created on Spotify that you just and go start playing. The playlist gets updated when songs end and votes are casted! Everything is handled by the server!
The web app allows people to vote on songs, add songs, and see whats playing/will play next. Just plug your device in, start the pool, fire up the playlist and let the sound flow!
How we built it
Using a trick in the WebAPI, we were able to modify a playlist using a heap on the backend. This allowed us to dynamically change the playlist based in the songs listed on the web app and based on the votes users casted.
We used GoLang for our backend and wow, does it make server side programming feel great!
Challenges we ran into
Testing in production is hard. There were a lot of logical issues with the design but with some changes we were able to keep it consistent and model around the original use case. Timing and clocks are hard and they were essential to keeping the playlist correct.
Accomplishments that we are proud of
It works! We were able to build the web app and the backend to support multiple pools and the casting of votes. The playlist changes and songs run all...night...long.
What's next for PartyDJ
Fix a bunch of edge cases that were laid off because hey, this is a hackathon.