This project is a continuation of Beatbump by @snuffyDev.
An alternative frontend for YouTube Music created using Svelte/SvelteKit, and Golang.
- Automix for continued listening
- No ads
- Background play on mobile devices
- Search for artists, playlists, songs, and albums
- Note that all playback is audio only (for now)
- Local playlist management
- Stored in-browser with IndexedDB
- Can save songs individually under 'Favorites'
- Peer-to-Peer data synchronization (using WebRTC)
- Group Sessions
- Achieved with WebRTC in a mesh
- Uses a custom wrapper around the YouTube Music API
- Download songs for offline listening
...and so much more!
All data is stored locally on your device. Data synchronization is done using PeerJS, which uses WebRTC for a Peer-to-Peer connection between browsers.
Contributions are welcomed
The recommended way to run Beatbump is via docker-compose, as Beatbump depends on the invidious-companion service to generate valid YouTube sessions and bypass blocking.
In the docker-compose.yaml file, you can choose to use the pre built docker image of Beatbump or build it from source.
-
Clone the repository:
git clone https://github.com/giwty/Beatbump.git cd Beatbump -
Start the services:
docker-compose up -d
This will start both the Beatbump container and the
invidious-companioncontainer. -
Access Beatbump at
http://localhost:8080orhttp://app.localhost:8080.
To avoid the constant breakage of Beatbump due to YouTube API changes, Beatbump now uses invidious-companion to seamlessly generate sessions that pass YouTube's checks, allowing you to listen to music ad-free without encountering playback errors.
The provided docker-compose.yaml is already pre-configured to handle the connection between Beatbump and the companion service out of the box.
If you choose to run Beatbump and invidious-companion separately, you must provide the following environment variables to the Beatbump container:
COMPANION_URL: The URL of theinvidious-companionservice (e.g.,http://companion:8282).COMPANION_SECRET_KEY: The secret key matching theSERVER_SECRET_KEYset ininvidious-companion.
Note - the download capability was developed with AI.
Beatbump now has a built in downloader that can download songs, playlists, and albums.
There are different download options for you to try -
- Download playlists - new download option in the playlists page.
- Download single song - new download option in the songs page.
- Download song mix - choose a "seed" song and specify how many songs you want to download in addition.
- Ongoing listening download - Beatbump will automatically download songs as you listen to them.
Beatbump uses a local SQLite database (path defined by the BEATBUMP_DB_PATH environment variable) to store the download tasks.
Currently, the database stores:
- Group Tasks: Represents high-level tasks like downloading a playlist, an album, or processing an ongoing listening session.
- Song Tasks: Represents individual song downloads attached to a group task, including metadata like title, artist, album, and thumbnail.
- Settings: Stores application configurations.
Settings: downloads will be enabled once you defined the download path in the settings page. Optionally you can enable ongoing downloads capability.
- Download Path: The directory where music gets saved (mapped to
/downloadsin docker-compose). - Ongoing Downloads: Toggle to automatically save songs to your library as you listen.