Skip to content

peermusic/peermusic

Repository files navigation

Peermusic

Travis David GitHub license

Peermusic is a mobile ready music player that runs locally the browser. It strives to deliver all convenience features of modern music players combined with easy and encrypted peer-to-peer based sharing of music files.

Peermusic interface on desktop and mobile phone

Features

We strive to practice Ethical Design.

  • Runs in your browser tab.
  • Features a beautiful mobile ready interface with different themes for every taste.
  • Connections are only established between Peermusic instances that got deliberately connected by the user(s).
  • The music player is a single-page application that can run offline.
  • Requires minimal server infrastructure:
  • A radio functionality that tries to automatically generate meaningful playlists.
  • Connects peer-to-peer between instances to share data.
  • Secures the communication cryptographically (regular WebRTC encryption - no public key pinning).
  • Does not leak IP information to the central signalhub server that faciliates the peer-to-peer connection setup.
  • Peermusic instances can be set to one of four different sharing levels:
    • "leech" and "private" only connect to the users own Peermusic instances.
    • "friends" allows connections to instances that were added as friends by the user.
    • "everyone" takes advantage of WebTorrent:
      • Locally available songs will be seeded via WebTorrent.
      • Locally unavailable songs that are requested by other instances will be downloaded via WebTorrent.
  • Peermusic instances employ an escrow sharing concept:
    • If A knows B and B knows C. But A does not know C. Then B will act as an escrow between A and C.
    • This escrow concept is used for:
      • The index of available songs.
      • The songs themselves.
      • The songs metadata (cover art and similarity information).
  • Association of instances using QR codes and custom web+peermusic://... URLs.
  • Desktop notifications on track changes.
  • Works with Google Chrome and Chromium on desktop and mobile plattforms.
  • Peermusic can easily be self hosted.

Install

You can find the most recent version here: Peermusic hosted on Github Pages.

git clone https://github.com/peermusic/peermusic.git
cd peermusic
npm install -g gulp
npm install
gulp

A local webserver will be started on http://localhost:8000. A file watcher will automatically recompiled when source files are beeing changed. The generated files will be placed in public/build/.

Also a local signalhub server will be started on http://localhost:7000 to allow for easy testing of the peer-to-peer features. To run a different instance of Peermusic within the same browser use http://127.0.0.1:8000.

If you have livereload installed browser reloads will be triggered automatically on code changes.

Related