{
"path": "/3m5cmpx2m4s2h",
"site": "at://did:plc:vs3hnzq2daqbszxlysywzy54/site.standard.publication/3m5cmn65tvk2j",
"$type": "site.standard.document",
"title": "(WIP) music streaming on atproto",
"content": {
"$type": "pub.leaflet.content",
"pages": [
{
"id": "019a6fc8-5948-7aa2-aec6-3f173093a39e",
"$type": "pub.leaflet.pages.linearDocument",
"blocks": [
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 76,
"byteStart": 69
},
"features": [
{
"uri": "https://plyr.fm/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "nights and weekends over the last week or so I have begun working on plyr.fm, an audio streaming platform on atproto."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "this was motivated by"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.unorderedList",
"children": [
{
"$type": "pub.leaflet.blocks.unorderedList#listItem",
"content": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "my love of making/listening to music"
},
"children": []
},
{
"$type": "pub.leaflet.blocks.unorderedList#listItem",
"content": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "the fact soundcloud did not seem to quickly give me my raw audio files back the way i uploaded them"
},
"children": []
},
{
"$type": "pub.leaflet.blocks.unorderedList#listItem",
"content": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "spotify's grip but skeletons (artist pay, leadership choices etc)"
},
"children": []
},
{
"$type": "pub.leaflet.blocks.unorderedList#listItem",
"content": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "the desire to make compelling atproto apps for all people"
},
"children": []
}
]
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "disclaimers:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.unorderedList",
"children": [
{
"$type": "pub.leaflet.blocks.unorderedList#listItem",
"content": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 55,
"byteStart": 44
},
"features": [
{
"uri": "https://www.cloudflare.com/developer-platform/products/r2/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "audio and cover art you upload is stored in public blob"
},
"children": []
},
{
"$type": "pub.leaflet.blocks.unorderedList#listItem",
"content": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 45,
"byteStart": 0
},
"features": [
{
"uri": "https://ufos.microcosm.blue/collection/?nsid=fm.plyr.track",
"$type": "pub.leaflet.richtext.facet#link"
}
]
},
{
"index": {
"byteEnd": 55,
"byteStart": 51
},
"features": [
{
"uri": "https://ufos.microcosm.blue/collection/?nsid=fm.plyr.like",
"$type": "pub.leaflet.richtext.facet#link"
}
]
},
{
"index": {
"byteEnd": 60,
"byteStart": 55
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#code"
},
{
"uri": "https://ufos.microcosm.blue/collection/?nsid=fm.plyr.like",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "records are currently posted at fm.plyr.track (and now .like)"
},
"children": []
},
{
"$type": "pub.leaflet.blocks.unorderedList#listItem",
"content": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "this is an EARLY solo project with likely many blindspots"
},
"children": []
}
]
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 88,
"byteStart": 80
},
"features": [
{
"uri": "https://bsky.app/profile/plyr.fm",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "if you're interested in getting hands-on involved with contributions, please DM @plyr.fm, i would like to post the code on tangled soon"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 5,
"byteStart": 0
},
"features": [
{
"uri": "https://bsky.app/profile/zzstoatzz.io",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "-nate"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 1,
"facets": [],
"plaintext": "EDIT:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "the code is here"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"src": "https://github.com/zzstoatzz/plyr.fm",
"$type": "pub.leaflet.blocks.website",
"title": "GitHub - zzstoatzz/plyr.fm: music on atproto",
"description": "music on atproto. Contribute to zzstoatzz/plyr.fm development by creating an account on GitHub."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 3,
"facets": [],
"plaintext": "(living) tentative roadmap"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.unorderedList",
"children": [
{
"$type": "pub.leaflet.blocks.unorderedList#listItem",
"content": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "authed users can upload and listen to audio (✓ 11/5/2025)"
},
"children": []
},
{
"$type": "pub.leaflet.blocks.unorderedList#listItem",
"content": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "authed users can like/save songs into a list (✓ 11/11/2025)"
},
"children": []
},
{
"$type": "pub.leaflet.blocks.unorderedList#listItem",
"content": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "track detail page / visually support albums (✓ 11/11/2025)"
},
"children": [
{
"$type": "pub.leaflet.blocks.unorderedList#listItem",
"content": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "general atproto record design for playlists and likes"
},
"children": []
}
]
},
{
"$type": "pub.leaflet.blocks.unorderedList#listItem",
"content": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "basic moderation for cover art (implemented but not on)"
},
"children": []
},
{
"$type": "pub.leaflet.blocks.unorderedList#listItem",
"content": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "basic copyright matching for uploaded material (^same)"
},
"children": []
},
{
"$type": "pub.leaflet.blocks.unorderedList#listItem",
"content": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "data control portal section"
},
"children": [
{
"$type": "pub.leaflet.blocks.unorderedList#listItem",
"content": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "export all tracks (✓ 11/27/2025)"
},
"children": []
},
{
"$type": "pub.leaflet.blocks.unorderedList#listItem",
"content": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "delete all data (optionally PDS records too) (✓ 11/29/2025)"
},
"children": []
}
]
},
{
"$type": "pub.leaflet.blocks.unorderedList#listItem",
"content": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "(opt-in) comments on track detail page (✓ 11/29/2025)"
},
"children": []
}
]
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "i am very open to constructive suggestions of any kind!"
}
}
]
}
]
},
"bskyPostRef": {
"cid": "bafyreihiniadc4oyrctlo7hmmn3cgxwtbb72m5z2cwect4h3dbwkop6t4a",
"uri": "at://did:plc:vs3hnzq2daqbszxlysywzy54/app.bsky.feed.post/3m5cmq2zufc2h",
"commit": {
"cid": "bafyreig4atmi3kce3ult7g3byo5tvqirnx4ny7gf3fibmai525sfxx634m",
"rev": "3m5cmq34s762a"
},
"validationStatus": "valid"
},
"description": "because we can",
"publishedAt": "2025-11-10T22:01:19.655Z"
}