Music Genie is a backend system that integrates with music providers (currently Spotify) to allow users filter liked songs into curated playlists.
It is containerized with Docker, deployed on Railway Cloud, and comes with a CI/CD pipeline for automated builds and deployment.
Demo flow: login → fetch playlists-> filter liked songs → create playlist → view result in Spotify.
- App link: Music Genie Backend on Railway
- Swagger UI: API Documentation
Since Spotify API requires whitelisted accounts, use the following temporary demo account for testing:
- Email: lafon18664@aiwanlab.com
- Password: MusicGenie#
- Spotify Integration – fetch user’s liked songs and organize them into custom playlists.
- Spring Boot Backend – robust, modular, production-like architecture.
- Persistence – MySQL for user data.
- Caching & Session Management – Redis improves performance and handles authentication sessions.
- OAuth2 Login – secure authentication via Spotify.
- Role-Based Access Control (RBAC) – supports
USERandADMIN. - Design Patterns
- Factory Pattern and Strategy Pattern to easily integrate new music providers (Apple Music, YouTube Music).
- Performance Optimizations – caching reduces API response time from 4.6s → 1s (~78% faster).
- Swagger API Documentation – full API reference with sample requests.
- Testing – 85%+ coverage with JUnit and Mockito (services + controllers).
- Deployment & CI/CD – Dockerized app with automated build, test, and deploy pipeline on Railway Cloud.
- Backend: Java, Spring Boot
- Database: MySQL
- Caching & Session Management: Redis
- Auth: OAuth2 (Spotify)
- Testing: JUnit, Mockito
- Documentation: Swagger UI
- Deployment: Docker, Railway Cloud
- CI/CD: GitHub Actions
POST /api/filter – Create a new filter request
Request Body:
{
"playlistIds": ["4KyUDj9bCeNB03vNMqnZq4"],
"artists": ["Nirvana"],
"popularity": 90,
"releaseYear": "2011",
"provider": "spotify"
}