Skip to content
This repository has been archived by the owner on Aug 22, 2021. It is now read-only.
/ PeerTunes Public archive

A P2P music synchronization service.

License

Notifications You must be signed in to change notification settings

BenjaminLawson/PeerTunes

Repository files navigation

PeerTunes

PeerTunes is a Peer-to-Peer social DJ'ing experience for the browser. Peers take turns playing songs and chat about them. Still very much in alpha!

Alt text

Distribution Mirrors

Development

  • Automatically build changes to src/main.js : npm run-script watch
  • Start local web server: npm start
  • Dev: npm run dev

How

  • Users join bittorrent swarm where peers announce rooms
  • Users join swarm with gossipped room state
  • Host peer controls song playing, DJ queue

Why

  • Hosting this type of real-time service with the client-server design is EXPENSIVE
  • Business model shown to be unprofitable time and time again
  • Websites keep popping up and shutting down, this will be permanent

Features

  • $0 to host (static files => host on IPFS, gh-pages, bitbucket.io, electron app, etc.)
  • YouTube video support
  • YouTube search
  • Chat with full emoji support
  • Animated avatars
  • Rating system
  • Ability to play mp3 files
  • Bittorent tracker based peer discovery
  • Public room listing
  • Basic player info/controls
  • Basic persistent song queue organizer

Planned

  • Security
  • Playlists
  • Soundcloud support
  • Friend system using RSA keys (exchange public keys, then have potential friend sign to confirm identity)
  • Profiles (ask peer for info about themself)
  • custom backgrounds set by host (upload to imgur)
  • custom avatars set by user (upload to imgur)
  • moderation controls (kick, ban, skip, max song length, max room size, etc.)
  • Advanced player controls (quality, refresh, hide video, etc.)
  • Export all data
  • import playlists (from export file, youtube playlist, soundcloud playlist, dubtrack.fm, plug.dj)

Problems

  • Can't have persistant rooms
  • Can't store points (without trusting client)
  • Can't reserve usernames/accounts (but can still confirm identities with keys)
  • More open to abuse / security issues
  • Uses new technology (WebRTC, MediaSource) not supported by some browsers

Alternatives (AKA why this project needs to exist)