Team Members and Andrew IDs
Rajeev Godse - rgodse, Mihir Dhamankar - mdhamank
Inspiration
We were thinking about some of the issues that bother us, and we found that disputes over the aux cable (who gets to play music in a group setting) were a frequent source of tension. We realized that disputes over what music gets played can be reduced to a problem of voting or dividing resources. Then, equipped with knowledge of algorithms that computationally ensure fairness in such scenarios, we set out to hack our way to equitable aux cables.
What it does
The app allows users to form rooms and submit playlists from Spotify that reflect their preferences for what music they would like to play. It then either requires the users to vote on the artists who they find acceptable, or infers this information from the songs they selected, depending on the game mode. Finally, it creates a playlist after applying one of several algorithms from fair division: Approval Based Allotment, Utilitarian Resource Division, Egalitarian Resource Division, and Random Serial Dictatorship (which is fairer than it sounds :D).
How we built it
The project was built using the MERN stack (MongoDB, Express, React [Native], and Node.js).
Challenges we ran into
The most challenging part of the whole project was communicating with the Spotify API. They have a very finicky system for generating access tokens, and then finding the data that we actually want form the mess of data that they send back was difficult. In the end, all the data we were able to receive was really convenient, but parsing it was still difficult.
Accomplishments that we're proud of
We implemented some of the hottest new fair division algorithm (from papers written in the last 10 years) in JavaScript. We built a functional app in under 24 hours. We failed fast and learned a lot.
What we learned
We learned a lot about mobile development, databases, and how the internet works. We also learned that most code on the internet has bugs, and ran into a fair number of them.
What's next for FairJams
Cleaning it up, adding more algorithms to see what works best. I think as a group we definitely plan to use it for our personal music disputes.
Built With
- express-session
- express.js
- mongodb
- node.js
- react-native
Log in or sign up for Devpost to join the conversation.