Inspiration
Democratic J was born from the idea that everyone at a venue should have a voice in shaping the musical atmosphere. At the moment, the barriers between DJs and audiences are too thick. You see, we believe that music has the extraordinary power to unite people. And what better way to improve the experience, than to curate a playlist based on the taste of the crowd, rather than that of one overpaid (it's a joke, DJ's are awesome) individual?
What it does
Democratic J is an app that can elevate any social gathering. The idea is simple:- Any member of the crowd can choose to submit a song request for consideration to be played during the event. Once the request is processed, the song shows up on the app for other attendees. Their mission, should they choose to accept it, is to vote 'Yes' or 'No'. If the majority vote 'Yes', then the song is queued up and can play at some point during the event. If the majority vote 'No', well then you've just got bad music taste (don't worry, no one's going to know you requested it). By allowing the crowd to submit their song requests and vote on upcoming tracks, the app democratizes the DJ booth, transforming it into a communal space where music lovers actively contribute to the playlist. This helps create a shared experience that transcends individual tastes, fostering a stronger sense of connection among event attendees.
How we built it
Because we wanted to build DeomcraticJ as an app, we knew we were going to use Swift and SwiftUI to lay out, design, and implement our ideas for iOS. This app would need to communicate to the computer controlling the polling process, acting as a central server bridging the components of the project together. In order to integrate Spotify directly into the project, we created a Spotify Developer account and API token, allowing the server to communicate with the Spotify player, and by extension, the app. This central piece of the project was written in Python, using the available HTTP libraries to handle requests and API calls, as well as JSON parsing.
Challenges we ran into
Creating the project, we quickly faced several complexities in piecing together and managing a multi-part project, each of which was previously unfamiliar to us. Firstly, we had to gain a basic understanding of Swift and iOS development, as neither of us had written an iPhone app before. This proved challenging, as XCode provides complex tools and Swift provides a unique syntax that can be confusing to get accustomed to. We also had difficulty learning how to utilize web APIs, as incredibly minor and difficult-to-spot mistakes can lead to requests failing, with little information to troubleshoot. Tying together both the Swift app and Python server was also continuously difficult, as we continued adding features to one, requiring more work to be done on the other. All of this led to tighter time restrictions than we initially anticipated as well, making it impossible to implement all of the features we envisioned.
Accomplishments that we're proud of
The two of us have never worked with building any apps. We went into this weekend without an idea, without any experience with Swift and APIs, and a whole lot of doubt. But by the end, the ecstasy of building an app and seeing it install and actually operate on our own iPhones was indescribable. The challenges we mentioned above had really taken a toll on us, but that's what made this experience even more rewarding. While we may not have created a product ready for the market, we sure came close. And with all the knowledge we acquired over the course of this weekend, we know that we can make our dream a reality with just a little more time.
What we learned
By the end of the project, we learned a lot while developing this app, both in technical details, and practical experience. We learned the very basics of iOS app development and the Swift language. Designing, building, and seeing the results while building the app itself, highlighted more opportunities we are excited to pursue in the future. We also learned how to read documentation and interface with web APIs. This included managing tokens, HTTP requests, and basic web server handling. While designing the overall concept of this project, we learned that it’s important to manage expectations, while still pushing ourselves to try adding new features, even if they may not work.
What's next for Democratic J
There is so much more we would love to do with Democratic J. Firstly, we are going to polish up our current progress and make sure the app can work without any developer interference. Then, another detail we would like to investigate is the possibility of having the crowd skip a song in real time. Moreover, Democratic J has opened a whole new scope of opportunities for any social event:-
- We can introduce Aux Battles to enhance the entertainment aspect of any environment. The app can create a tournament bracket that has individual face-offs, song vs. song (for a given category), where the winner is picked by the rest of the crowd (anonymity remains). The winner then passes on to the next round, and the last person standing is declared champion of 'Music Taste' (and of course, we can't let you leave without a prize).
- We can also create Song Trivia tournaments, similar to Kahoots. In this case, snippets of songs are played based on the playlist created by the crowd, and if you guess the correct song on the app you win a certain amount of points. By the end of the tournament, the person with the most points is declared champion of 'Music Expertise'.
The final opportunity we would love to explore is integrating Democratic J into a small setting. For instance, a dinner party at your house. In this case, you, as the host, may be able to set up a private lobby linked to your Spotify account. A unique link, or code, can then be shared with your guests, and the app will continue to work as we intended it to for larger events. So no more having to worry about missing out on the party while trying to be a DJ, or dealing with the hassle of managing other people's song recommendations. Just sit back and relax, Democratic J has you covered!
Log in or sign up for Devpost to join the conversation.