a dumb frontend for just getting some got damned songs
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Jill 698c4baf3a better searchbar 10 months ago
app better searchbar 10 months ago
docs fill in readme 2 years ago
src list correct artists in collab tracks 10 months ago
.env.example fcuking chrisnjgnhkj43 2 years ago
.gitignore get some logging in place 2 years ago
LICENSE Initial commit 2 years ago
README.md updated readme instructions 10 months ago
config.example.toml update deezer version 1 year ago
package.json toasts, autodownload 10 months ago
pnpm-lock.yaml toasts, autodownload 10 months ago
rollup.config.js asdf 1 year ago
tsconfig.json split everything into files 2 years ago



a dumb frontend for just getting some got damned songs

this is basically just a wrapper around deemix, specifically around deemix-js. it's main purpose is to serve as an easier, more accessible GUI to the deemix library.

it's intended use is for small groups of people to self-host, and as such there's barely any restrictions to the service and no "official" instance of it. anyone can visit the website, anyone can download a song and a single ARL is shared between all users of a server. there's currently no authentication or similar, but there's plans for an account system.


dark theme light theme


  1. create an .env file from the .env.example and enter your deezer ARL (i recommend signing up with an american VPN so less location blocks are enforced and metadata localization stays consistent)

    your arl can be found in the local storage for deezer, as a value conviniently named arl

  2. (optionally) copy the config.example.json to config.json in the same folder, and modify it

  3. npm install / pnpm install

  4. head to app/, run npm install / pnpm install there, followed by npm run build / pnpm run build

  5. install the zip linux tool into your path (there are currently no plans for windows support, however feel free to contribute)

  6. build the project with npm run build / pnpm build or just run it with npm run quickrun / pnpm run quickrun

  7. (optionally) put the service on pm2 like such: pm2 start src/index.js --name deemix-web-frontend (or just run it with node src/index.js)

nginx addenum

route data/ and public/ through nginx (as serving data through nginx, software optimized for this, would be faster and more secure) and api/ through localhost. be sure to add websocket-related header setters to your /api path:

proxy_pass http://localhost:4500/api;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";

your config should look similar to this:

location /data {
  root /home/oatmealine/deemix-web-frontend/;
  index test;
  try_files $uri $uri/ =404;

location /api {
  proxy_pass http://localhost:4500/api;
  proxy_http_version 1.1;
  proxy_set_header Upgrade $http_upgrade;
  proxy_set_header Connection "upgrade";
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # optional but useful for logging

location / {
  root /home/oatmealine/deemix-web-frontend/app/dist/;
  index index.html;
  try_files $uri $uri/ =404;

none of the code in this repository reverses, surpasses or otherwise prevents the purpose of Deezer's DRM. all of the related code is done by an external library which has no affiliations with this project. this project simply serves as a GUI or front for said library. PLEASE ONLY USE THIS PIECE OF SOFTWARE FOR EDUCATIONAL PURPOSES!! none of the project's authors or contributors encourage piracy, and hold no warranties or responsibilities for use of the software provided.

attributions & contributors

  • deemix & deemix-js developers and contributors
  • aether for creating the light theme and helping design other parts of the website