One of my favorite apps is Spotify. It is by far the app that I use the most common, and often, I find myself and my friends often sharing music with each other. I thought, wouldn't it be great if I could discover music from people around me, while also connecting with complete strangers over music?
What it does
Spotifind is a RESTful web API that allows for it's users to contribute to collaborative, geotagged playlists. I included a simple front end to display it's capabilities. Users are only allowed to contribute to the closest playlist too them, but are able to browse all playlists in the nearby vicinity.
How I built it
I began Spotifind at CalHacks. Every now and then, I'd come back and work on it a little bit, because it seems like something I genuinely would use. I wrote it in C#, utilizing the Spotify API as well as a point-of-interest SQL database.
Challenges I ran into
There were two incredibly difficult aspects of Spotifind. The first was handling authentication. Because I wanted to write collaborative playlists, accessible by all users, I had to create a user account for the application. This required really digging into the authentication flow. Eventually, I realized I could use the refresh token to essentially allow for the application to remain logged in indefinitely. This allowed for programatically adding playlists, songs, and all other necessary actions. The second was deploying the application to Microsoft Azure. Unfortunately, I was not able to overcome this before the deadline. Initially, it was incredibly difficult to upload my databases and codebase to Azure. After hours of work, I was able to deploy it - but the problems didn't end. My SQL calls were not efficient enough and ran too many queries on top of the network latencies. That led to many of the functionalities breaking in the deployed version.
Accomplishments that I'm proud of
I'm proud of writing a functioning backend and front end (on my machine). It was my first full stack project, and even though I wasn't able to complete it to the degree I wanted to, I learned so much.
What I learned
I learned how to write a .NET Web API, and that data structures really do matter (not just for class)! Had I written my data structures a little better, those SQL calls may have been more efficient, and deploying would not have been as difficult as they were.
What's next for Spotifind
I plan on rewriting the models and data structures to allow for deploying onto Azure or AWS. This is something that I could see myself using extensively, and I want to discover more music!