Skip to content
🎵 Listen to your music and share it - all in your browser.
Branch: master
Clone or download
Latest commit a0fb422 Oct 5, 2017
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
app
assets
public
styles
.gitattributes
.gitignore
.sass-lint.yml Change SCSS intendation to 2 spaces Jan 22, 2016
.travis.yml
LICENSE
README.md Update README.md Sep 22, 2017
deploy-ghpages.sh
gulpfile.js
package.json
sass-lint.sh

README.md

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

You can’t perform that action at this time.