Inspiration
The idea was to make an website where users could find matches based on music tastes.
What it does
Finds other users based on similarity in music tastes. Music tastes are gaged from the user's top 50 tracks from spotify
How we built it
We started with looking into potential algorithms and methods to match users with each other. One idea was to use a variational encoder to take a user's top listens and encode it into a list of arbitrary parameters which could be compared with other users. Unfortunately we didn't manage to produce a working implemention of this so instead we opted for using TF-IDF vectorisation to calculate scores for all of the other users.
We built the frontend of the site with Next.js, using tailwind for css. We incorporated Auth0 for allowing users to log into the system. Since the calculation logic was written in python, we opted for using Flask for a backend REST API, which we wrote to find recomendations and serve them to the webapp. We used the spotify api with the spotipy library to get user data. We use redis as a cache to store this data to avoid ratelimits from spotify.
Challenges we ran into
The main challenge we ran into was figuring out the best way to match users Another challenge was getting to grips with using Next.js Trying to overcome annoying connection issues, including connecting to the redis database Trying to get api keys from Auth0 for spotify
Accomplishments that we're proud of
We incorporated redis to cache results Produce cleanly desgined webpage with interactive components
What we learned
Next.js, Flask, and the libraries / frameworks we used for full stack development
Collaborative filtering is diffult, using a variational encoder is not necessarily the best way.
26 hrs is a short amount of time
What's next for Music Matcher
Train a model a larger dataset Refine / redesign the algorithm for matching users to be accurate Come up with a business plan Tuning recomendations based on user input Messaging system with matches
Built With
- auth0
- flask
- javascript
- json
- next
- python
- redis
- rest
- tailwind
- typescript
Log in or sign up for Devpost to join the conversation.