At a socially distant gathering, the music is typically controlled solely by the person with the fanciest speaker. The atmosphere of that gathering quite literally lives and dies by that person's ability to read the room. A 5-minute break from managing the queue could render the vibes compromised- that's a precarious state to socialize in. What if, instead, this duty could be crowd-sourced, just like the jukeboxes of the 20th century? That's where Jukebot comes in, bringing the power of the aux back to the people.
What it does
Jukebot is a crowd-sourcing tool for the Spotify queue. The days of hassling a party host for aux privileges are no longer- Jukebot lets you blast your favorite song through a decentralized song request process. Once a host creates a Jukebot session, anyone with the session ID (join code) will be able to add songs to the session queue. You can find our project on GitHub below. This project was developed by three Vanderbilt University students (Berke Lunstad, Sam Stubbs, Lincoln Murr) for VandyHacks VII.
How we built it
Jukebot's frontend runs using React. It was started from Facebook's basic react example and then built upon. Its backend is created using golang. They connect to each other using a websocket that allows continuous communication. The backend also then communicates with Spotify's API to allow logging into an account using OAuth 2.0, searching for songs, and also adding songs to the queue.
Challenges I ran into
The largest issue we ran into was managing a variety of separate lobbies with hosts, clients, and an associated, logged-in Spotify account. This was especially difficult because it also required OAuth stuff to get it running. Additionally it needed to communicate with all connected clients well and fairly consistently to keep them updated. While it was definitely a challenge to get it running, once it was running it all worked fairly seamlessly.
Accomplishments that I'm proud of
Utilizing the Spotify API in a way that hasn't been done before to tackle a real-world issue. Providing a simple user experience with realtime song updates and also OAuth 2.0 authentication.
What we learned
We learned a lot about sending JSON over websockets. We also learned a lot about async golang functions and also repeating functions. Additionally, I have a generally stronger understanding of structs in golang and how to use them. Finally, we learned about some basic animations in CSS and pixelart design.
What's next for Jukebot
We have big ambitions to amp up Jukebot! First order of business is bringing our service to the World Wide Web at jukebot.online (registered with Domain.com), as it is currently available to run locally only. Another goal of ours is to implement a cryptocurrency, JukeToken, on the platform. Every new Jukebot account will be pre-loaded with 100 JukeTokens. JukeToken can be used to add songs to the session queue and boost songs to a higher priority in the queue. The host will collect all tokens paid by session participants while surrendering a small hourly hosting fee. JukeToken can also be earned via new user referrals and by watching advertisements. JukeToken is now live on the Stellar Blockchain, check it out here!