audio streaming app plyr.fm
README.md

title: "plyr.fm documentation"#

organized knowledge base for plyr.fm development.

quick navigation#

operations#

backend#

frontend#

deployment#

tools#

atproto#

moderation#

  • moderation/ - copyright detection, sensitive content, labeler

testing#

  • testing/ - pytest patterns, parallel execution

local development#

architecture overview#

plyr.fm uses a hybrid storage model:

  • audio files: cloudflare R2 (CDN-backed, zero egress)
  • metadata: ATProto records on user's PDS (decentralized, user-owned)
  • indexes: neon postgres for fast queries

lossless audio: AIFF/FLAC uploads are transcoded to MP3 for universal browser playback while originals are preserved for export. browsers that support lossless (Safari, native apps) are served the original quality.

key namespaces:

  • fm.plyr.track - track metadata
  • fm.plyr.like - user likes
  • fm.plyr.comment - timed comments
  • fm.plyr.list - playlists and albums
  • fm.plyr.actor.profile - artist profiles

quick start#

# backend
just backend run

# frontend
just frontend run

# run tests
just backend test

see local-development/setup.md for complete setup.

contributing#

  1. check docs before researching externally
  2. document decisions as you make them
  3. keep it simple - MVP over perfection
  4. use lowercase aesthetic