Inspiration
We were inspired by the question: "How can technology help connect people in a way that genuinely uplifts mental health in isolation?"
Unfortunately, many people feel lonely during this time of social distancing. We personally felt that meeting new people has become especially challenging. We felt this was an important issue to tackle because loneliness is a strong correlarly of many serious mental health concerns and conditions.
As two people who first connected over our shared tastes in music and podcasts, we thought others might be interested in doing the same. We created SoundSync to help people meet one another over their favorite sounds.
What it does
When a user loads the web application, they first give Spotify permission to access their data. We then ask Spotify to calculate the user's top artists based on affinity. Affinity is a measure of the expected preference a user has for a particular track or artist. It is based on user behavior, including play history. Spotify also gets us the user's saved shows.
We store the user's information in a MongoDB database and compare to existing users already stored in the database. Then, we compare the user's top tracks and saved shows to those of other users, and present the user with the person in our database who best matches their tastes!
How I built it
We started out with create-react-app and moved most of the given boilerplate code to a client. We first built out the backend service by defining four API routes. We used Spotify OAuth to give our application authentication to access data, requested information on the user's profile, requested their top artists/saved shows, and stored that information in the database. Then, we ran a comparison algorithm to understand which stored user best matched their tastes.
Challenges I ran into
The biggest challenge for us was the 24 hour time limit. We hoped to make more progress on the client side, but ended up not having enough time to flesh out the UI/UX. We ran into several roadblocks while programming. Integrating with the Spotify Developer API was more challenging than we expected because the authentication process required several sequential API requests. Redirecting to and from the client and the server was also new to us, and some self-teaching was necessary to learn how to integrate between the two.
Accomplishments that I'm proud of
We're proud that we cleared the authentication hurdle, successfully retrieved multiple pieces of information from the API, and worked with a database to store and compare this information.
What I learned
We learned a lot about API and database integration, debugging while building web applications, and passing data within a session from backend to frontend.
What's next for SoundSync
Next, we hope to bring this to a permanent domain rather than a local development environment to make it easily accessible. We would also ideally like to persist changes to the database so more usage of the application will lead to better recommendations.
Note: We are submitting to the health track. Our video has not finished processing at the moment, but we will update this post once it processes.
Log in or sign up for Devpost to join the conversation.