A music player that connects to your cloud/distributed storage.
1<img src="https://diffuse.sh/images/diffuse-dark.svg" alt="Diffuse" width="158" />
2
3_A music player that connects to your cloud/distributed storage,
4in the form of a static, serverless, web application._
5
6📍 Available at [diffuse.sh](https://diffuse.sh/) and for [download](https://github.com/icidasset/diffuse/releases).
7
8<br />
9<img src="https://icidasset-public.s3.amazonaws.com/diffuse-v3.jpg" />
10
11
12
13### Integrations
14
15Music layer for music storage.
16User layer for user-data storage.
17
18#### Music layer
19
20- [Amazon S3](https://aws.amazon.com/s3/)
21- [Azure Blob Storage](https://azure.microsoft.com/en-us/services/storage/blobs/)
22- [Azure File Storage](https://azure.microsoft.com/en-us/services/storage/files/)
23- [Dropbox](https://dropbox.com/)
24- [Google Drive](https://drive.google.com/)
25- [IPFS](https://ipfs.io/)
26- [WebDAV](https://en.wikipedia.org/wiki/WebDAV)
27
28#### User layer
29
30- [Dropbox](https://www.dropbox.com/)
31- [IPFS](https://ipfs.io/) <small>(using MFS)</small>
32- [RemoteStorage](https://remotestorage.io/)
33
34
35
36---
37
38
39
40### Hosting on your own server
41
42Diffuse 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](https://github.com/icidasset/diffuse/releases) page. Diffuse uses service workers, so you may need HTTPS for it to work smoothly in certain browsers.
43
44I 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.
45
46In short:
47- Diffuse is a static, serverless web application
48- Routing is done using hashes/fragments (eg. `diffuse.sh/#/sources`)
49- Download a web build on the [releases](https://github.com/icidasset/diffuse/releases) page
50- Uses service workers (use HTTPS if possible)
51- May need own OAuth application credentials for some source services
52
53
54
55---
56
57
58
59### Building it yourself
60
61This project can be built with [Node.js](https://nodejs.org/).
62
63```shell
64# 🍱
65
66# 1. Install dependencies
67npm install
68
69# 2. Build
70npx just build
71
72# 3. Start static-file server
73npx just server
74
75# 4. Watch for changes (requires [watchexec](https://github.com/watchexec/watchexec/) to be installed)
76npx just watch
77
78# Alternatively, to build, serve & watch:
79npx just
80```