Part II — Developer's Guide
Understand the architecture, write code following project conventions, and contribute to Baander.
Architecture
| Page | Description |
|---|---|
| Architecture Overview | DDD bounded contexts, four-layer structure, and shared kernel |
| Shared Kernel | UUID v7, cursor pagination, search, Swoole async, caching, SSE/WebSocket |
| Real-Time Patterns | WebSocket connection registry, SSE via Redis Pub/Sub, party sync |
| API Reference | OpenAPI spec, REST patterns, and authentication flows |
Development
| Page | Description |
|---|---|
| Development Environment | Docker setup, Makefile commands, IDE config, and Xdebug |
| Coding Conventions | Domain models, value objects, repositories, CQRS, ports, and anti-corruption |
| CQRS and Messaging | Commands, handlers, domain events, and async processing |
| Search | PGroonga full-text search, making a context searchable |
| Testing | PHPUnit suites, conventions, and code examples |
| Frontend Development | React + TypeScript + Vite + Tailwind CSS v4 |
Bounded Contexts
| Page | Description |
|---|---|
| Activity | Listen history and favorites tracking |
| Auth | OAuth 2.0 server, passkeys, TOTP, and DPoP |
| Catalog | Artists, albums, songs, movies, videos, and genres |
| Command | CLI utilities (OpenAPI export) |
| Filesystem | MIME detection and inotify file watching |
| Library | Media library management and file scanning |
| Lyrics | Lyrics storage and retrieval |
| Media | Image storage, streaming, and BlurHash |
| Metadata | External API enrichment (Discogs, Last.fm, Spotify, MusicBrainz) |
| Notification | Push, email, webhook, and in-app notifications |
| Party | Synchronized watch-party playback |
| Playlist | Manual and smart playlist management |
| Recommendation | Music recommendation algorithms |
| Transcode | CMAF video transcoding via FFmpeg and Swoole |
| User Preference | Accent color and sidebar configuration |
| Shared | Cross-cutting kernel: UUID, Swoole, caching, SSE, WebSocket |
Contributing
| Page | Description |
|---|---|
| Adding a New Feature | Step-by-step walkthrough for adding an API endpoint |
| Contributing | Branch naming, commit style, PR process, and documentation maintenance |
| Glossary | DDD, infrastructure, and data type terminology |
See Also
- Part I — Operator's Guide — Prerequisite reading for developers (you need to run the app before you can develop on it).
- CLAUDE.md (external) — AI coding assistant reference. Overlaps with this guide but is maintained independently.