Skip to content

A time machine for 90s kids. Retro Winamp 2.x-style music player powered by Spotify.

Notifications You must be signed in to change notification settings

abhitsian/winamp-spotify

Repository files navigation

WINAMP SPOTIFY

"Nostalgia — it's delicate, but potent."

A time machine for 90s kids.

InspirationFeaturesQuick StartSpotify SetupTroubleshooting

Spotify Premium Next.js Electron


Inspiration

Nostalgia is a powerful emotion. It can transport you back in time, make you feel things you haven't felt in years, and remind you of who you once were.

I was watching Mad Men when I stumbled upon The Carousel scene — and it hit me. That's exactly what I wanted to build. A time machine for 90s kids.

This project is an ode to that era — dial-up modems, burned CDs, and carefully curated MP3 collections. Winamp wasn't just software. It was a ritual. The green LED glow illuminating your face at 2 AM. The spectrum analyzer dancing to your favorite songs. The skins you spent hours customizing instead of doing homework.

For those of us who grew up in that era, music wasn't just something you streamed — it was something you collected, organized, and cherished. Every track had a story. Every playlist was a time capsule.

This project exists because some of us still feel that twinge — that ache to go back. Not to relive the past, but to feel it again, just for a moment.


Features

Winamp Spotify Screenshot

Feature Description
Classic Aesthetic Pixel-perfect Winamp 2.x recreation with LED displays, spectrum analyzer, and metallic buttons
Album Art See album artwork alongside the time display
Full Playback Control Play, pause, next, previous, seek, volume, shuffle, repeat
Library Tabs Browse your Playlists, Liked Songs, Recently Played, or Search
Visual Equalizer Decorative 10-band EQ for that authentic look
Device Selector Control Spotify on any of your connected devices
Mini Mode Compact view showing just the player
Desktop App Runs as a native macOS app via Electron

Quick Start

Prerequisites

  • Node.js 18+
  • Spotify Premium account (required for playback)
  • Spotify Developer App (create one here)

Installation

# Clone the repository
git clone https://github.com/YOUR_USERNAME/winamp-spotify.git
cd winamp-spotify

# Install dependencies
npm install

# Create environment file
echo "NEXT_PUBLIC_SPOTIFY_CLIENT_ID=your_client_id_here" > .env.local

# Run in browser
npm run dev

# Or run as desktop app
npm run electron:dev

Then open http://127.0.0.1:3000 in your browser.


Spotify Setup

Step-by-step guide (click to expand)

1. Create a Spotify App

  1. Go to the Spotify Developer Dashboard
  2. Click "Create App"
  3. Fill in the details:
Field Value
App name Winamp Spotify
App description Retro music player
Redirect URI http://127.0.0.1:3000/callback
APIs used ✓ Web API, ✓ Web Playback SDK
  1. Click "Save"
  2. Go to Settings → copy your Client ID

2. Configure the App

Create a .env.local file in the project root:

NEXT_PUBLIC_SPOTIFY_CLIENT_ID=paste_your_client_id_here

3. Run It

npm run electron:dev

Usage

Browser Mode

npm run dev
# Open http://127.0.0.1:3000

Desktop App (Electron)

npm run electron:dev

Build for Production

# Web build
npm run build && npm run start

# macOS DMG
npm run electron:build

How It Works

The app operates in two modes depending on your setup:

Access URL Mode Description
127.0.0.1 Spotify Connect Controls playback on your other Spotify devices
localhost Web Playback SDK Plays directly in browser (requires localhost in redirect URIs)

Project Structure

winamp-spotify/
├── src/
│   ├── app/
│   │   ├── page.tsx           # Main page
│   │   ├── callback/          # OAuth callback
│   │   ├── layout.tsx         # App layout
│   │   └── globals.css        # Winamp styles
│   ├── components/
│   │   └── WinampPlayer.tsx   # Player UI (700+ lines of nostalgia)
│   ├── hooks/
│   │   └── useSpotify.ts      # Spotify state & SDK
│   └── lib/
│       └── spotify.ts         # API functions
├── electron/
│   ├── main.js                # Electron main process
│   └── preload.js             # Preload script
└── package.json

Troubleshooting

INVALID_CLIENT: Invalid redirect URI

Ensure your Spotify Dashboard redirect URI exactly matches:

http://127.0.0.1:3000/callback

No trailing slash. Case-sensitive.

No code verifier found

This happens when you start auth on one origin (localhost) and finish on another (127.0.0.1).

Solution: Always use http://127.0.0.1:3000 consistently.

Failed to initialize player

The Web Playback SDK only works on localhost or HTTPS. When accessing via 127.0.0.1, the app automatically falls back to Spotify Connect mode—make sure you have Spotify open on another device.

Playback not working
  • Verify you have Spotify Premium
  • Have Spotify open on another device (for Connect mode)
  • Try logging out and back in
  • Check browser console for errors

Tech Stack

Layer Technology
Framework Next.js 16
Styling Tailwind CSS 4
Desktop Electron 39
Font JetBrains Mono
API Spotify Web API
SDK Spotify Web Playback SDK

License

MIT


Original Winamp by Nullsoft • Spotify is a trademark of Spotify AB

For the 90s kids. For the memories. For the music.

About

A time machine for 90s kids. Retro Winamp 2.x-style music player powered by Spotify.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published