π§ Your entire vinyl collection, right in your pocket. π₯
Dig through your existing records, browse your wantlist, and discover what you already own - anytime, anywhere. Turn your Discogs collection into a fully streamable music library! πβ¨
πΈ Browse Your Collection - Explore all the vinyl records you already own from Discogs π CSV Import - Load your collection and wantlist directly from CSV exports - no login required π Background Scraping - Automatically finds YouTube audio and high-quality cover art for every track in the background πΎ Smart Persistence - Saves all resolved metadata to the cloud database, so your collection loads instantly next time π¨ Themes - Choose from multiple themes (Default Dark, Midnight Purple, Vintage Green) to match your vibe π Smart Shuffle - Toggle between shuffled and sequential (artist β album β track order) playback π Playlist Search - Live-filter your queue by title or artist right in the playlist panel π± Mobile First - Designed for on-the-go access with a smooth, app-like experience that fits any screen π΅ YouTube & Bandcamp - Dual playback providers for maximum compatibility β€οΈ Like/Dislike Tracks - Curate your listening experience with track preferences π‘οΈ Failsafe Audio Chain - yt-dlp β Invidious β YouTube API ensures playback even when quotas run out π Auto-Retry Unavailable Tracks - Dimmed tracks retry in the background; tap once to queue the retry, tap again when resolved to play
- Node.js & npm installed
- A Discogs account (optional, for OAuth via Settings)
- Supabase project (for backend services)
# Clone the repo
git clone https://github.com/CarlosFranzetti/discogs-stream.git
cd discogs-stream
# Install dependencies
npm install
# Set up environment variables
cp .env.example .env
# Add your VITE_SUPABASE_URL and VITE_SUPABASE_PUBLISHABLE_KEY
# Start the development server
npm run devπ Open http://localhost:8080 and start streaming!
| Command | Description |
|---|---|
npm run dev |
π₯ Start development server (localhost:8080) |
npm run build |
π¦ Build for production |
npm run build:dev |
π Build for development mode |
npm run lint |
π§Ή Run linter |
npm test |
β Run all tests |
npm preview |
π Preview production build |
src/
βββ components/ # π§© React components
β βββ ui/ # π¨ shadcn-ui components
β βββ Player.tsx # π₯οΈ Desktop player
β βββ MobilePlayer.tsx # π± Mobile-optimized player (primary)
βββ hooks/ # π£ Custom React hooks
βββ pages/ # π Route components
βββ lib/ # π§ Utilities
βββ types/ # π TypeScript types
βββ integrations/ # π Supabase client
- β‘ Vite - Lightning-fast build tool
- βοΈ React 18 - UI framework
- π¨ Tailwind CSS + shadcn/ui - Beautiful, accessible components
- ποΈ Supabase - Backend, edge functions & persistent cloud cache
- π΅ YouTube IFrame API - Audio playback
- πΆ Bandcamp Embeds - Alternative playback source
- π Discogs API - Collection & release data
- π§ yt-dlp + Invidious - Quota-free direct audio extraction
π‘οΈ Failsafe Audio Chain - YouTube searches now always run through yt-dlp β Invidious β YouTube API, even after quota is exceeded. No more dead silence!
πΎ Cloud Persistence on Import - CSV imports now write resolved YouTube IDs and cover art straight to the database. Reopen the app and everything is there instantly
π Sequential Shuffle - Shuffle OFF now sorts your playlist by artist β album β track position. Toggle ON to randomize, toggle back OFF to restore the ordered view
π Playlist Search - New search bar at the top of the playlist panel lets you filter your queue live by title or artist
π Smart Dimmed Tracks - Tracks without a stream are dimmed (not removed). First tap triggers a silent background retry; second tap plays if it resolved. Background verifier also retries non_working tracks automatically over time
π± Cleaner Title Screen - The "Connect via CSV files below or sign in" card is gone. Just upload your CSV and hit Start Listening
π― Track Sync on Start - If audio is already preloading when you tap Start Listening, the displayed track now correctly matches what's actually playing
βοΈ Discogs OAuth in Settings - Discogs account connection moved to the Settings panel (gear icon) with a clear experimental warning
This project is open source and available under the MIT License.
For vinyl lovers, by vinyl lovers. πβ¨
Happy Streaming! π§π₯