audio streaming app plyr.fm
at 7e2fe45b42f267ed8ae4affe5dff9cb7ece99bdd 102 lines 3.1 kB view raw
1--- 2title: plyr.fm docs 3description: documentation for plyr.fm — audio streaming on ATProto 4template: splash 5hero: 6 title: plyr.fm docs 7 tagline: audio streaming on ATProto 8 actions: 9 - text: start listening 10 link: https://plyr.fm 11 icon: right-arrow 12 - text: for developers 13 link: /developers/ 14 variant: minimal 15--- 16 17import Stats from '../../components/Stats.astro'; 18import TrackSearch from '../../components/TrackSearch.astro'; 19import TrendingTracks from '../../components/TrendingTracks.astro'; 20import HeroWaveform from '../../components/HeroWaveform.astro'; 21 22<HeroWaveform /> 23 24<div class="landing-section"> 25 <div class="audience-grid"> 26 <a href="/listeners/" class="audience-card"> 27 <span class="audience-icon">&#9835;</span> 28 <h3>listeners</h3> 29 <p>stream music, build playlists, discover artists</p> 30 </a> 31 <a href="/artists/" class="audience-card"> 32 <span class="audience-icon">&#9834;</span> 33 <h3>artists</h3> 34 <p>upload tracks, embed players, own your data</p> 35 </a> 36 <a href="/developers/" class="audience-card"> 37 <span class="audience-icon">&lt;/&gt;</span> 38 <h3>developers</h3> 39 <p>public API, python SDK, MCP server</p> 40 </a> 41 <a href="/contributing/" class="audience-card"> 42 <span class="audience-icon">&#9881;</span> 43 <h3>contributors</h3> 44 <p>open source — help build the platform</p> 45 </a> 46 </div> 47</div> 48 49<div class="landing-section"> 50 <h2>hear it</h2> 51 <TrendingTracks /> 52</div> 53 54<div class="landing-section"> 55 <h2>search tracks</h2> 56 <TrackSearch /> 57</div> 58 59<div class="landing-section"> 60 <h2>platform stats</h2> 61 <Stats /> 62</div> 63 64<div class="landing-section"> 65 <h2>your music, your data</h2> 66 <p style="color: var(--sl-color-gray-2); font-size: 0.9rem; margin-bottom: 1rem;"> 67 every track on plyr.fm is an ATProto record in the artist's personal data repo — including <a href="https://plyr.fm/u/plyr.fm" style="color: var(--sl-color-accent);">plyr.fm's own dev podcasts</a>. here's the latest one: 68 </p> 69 <div class="record-example"> 70 71```json 72{ 73 "$type": "fm.plyr.track", 74 "album": "2026", 75 "title": "plyr.fm update - February 27, 2026", 76 "artist": "plyr.fm", 77 "audioUrl": "https://pub-d4ed8a1e39d44dac85263d86ad5676fd.r2.dev/audio/ada9cadc63efd822.wav", 78 "duration": 265, 79 "fileType": "wav", 80 "audioBlob": { 81 "$type": "blob", 82 "ref": { 83 "$link": "bafkreifnvhfnyy7p3ara2gdyv6krztsd26luv2mi45j7hw3sreq7xjpd24" 84 }, 85 "mimeType": "audio/vnd.wave", 86 "size": 12760890 87 }, 88 "createdAt": "2026-02-27T16:08:13.146107Z" 89} 90``` 91 92 </div> 93 <p style="color: var(--sl-color-gray-3); font-size: 0.8rem; margin-top: 0.75rem;"> 94 the API is public. build your own player, analytics, or recommendation engine — the data is open. 95 </p> 96</div> 97 98<div class="landing-section" style="text-align: center; margin-top: 4rem;"> 99 <p style="color: var(--sl-color-gray-3); font-size: 0.8rem;"> 100 questions? <a href="mailto:plyrdotfm@proton.me" style="color: var(--sl-color-accent);">plyrdotfm@proton.me</a> 101 </p> 102</div>