
Music Recommendation Application
Sami Paananen / Oct 9, 2024
This project is a music recommendation application that uses machine learning to generate song recommendations based on a user's playlist from the Spotify API. The app was developed as part of a school project, focusing on both the coding and the complete software development lifecycle (SDLC) while employing Scrum methodology.
Features
- User Signup: Allow users to create accounts and sign in.
- Spotify Playlist Integration: Fetch user playlists from the Spotify API.
- Song Recommendations: Generate song recommendations based on cosine similarity of playlist vectors.
- Music Player: Features play, pause, next, previous, and seek functionalities.
- Localization: Supports multiple languages, including English, Farsi, Finnish, French, Japanese, and Russian.
- Song Reviews: Users can review songs with 0-5 stars, stored in the database.
Technologies
- Python: Python was a natural choice for the machine learning-based application due to its extensive machine learning libraries.
- Scikit-learn: Python's machine learning library used to create playlist vectors.
- Django: Backend that handles API requests and serves the application.
- React: Frontend framework for building the user interface.
- Spotify API: Integrated to fetch user playlists and track information.
- MongoDB: NoSQL database for storing user data, track ratings, and recommendations.
- Jenkins: Automating tests and deployment.
- AWS: The application was publicly available during the project using AWS cloud services (EC2, S3).
- Docker: The application was containerized with Docker for easier deployment.
Conclusion
This music recommendation application demonstrated how machine learning can enhance the user experience by providing personalized content. By integrating the Spotify API and utilizing the scikit-learn library, this project offered an inspiring learning process. By going through all stages of the SDLC and employing the Scrum methodology, this project was a true exercise in real software development.