···47474848### March 2026
49495050+#### public docs restructure (PRs #1035-1041, Mar 6)
5151+5252+rewrote docs.plyr.fm from developer-only internal docs to an audience-first site serving four groups: listeners, artists, developers, and contributors.
5353+5454+**what changed:**
5555+- moved all internal operational docs (auth, deployment, security, moderation, local dev setup) to `docs-internal/` — still available to active contributors, no longer public
5656+- created audience pages: `listeners.md`, `artists.md`, `developers.md` with content tailored to each group
5757+- rewrote `contributing.md` with fork workflow, prerequisite list, env var links, and a copy-pasteable prompt for coding assistants
5858+- landing page overhaul: audience card grid, live trending track embeds (fetched from `/tracks/top`), improved search with clickable results and thumbnails, animated hero waveform
5959+- created `skills/contribute/SKILL.md` ([agentskills.io](https://agentskills.io) spec) — action-oriented playbook for AI coding assistants contributing to the project
6060+- updated sidebar: listeners → artists → developers → lexicons → contributing → legal
6161+- linked docs.plyr.fm prominently from README.md
6262+6363+**new components:** `TrendingTracks.astro` (lazy-loaded embed iframes), `HeroWaveform.astro` (animated SVG), updated `TrackSearch.astro` (clickable results with thumbnails)
6464+5065#### embed glow bar + share button (PRs #996-998, Mar 1)
51665267**glow bar**: 1px accent-colored bar (`#6a9fff`) on track and collection embeds that lights up on playback and dims on pause, matching the main Player's `::before` style. uses `color-mix()` for the box-shadow glow. works across all container query breakpoints.
···227242228243### current focus
229244245245+public docs restructured at docs.plyr.fm — audience-first pages for listeners, artists, developers, and contributors. internal operational docs moved to `docs-internal/`. landing page with live trending embeds, search, and platform stats. contribute skill for AI coding assistants.
246246+230247jams shipped to all users — feature flag removed, output device mode (single-speaker) working. image performance: 96x96 WebP thumbnails for all artwork with storage protocol abstraction and backfill script. PDS audio uploads graduated to GA. homepage performance improved with Redis-cached follow graph and parallelized network artists fetch. ATProto scope parsing replaced with spec-compliant SDK implementation.
231248232249### known issues
···350367351368## for new contributors
352369353353-### getting started
354354-1. clone: `gh repo clone zzstoatzz/plyr.fm`
355355-2. install dependencies: `uv sync && cd frontend && bun install`
356356-3. run backend: `uv run uvicorn backend.main:app --reload`
357357-4. run frontend: `cd frontend && bun run dev`
358358-5. visit http://localhost:5173
359359-360360-### development workflow
361361-1. create issue on github
362362-2. create PR from feature branch
363363-3. ensure pre-commit hooks pass
364364-4. merge to main → deploys to staging
365365-5. create github release → deploys to production
366366-367367-### key principles
368368-- type hints everywhere
369369-- lowercase aesthetic
370370-- ATProto first
371371-- async everywhere (no blocking I/O)
372372-- mobile matters
373373-- cost conscious
374374-375375-### project structure
376376-```
377377-plyr.fm/
378378-├── backend/ # FastAPI app & Python tooling
379379-│ ├── src/backend/ # application code
380380-│ ├── tests/ # pytest suite
381381-│ └── alembic/ # database migrations
382382-├── frontend/ # SvelteKit app
383383-│ ├── src/lib/ # components & state
384384-│ └── src/routes/ # pages
385385-├── services/
386386-│ ├── transcoder/ # Rust audio transcoding (Fly.io)
387387-│ ├── moderation/ # Rust content moderation (Fly.io)
388388-│ └── clap/ # ML embeddings (Python, Modal)
389389-├── infrastructure/
390390-│ └── redis/ # self-hosted Redis (Fly.io)
391391-├── docs/ # documentation
392392-└── justfile # task runner
393393-```
370370+see the [contributing guide](https://docs.plyr.fm/contributing/) for setup instructions, or install the [contribute skill](skills/contribute/SKILL.md) for AI coding assistants.
394371395372## documentation
396373397397-- [docs/README.md](docs/README.md) - documentation index
398398-- [runbooks](docs/runbooks/) - production incident procedures
399399-- [background tasks](docs/backend/background-tasks.md) - docket task system
400400-- [logfire querying](docs/tools/logfire.md) - observability queries
401401-- [moderation & labeler](docs/moderation/atproto-labeler.md) - copyright, sensitive content
402402-- [lexicons overview](docs/lexicons/overview.md) - ATProto record schemas
374374+- **public docs**: [docs.plyr.fm](https://docs.plyr.fm) — for listeners, artists, developers, and contributors
375375+- **internal docs**: [docs-internal/](docs-internal/) — deployment, auth internals, runbooks, moderation
376376+- **lexicons**: [docs.plyr.fm/lexicons/overview](https://docs.plyr.fm/lexicons/overview/) — ATProto record schemas
403377404378---
405379406406-this is a living document. last updated 2026-03-01 (embed glow bar + share button, embed layout fixes).
380380+this is a living document. last updated 2026-03-06 (public docs restructure).
407381