It can be hard to figure out what music to play when you're with friends because everyone has their own individual music tastes. auxCord strives to solve that problem by analyzing user's listening data from Spotify and syncing this data to provide intelligent music recommendations that will satisfy both music listener's tastes by generating tailored playlists.
What it does
Using a number data from the Spotify Web API, auxCord extracts and analyzes a large amount of listener data including top played tracks, top played artists, and user playlists tracks in order to build unique playlists that will satisfy both listeners. First, a user creates an 'aux' and is given a unique four digit code. Then a second user joins this 'aux' by entering their friend's four digit code. This then starts the algorithm that cross-references the music preferences between the users and then selects tracks that both listeners are predicted to enjoy. On completion a new playlist is saved.
How we built it
The web app is built on node.js, which handles the backend web server and data analysis portion of the app. HTML and CSS are served via the Express server on node.js to provide the UI in the browser. Socket.io was also implemented to allow dynamic communication between the server and the clients in order to send updates about the status of user connection and playlist generation.
Challenges we ran into
Accomplishments that we're proud of
Our biggest accomplishment was successfully generating new Spotify playlists that include an interesting intersection of music between two users. Our collection of diverse user listening data allows to consistently create playlists of 50 tracks that are shared between the two the users. Our inclusion of socket.io also allowed us to have a slick interface for the users to interact so that the first user can be notified and shown the new playlist after waiting for the the second user to connect to their 'aux'. In addition, in the limited time, we were able to host our finished web app on AWS with an EC2 instance along with our custom domain auxcord.io.
What we learned
We learned a lot about building nicer code in node.js to handle our user listening data objects as well as implementing promises to manage our asynchronous API calls cleanly without a bunch of callbacks. In addition we also learned about how to use socket.io within node.js. We also expanded our knowledge of HTML and CSS in the design of the UI of our web app.
What's next for auxCord
We are just getting started with auxCord and have a lot of ideas for new features we would like the implement in the future. Our current, live web app allows two users to sync their Spotify accounts and create new playlists but we would like to expand this to even more concurrent users and also implement updates to our algorithm that allows for less commonly shared tracks to be included in the playlists but with less frequency, with the hopes of some users discovering new music that they enjoy based on what their friends enjoy. Also with some additional piping we want to add a user control for the playlist length so users can generate playlists from 10 tracks to 100 tracks. Currently auxCord builds playlists of 50 tracks which is about 2-3 hours of music. We are also interested in using the Spotify API's audio feature endpoint to gain more information about the music that users enjoy and then combine this with the Spotify recommendation endpoint to inject a few tracks into the playlists that are new to all the users but are similar to the music that the users like.