self-hosted ยท your own library
The server indexes, transcodes and serves. The players stay where they already are โ a browser, a Sonos, an AirPlay speaker, a Raspberry Pi with a DAC โ and iPods sync through satellites. An iTunes-style interface on top, because the shape was right the first time.
A fabricated library, generated in the browser โ no server behind it. Four themes, switchable from the status bar.
Most projects conflate them, and then cannot explain why casting to a Sonos is not the same as filling an iPod.
Plays right now. A browser, a Sonos, a tablet, a sound card. It gets a stream, not files.
Holds a copy. An iPod. Files have to be transferred, converted and checked โ the phase where a power cut corrupts something.
Lets others read the library. An OpenSubsonic server, DLNA, an outgoing radio stream.
| Piece | State |
|---|---|
Server โ Hono on node:sqlite | Library index, streaming folder scan, tag read and in-place write, acoustic fingerprints, manual and smart playlists, a job queue resumable after a crash, cursor pagination, delta sync by revision, SSE. |
| Interface โ React + TanStack | Virtualized table over the real API, multi-selection, drag and drop, bulk editing, four themes (iTunes 8, iTunes 12, Apple Music and Studio), generated artwork. |
| Satellites, plugins, emitters | Specified in the architecture, not written yet. The contracts come first on purpose. |