Whenever we play music with friends, one person usually controls the whole playlist. Our app aims to crowdsource the music playing experience by giving everyone an equal say.

What it does

Disco allows users to add songs to the queue and up vote existing songs to rearrange the playlist towards the general opinion in real time. We offer both a web and an iOS client for convenience's sake, and album art adds to the colorful interface.

How we built it

Disco uses Spotify's iOS API to stream songs and retrieve song data, and we supported the iOS app with a node.js and backend to manage each playlist. The web client was created with, jQuery, the Spotify REST API, and most prominently, block.js, a custom web frontend development framework with its own language that we created to modularize UI design and ease event management.

Challenges we ran into

The Spotify iOS API is currently in beta, making it much harder to implement; the mediocre documentation forced us to create an API wrapper in Swift to facilitate client-server-API interactions. Swift animations such as swapping song order were difficult to recreate in CSS/JavaScript, although the use of block.js eased this process.

Accomplishments that we're proud of

As we originally built the app with RESTful architecture, the transition to a realtime application with websockets was a huge improvement. Additionally, the successful use of our own framework has inspired us to use it for future web applications. We are also proud of ourselves for staying up for 24 hours.

What we learned

We learned how to work with a rudimentary API, connect software on different platforms, and tag team (we each have very different skills/areas of expertise, so we learned how to delegate tasks).

What's next for Disco

We plan to expand the Disco client and server to various platforms to reach a much larger audience of users. We also plan to market Disco to high school students to test out its impact in a social environment. Future versions of Disco will allow the host to sync Disco queues to existing Spotify playlists, as well as play songs from other sources, such as YouTube and SoundCloud.

Share this project: