Adaptive music widget for OBS Studio with Spotify API integration. Displays current track with beautiful animations, supports various screen resolutions and provides web interface for configuration.
- π¨ Adaptive Design - automatic scaling for different resolutions
- π΅ Spotify Integration - real-time current track display (every 2 seconds)
- π¬ Beautiful Animations - vinyl effect, smooth transitions, animated background
- π± QR Code - quick access to track on mobile
- π Audio Visualizer - dynamic effects synchronized with music
- π Adaptive Colors - progress bar automatically adapts to album cover colors
- βοΈ Web Configurator - convenient setup through browser
- π― OBS Ready - easy connection via Browser Source
Use the automated batch file for Windows (Recommended):
# For Windows users - this handles all dependency issues
start.batManual installation:
# Main application
npm install
# Backend
cd backend
npm install
cd ..@rollup/rollup-win32-x64-msvc errors, use the start.bat file which automatically fixes these dependency issues.
- Create an application in Spotify Developer Dashboard
- Get Client ID and Client Secret
- In app settings, add Redirect URI:
http://127.0.0.1:4000/callback
start.batThis batch file will:
- Clean and reinstall dependencies (fixing rollup issues)
- Start backend on port 3001
- Start frontend on port 4000
- Handle all npm dependency conflicts automatically
# Start backend (port 3001)
cd backend && npm run dev &
# Start frontend (port 4000)
npm run dev- Open http://127.0.0.1:4000/config
- Enter Client ID and Client Secret from Spotify
- Click "Connect Spotify" and authorize the application
- Configure visual parameters and positioning
- Save settings
- Add Browser Source in OBS
- URL:
http://127.0.0.1:4000/ - Width/Height: according to your resolution
- Uncheck "Shutdown source when not visible"
- Open http://127.0.0.1:4000/ in your browser
- Open Developer Tools (F12) β Console
- Run this code:
const accessToken = localStorage.getItem('spotify_access_token');
const refreshToken = localStorage.getItem('spotify_refresh_token');
console.log(`http://127.0.0.1:4000/?access_token=${accessToken}&refresh_token=${refreshToken}`);- Copy the generated URL and use it in OBS Browser Source
You can override settings directly in the URL:
http://127.0.0.1:4000/?width=1920&height=1080&position=center&offsetX=0&offsetY=100
Available parameters:
width,height- widget dimensionsposition- position (center, left, right)offsetX,offsetY- offset in pixelsaccess_token,refresh_token- Spotify authentication tokens
streamify/
βββ src/
β βββ components/ # React components
β β βββ MusicWidget/ # Main widget
β β βββ Config/ # Configuration components
β β βββ Layout/ # Adaptive layout
β βββ hooks/ # React hooks
β βββ services/ # API services
β βββ types/ # TypeScript types
β βββ pages/ # Application pages
βββ backend/
β βββ src/ # Express.js backend
βββ public/ # Static files
βββ start.bat # Windows launcher (fixes dependencies)
- 1920Γ1080 (Full HD)
- 2560Γ1440 (QHD)
- 2880Γ1620 (Retina)
- Automatic scaling for other resolutions
Solution: Use start.bat which automatically fixes these issues:
start.bat # This handles all npm dependency conflicts# Check backend status
curl http://127.0.0.1:3001/health
# Restart backend
cd backend && npm run dev- Make sure to use
127.0.0.1instead oflocalhost - Verify backend is running on port 3001
- Check Client ID and Client Secret are correct
- Ensure Redirect URI in Spotify Dashboard:
http://127.0.0.1:4000/callback - Use Web API, not Web Playback SDK
- Make sure Spotify is actively playing music
- Ensure both services are running (use
start.bat) - Use exact URL:
http://127.0.0.1:4000/ - If localStorage doesn't work in OBS, use URL with tokens (Method 2 above)
- Check Browser Source settings in OBS
- Uncheck "Shutdown source when not visible" in OBS Browser Source
- URL:
http://127.0.0.1:4000/(or with tokens) - Width: 800+ (recommended: 1920)
- Height: 600+ (recommended: 1080)
- Shutdown source when not visible: β UNCHECKED
- Refresh browser when scene becomes active: β CHECKED
# Development mode
start.bat # Automatic launch of both services (Windows)
npm run dev # Frontend on port 4000
cd backend && npm run dev # Backend on port 3001
# Production build
npm run build
# Type checking
npm run typecheck
# Linting
npm run lintGET /health- backend status checkGET /api/config- get settingsPOST /api/config- save settingsDELETE /api/config- delete settings
The application uses Spotify Web API with Authorization Code Flow:
- Does not require Premium subscription
- Only works with active Spotify playback
- Automatic token refresh
- Data updates every 2 seconds for smooth progress bar
- Adaptive colors extracted from album artwork
- "Can't find rollup-win32-x64-msvc" β Use
start.bat - "Config loading..." β Check backend is running on port 3001
- "Connect Spotify" in OBS β Use URL with tokens (Method 2)
- Widget not updating β Ensure Spotify is actively playing
- Black screen in OBS β Check URL and Browser Source settings
MIT License