Move your music anywhere. No limits.
MelodyFetch is a web application that allows users to convert Spotify playlists into downloadable ZIP files containing MP3s, matched and downloaded from YouTube.
- Spotify Integration: Extracts track metadata from public playlists.
- Smart Matching: Finds the best audio match on YouTube.
- High-Quality Audio: Downloads and converts to MP3 using
yt-dlp. - Real-time Progress: WebSocket-powered progress bar for downloads and zipping.
- Modern UI: Built with Next.js and Tailwind CSS for a premium experience.
- Node.js (v18 or higher)
- Spotify Developer Account (for Client ID & Secret)
- yt-dlp (Binary is included in
backend/binfor Windows, but ensure you have necessary runtimes)
The backend handles API requests, YouTube searching, and file processing.
-
Navigate to the backend directory:
cd backend -
Install dependencies:
npm install
-
Create a
.envfile in thebackenddirectory with your credentials:PORT=3001 SPOTIFY_CLIENT_ID=your_spotify_client_id SPOTIFY_CLIENT_SECRET=your_spotify_client_secret FRONTEND_URL=http://localhost:3000
To get Spotify credentials, go to Spotify Developer Dashboard.
-
Start the backend server:
npm run dev
The server will run on
http://localhost:3001.
The frontend provides the user interface.
-
Open a new terminal and navigate to the frontend directory:
cd frontend -
Install dependencies:
npm install
-
Start the development server:
npm run dev
The app will be available at
http://localhost:3000.
- Open
http://localhost:3000in your browser. - Paste a Public Spotify Playlist URL (e.g.,
https://open.spotify.com/playlist/...). - Click Fetch Tracks to preview the song list.
- Click Start Conversion to begin the download process.
- Wait for the progress bar to reach 100%.
- Click Download ZIP to save your music.
- Download Errors: Ensure
backend/bin/yt-dlp.exeexists. If you are on Linux/Mac, you may need to installyt-dlpglobally or download the appropriate binary tobackend/bin. - Spotify Auth Errors: Double-check your
SPOTIFY_CLIENT_IDandSPOTIFY_CLIENT_SECRETinbackend/.env. - Connection Refused: Ensure the backend is running on port 3001 and the frontend can reach it.
- Frontend: Next.js, Tailwind CSS, Framer Motion, Socket.io-client
- Backend: Node.js, Express, Socket.io, Archiver
- Core Tools: yt-dlp, Spotify Web API