Architecture decision records
This directory records stable architectural decisions for the Bitrate monorepo.
ADRs explain why the repository uses a pattern; CLAUDE.md and .claude/rules/ explain
how to apply it day to day.
| ADR | Decision |
|---|---|
| 0001 | Turborepo + pnpm multi-runtime monorepo |
| 0002 | Feature-Sliced Design for web-player |
| 0003 | Next.js App Router |
| 0004 | OpenAPI-first client and TanStack Query |
| 0005 | Zustand target for client state |
| 0006 | Shared UI package, tokens, Base UI, shadcn methodology |
| 0007 | React Hook Form + Zod |
| 0008 | Repository-owned AI agent layer |
| 0009 | shadcn produces package-owned compositions |
| 0010 | App Router files stay thin; views own screens |
| 0011 | Retire apps/web in favor of apps/web-player |
| 0012 | Ticket-driven agent commands, GitHub Projects, and Obsidian sync |
| 0013 | apps/docs vs .claude — ownership boundary and drift detection |
| 0014 | What in obsidian/ is committed vs local-only |
| 0015 | graphify and the obsidian/ vault are decoupled |
| 0016 | Retire the obsidian/ ticket/board mirror for live GitHub queries |
| 0017 | Remove the obsidian/ working-notes vault |
| 0018 | Consolidate .agents//AGENTS.md into .claude/ only |
| 0019 | Remove the graphify:obsidian convenience wrapper |
| 0020 | Single-file CMAF + Range index + MSE for audio playback |
| 0020 | Expand /sp-sync-docs to root onboarding docs and .claude/ self-consistency |
| 0021 | Default to agent dispatch across all commands and ordinary tasks |
| 0022 | App-scoped developer agents, unattended /sp-auto pipeline, retire sp-ticket |
| 0023 | Hand-write the design tokens as CSS; retire the token generator |
| 0024 | Rebrand the project from spotify-clone to Bitrate |
| 0025 | Remove the Kottster admin panel |
| 0026 | pnpm 11; pnpm-workspace.yaml is the only home for pnpm settings |
Create new records from template.md. Accepted decisions are changed by
a superseding ADR rather than silently rewriting history.