Many of us have large, disorganized playlists of music that we like, but sometimes you just want to listen to the subset that makes you want to sit in a room alone and cry, and you don't want to have to keep skipping through all your other songs. It turns out that the Spotify API provides a wide variety of features about their songs, which can be used to categorize how a song makes you feel.
What it does
Bopify allows users to log into their Spotify account through the Bopify mobile app, and pick a mood for the kind of music they would like to listen to. The user is then prompted to pick global songs (picking songs with a similar mood to what they chose from global Spotify songs) or their saved songs in the library. The app uses an upvote and downvote system, which influences the selection of the later songs in the queue and changes the mood of the playlist.
How I built it
Bopify was built using a React Native front-end and a Flask REST API for the back-end. Both the front and the back implement the Spotify API. The app is built off of eight core moods that are all distinct and compared to by three values every song has (valence, energy, and danceability) which all fall between 0 and 1. Users can start off near a mood and as they listen to songs and enjoy(or skip) them their exact mood will change in the vector space containing all moods .
Challenges I ran into
One of our biggest challenges was making all of our unique technologies work together. We spent a lot of time setting up Android Studio and configuring it with Spotify. We also had to recreate a lot of Spotify's functionality in React Native.
Accomplishments that I'm proud of
We are proud that we built the entire application and that it works as intended. Users can pick an initial mood and decide to listen to either their library (saved music) or global music. As they listen to music, and like and dislike it, their music queue updates to favor what content they want. We were able to replicate Spotify's UI for mobile and add some interesting functionality, especially with the different moods and the latent space along with vector calculations.
What I learned
We learned how to use new technologies like React Native and Flask. We also got to use Android Studio more and built a mobile application on it.
What's next for Bopify
We want to work on adding the ability normal Spotify has, allowing users to pick their songs of choice and have that factor into their decisions.