A nice GUI for playing/viewing local media files.
git clone https://github.com/leerob/next-music-player
cd next-music-player
pnpm installUse the included setup script to create your .env file:
pnpm db:setupAdd local audio files to a top level tracks/ folder (git ignored). One option to download files is yt-dlp. You can provide arguments to download the song metadata, as well as the cover image, too.
yt-dlp -x --audio-format mp3 --add-metadata --embed-thumbnail "https://www.youtube.com/playlist?list=..."Then, run the database migrations and seed the database with a songs and playlists:
pnpm db:migrate
pnpm db:seedFinally, run the Next.js development server:
pnpm devYou can view your database contents with Drizzle Studio locally:
pnpm db:studioOpen http://localhost:3000 in your browser to see the app in action.
- ✅ Uses MediaSession API to sync track metadata with system controls
- ✅ Press space to play/pause from anywhere in the app
- ✅ View for all tracks
- ✅ Click on song row to play
- ✅ Move between songs in tracklist with up/down or j/k
- ✅ Move between playlists panel and tracklist with h/l
- ✅ Now playing animation in track row
- ✅ Support for both local or remote files
- ✅ Mobile responsiveness
- ✅ Drag on the progress bar to seek song
- ✅ Create a new playlist in the UI
- ✅ Image upload to Vercel Blob for playlist images
- ✅ Add/remove songs to a playist in the UI
- ✅ Basic search over songs
- Persist active song to storage
- Hook up the volume controls
