Inspiration
All of us on the team love to listen to music. As freshmen, we wanted to make new connections at university. We were also a little disappointed with Spotify Wrapped last year because we're CS + DS majors and we love analyzing every nook & cranny of data and analytics. So, we were curious if whether we could build our Wrapped, and eventually branched off into a different yet similar idea.
What it does
The Wavelength app helps college students connect through their varying music tastes. It fetches the user's top tracks, artists, and genres from Spotify and shows them other people with similar music tastes, as well as how well their Spotify libraries match. It also generates personalized playlists and tracks weekly regional and global music trends for you.
How we built it
The app itself was made using Flutter. We used Supabase for the main backend, which handled most of the database and OAuth authentication. Speaking of OAuth, we used Login with Spotify and Spotify's Web API to get most of our data about the user's music. For the matching algorithm itself, we created a micro-service using Python & Flask which performed data analysis (using Pandas, Jaccard, Scikit-learn, etc.) on users' music data from Spotify.
Challenges we ran into
The most difficult part of this project was integrating our app with Spotify's OAuth and Web APIs.
Accomplishments that we're proud of
We're really proud of how we, as a team, learned a new language and mobile framework that we were previously not familiar with. We also really like how our music matching algorithm turned out.
What we learned
May be a little cliche, but we learned the importance of team work, time management, and the power of friendship. We also learned some Flutter along the way.
What's next for Wavelength
Who wanna improve on the code quality and the UI/UX of our app, and create a more immersive experience for the user with their music insights. We also have some other ideas like live messaging and location-based matching.
Log in or sign up for Devpost to join the conversation.