v0.1.0 · MIT-licensed · Node ≥ 18

Your now playing
belongs on
your website.

SpotLive is a drop-in component that streams what you're listening to on Spotify onto your personal site — as a real spinning record, or a clean player card. One CLI command, two env vars, done.

Install in 60 secondsSee the demo
Bundle size
~40kb
Dependencies
0
Frameworks
Next · React

Nothing playing

side A · 33 ⅓
$0.00
side · A · spotlive

Two styles. Same wire.

01 / styles
variant="vinyl"

Nothing playing

The Vinyl

A spinning record fixed to the edge of your page — peeks out by a third, slides further on hover. The cover sits at the label, pauses when you pause.

variant="player"
Nothing playing
0:00 / 0:00

The Web Player

A compact pill with cover, title, artist, time and a faux control set. Sized to slot into a nav bar or sidebar.

Three steps. One coffee.

02 / install
1

Run the CLI

npx spotlive init detects your Next.js App Router project, writes the component + API route, and runs the OAuth flow for you.

2

Paste your credentials

Grab Client ID and Secret from the Spotify developer console. The CLI opens the auth flow for you.

3

Mount it

Import the component, pick a variant, and ship.

terminal — zsh
# inside your project
$ npx spotlive init

◇ Found a Next.js project (app router).
◇ Pick a variant:
   vinyl
   player

◇ Paste your SPOTIFY_CLIENT_ID:
> "••••••••••••••••"

◇ Paste your SPOTIFY_CLIENT_SECRET:
> "••••••••••••••••"

✓ Wrote .env.local
✓ Added <SpotLive /> to app/page.tsx
✓ Done. Press play.

What you get.

03 / features
01

Token refresh, handled.

The bundled route handler refreshes your access token on its own schedule. You set it once and forget about it.

02

Animated progress bar.

SpotLive polls every 10s and animates the progress bar client-side between fetches. Smooth and kind to your rate limit.

03

Two built-in variants.

Switch between variant="vinyl" and variant="player" with one prop. Both are pure Tailwind — no external UI library.

04

Offline-aware.

When nothing's playing, the widget shows the last track with a soft "off-air" stamp instead of an empty box.

05

Zero dependencies.

Pure component code. The CLI is the only thing that ships extras, and it's devDependency only.

06

SSR-safe.

The server component fetches the current track; the client component handles the animation. Hydration is clean.

Works with what you have.

04 / frameworks
Next.js 13 +
React 18 +
Astro · planned
SvelteKit · planned
Nuxt · planned

Press play.

One command, one component, one record spinning quietly on your homepage while you sleep.

npx spotlive initOpen the demo