/diffuse

A music player that connects to your cloud/distributed storage.

Primary LanguageElmOtherNOASSERTION

Diffuse

A music player that connects to your cloud/distributed storage,
in the form of a static, serverless, web application.

📍 Available at diffuse.sh and for download.


Integrations

User layer for user-data storage.
Music layer for music storage.

User layer

Music layer


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).

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

For version numbers, see .tool-versions and stack.yaml.
All of these, except the last one, can be install using homebrew.

  • Elm programming language
  • Haskell programming language
  • Node.js programming language with the Yarn package manager
  • Just command runner (improved make)
  • Devd web server for development (optional)
  • Elm Format elm code formatter (optional)
  • Watchexec watching for file changes (optional)
  • Elm Proofread documentation tests (optional)
# 🍱

# 1. Install programming languages:
#    Elm 0.19.1 & Haskell (Stack), see links above

# 2. Install dependencies
yarn install

# 3. Build, start server & watch for changes
just