A music player that connects to your cloud/distributed storage,
in the form of a static, serverless, web application.
Integrations
Music layer for music storage. User layer for user-data storage.
Music layer
User layer
- Dropbox
- Fission
- IndexedDB (Browser)
- IPFS (using MFS)
- RemoteStorage
Hosting on your own server
Diffuse is a static web application, which means it's just HTML, CSS, and Javascript. No REST API, database, or anything backend-related involved. The app uses a hash (aka. fragment-based) routing system, so you don't need any special server rules for routing. You can download a pre-build web-only version of Diffuse on the releases page. Diffuse uses service workers, so you may need HTTPS for it to work smoothly in certain browsers.
I should also note that some source services use OAuth, so you'll need to use your own application credentials (eg. Google Drive client ID + secret). That said, if you're working locally, you can use http://localhost:8000
or http://127.0.0.1:44999
to use the default ones, that's what the old Electron app was using.
In short:
- Diffuse is a static, serverless web application
- Routing is done using hashes/fragments (eg.
diffuse.sh/#/sources
) - Download a web build on the releases page
- Uses service workers (use HTTPS if possible)
- May need own OAuth application credentials for some source services
Building it yourself
This project uses Nix to manage the project's environment. If you'd like to build this project without Nix, check out the dependencies in the nix/shell.nix
file (most are available through Homebrew as well).
# π±
# 0. Install the Nix package manager
# https://nixos.org/download.html
# 1. Setup environment
nix develop
# 2. Install js dependencies
just install-deps
# 3. Build, start server & watch for changes
just