The Unofficial multi-platform Bandcamp desktop player with mobile remote controller & standalone app
- https://eremef.xyz/beta-player - download page
- https://github.com/eremef/bandcamp-player/releases/latest - raw release files
AI-generated* feature-rich Electron desktop application for playing Bandcamp music with fan account integration, offline caching, playlist management, native media controls, and many more!
*not with one prompt, but hundreds of them (to be more precise, so far, over 101 conversations and 900 user prompts), a few weeks of designing, prompting, testing on different devices/virtual machines, re-designing, prompting, testing, etc., a full-time job. Still, not a traditional craft programming, and not as eco-friendly.
- 🎵 Collection Browser - Browse and play your purchased Bandcamp music
- 📺 Chromecast Support - Cast music to Google Cast-enabled devices
- 📝 Playlist Management - Create and manage custom playlists
- 🚫 Offline Mode - Seamless offline playback with automatic cache detection
- 📥 Offline Caching - Download entire albums or tracks for offline playback with cache management UI
- 📻 Bandcamp Radio - Listen to curated Bandcamp radio shows
- 🔍 Smart Search - Filter your collection instantly
- 🎛️ Windows Media Controls - Control playback with system media keys
- 🔊 Natural Volume Control - Exponential volume scaling for precise control at lower levels
- 📋 Queue Management - Manage your playback queue with drag-and-drop reordering
- 🔀 Shuffle & Repeat - Various playback modes
- 🎧 Last.fm Scrobbling - Track your listening history (bring your own API token)
- ⚡ Persistent Caching - Blazing fast startup with database-backed collection caching and daily background updates
- ⏳ Smart Buffering - Smooth loading for large collections with visual feedback
- 🌐 Web Remote Control - Control playback via any web browser on the local network
- 📡 Connection Management - Manage remote sessions with device identification
- 🖥️ Mini Player - Compact floating player window
- 💾 System Tray - Minimize to tray with quick controls
- 🔄 Auto-Updates - Stay updated with the latest versions
- 🎨 Theme Support - Persistent System/Light/Dark theme modes
Note: The applications have been tested primarily on Windows 11 and Android 14. Linux, macOS, and iOS builds are available but experimental.
- Electron - Desktop application framework
- React 19 - UI library
- TypeScript - Type-safe development
- Zustand - State management
- SQLite (better-sqlite3) - Local database
- Vite - Build tool for renderer
- Cheerio - Web scraping
- Axios - HTTP client
- chromecast-api - Casting support
- Electron Updater - Auto-update support
- Node.js 18+
- npm or yarn
# Clone the repository
cd Bandcamp-player
# Install dependencies (automatically runs native rebuilds)
npm install
# Run in development mode (starts watchers + Electron)
npm run dev
# Run in simulation mode (mocks 5000 items + errors)
npm run dev:large# Build for production
npm run build
# Create an installer package (runs tests + build + electron-builder)
npm run packageAccess the settings menu (gear icon) to configure:
-
Offline Cache
- Toggle caching on/off
- Set maximum cache size (1-50 GB)
- View cache usage statistics
- Clear cache to free up space
-
Last.fm
- Connect/disconnect Last.fm account
- Toggle automatic scrobbling
-
Window
- Minimize to Tray: Keep the app running in the background when closed
- Show Notifications: Desktop notifications on track change
src/
├── main/ # Electron main process
│ ├── main.ts # Entry point
│ ├── preload.ts # Preload script
│ ├── ipc-handlers.ts # IPC communication
│ ├── services/ # Backend services
│ │ ├── auth.service.ts
│ │ ├── cache.service.ts
│ │ ├── player.service.ts
│ │ ├── playlist.service.ts
│ │ ├── scraper.service.ts
│ │ ├── scrobbler.service.ts
│ │ ├── remote.service.ts
│ │ ├── updater.service.ts
│ │ └── tray.service.ts
│ └── database/ # SQLite database
├── renderer/ # React frontend
│ ├── components/ # UI components
│ │ ├── Auth/ # Auth Components
│ │ ├── Collection/ # Collection Views
│ │ ├── Layout/ # Layout Components
│ │ ├── Player/ # Player Controls
│ │ ├── Playlist/ # Playlist Management
│ │ ├── Radio/ # Radio Player
│ │ ├── Settings/ # Settings Modal
│ │ └── UI/ # Common UI elements
│ ├── store/ # Zustand store
│ └── styles/ # CSS styles
├── shared/ # Shared types
└── assets/ # Static assets
├── icons/ # Application icons
└── remote/ # Web Remote Interface (index.html, client.js, styles.css)
- Login - Click "Login with Bandcamp" to authenticate with your fan account
- Browse Collection - Your purchased albums and tracks appear in the Collection view. Large collections (>100 items) are automatically cached for instant loading on subsequent launches.
- Daily Refresh - The app automatically keeps your collection up-to-date in the background every 24 hours. Use the "Refresh" button for a manual update.
- Play Music - Click on an album to start playing
- Create Playlists - Use the + button in the sidebar to create playlists
- Add to Queue - Right-click on albums/tracks or use the "More options" button to add to queue
- Open Context Menus - Access advanced options (Play Next, Add to Playlist) via right-click or menu buttons in both Collection and Radio views
- Offline Mode - Download tracks via the context menu for offline playback
The project includes a companion mobile application (Android/iOS) in the mobile/ directory.
- 📱 Hybrid Mode - Seamlessly switch between Remote Control and Standalone playback
- 🎵 Standalone Player - Use the mobile app as an independent Bandcamp player with background audio
- 📂 Collection Browser - Browse and play from Collection, Playlists, and Radio
- 🎤 Artists Tab - Browse your collection by Artist with cached SQLite performance
- 📋 Queue Management - View and manage the playback queue
- 🖱️ Context Menus - Long-press for Queue and Playlist management
- 🔄 Swipe to Refresh - Pull-to-refresh support for all main tabs
- 📜 Infinite Scroll - Efficiently browse large collections with paginated SQLite storage
- 🔍 Auto Discovery - Automatic local network discovery
- 🔊 Volume Sync - Uses device hardware volume in Remote mode and independent volume in Standalone
- 🎧 Last.FM Scrobbling - Track your listening history with native scrobbling in standalone mode (do not use Last.FM's Scrobble from... as it might behave unstably)
- 🎨 Theme Support - Persistent System/Light/Dark theme modes
- React Native - Cross-platform mobile framework
- Expo - Build and development platform
- Expo Router - File-based routing
- Zustand - State management
- React Native Track Player - Native audio playback & media controls
- React Native Volume Manager - System volume synchronization
Prerequisites:
- Java 17 (Required for Android builds. Java 24+ is currently incompatible).
- Android SDK with CMake 3.22.1 installed.
- Android NDK (Side-by-side versions).
# Configure SDK Create a local.properties file in mobile/android/ pointing to your SDK:
sdk.dir=C:\\Users\\<user>\\AppData\\Local\\Android\\Sdkcd mobile
npm install
# Build and run on connected Android device/emulator
npm run android:buildcd mobile
npm install
npx expo prebuild --platform ios
# Open in Xcode and build
open ios/BandcampRemote.xcworkspacemobile/
├── app/ # Expo Router app directory
│ ├── (tabs)/ # Main tab navigation
│ ├── modal/ # Modal screens
│ └── _layout.tsx # Root layout
├── components/ # React Native components
├── services/ # Mobile services (Player, API, WebSocket)
├── store/ # Zustand store for mobile
├── assets/ # Mobile assets (images, fonts)
├── android/ # Android native project
└── ios/ # iOS native project
| What | Size | Status |
|---|---|---|
| Offline mode and music caching - mobile | XL | 🔴 |
| Bug finding and fixing | XXL | 🟡 |
| View/edit playlist/ drag-to-reorder - mobile | L | 🔴 |
| Chromecast for standalone mobile mode | L | 🔴 |
Legend: 🟢 finished (waiting for release) 🟡 in the middle 🟠 just started 🔴 not started
- Bandcamp Eccentric Transport App
- Browse Every Track Anywhere
- Bandcamp Equivalent Third-party App
- Bandcamp Enhanced Transmitting Anywhere
- Bugs Everywhere, Try Anyway
- Bandcamp Explorer, Totally Alpha
- Built Exclusively To Audition
- Better Every Time, Almost
- Beats Echoing Through Air
- Bandcamp Experience Through App
- Bandcamp Embedded Track Aggregator
Since the application only allows users to stream and cache music they have already collected, I don't see any risk in using it. Below is Bandcamp's stance on much more questionable behaviors for comparison:
This application is an unofficial project intended for personal use only. It is not affiliated with, authorized, maintained, sponsored, or endorsed by Bandcamp Ventures LLC. Users are responsible for complying with Bandcamp's Terms of Service and all applicable local and international laws regarding digital content and copyright.
