JukeLab brings an old-school jukebox to your next party. Curate a jukebox playlist full of 100 albums, set up a dedicated device, then let your friends control the music all night.
Visit nzoschke.github.io/jukelab/ to try the development version in your web browser. Visit jukelab.com or the Apple App Store get the real version for web or iOS (Android coming soon).
JukeLab is a web app built on HTML Audio and Spotify for Developers with SvelteKit.
We recall the times when artists composed albums, fans wore out records, friends crafted mix CDs, and nerds skinned music apps.
JukeLab brings back a similar music experience that you can curate and customize.
JukeLab is built on TypeScript and Svelte 5.
On Mac we recommend Homebrew to install development tools:
brew install git node
git clone https://github.com/nzoschke/jukelab.git
cd jukelab
npm install
npx playwright install
# fill in PUBLIC_SPOTIFY_CLIENT_ID and SPOTIFY_CLIENT_SECRET and run tests
cp .env.example .env
npm test
npm install
npm run dev -- --open
To test on a mobile device (iPhone/Android), run with --host to expose on your local network:
npm run dev -- --host
For iOS Safari, HTTPS is required for Spotify authentication (the Web Crypto API needs a secure context). Use the HTTPS flag:
HTTPS=true npm run dev -- --host
Then visit https://<your-ip>:8090 on your phone (accept the self-signed certificate warning).
To make a Spotify app that works indefinitely, go to Getting started with Web API
doc, follow the "Create an app" section, get your client credentials, then set it in .env:
PUBLIC_SPOTIFY_CLIENT_ID=<CLIENT_ID>
SPOTIFY_CLIENT_SECRET=<CLIENT_SECRET>
Note that only the client ID is public, the secret is only for local testing.
To create a production version of your app:
npm run build
You can preview the production build with npm run preview.