Shower Radio¶
- Status: Planned
Shower Radio is the second appliance use for the phone: a simple player for a large DRM-free music collection and a basic Bluetooth speaker. It is not a Spotify client and it does not attempt to extract or copy Spotify's protected offline downloads.
Product shape¶
The useful first version is intentionally small:
- index music copied to app-accessible storage;
- play local tracks reliably without Internet access;
- reconnect to the already-paired speaker using normal Android behavior;
- provide very large play/pause, previous, next, volume, and return-to-clock controls; and
- recover honestly after Bluetooth loss, a pause, or process restart.
Controls must work at arm's length with wet hands. Decorative clock sounds mute while Bluetooth A2DP is connected or music is active, so a Nixie crackle never leaks into the speaker or competes with a track.
Storage direction¶
Local synchronized copies are preferred for the shower because they survive a Wi-Fi problem. A future server playlist can expose metadata and immutable, bounded URLs; Nginx can serve audio with range requests from a dedicated, backed-up Moto media directory. The API container itself stays replaceable and stateless.
flowchart LR
Library[DRM-free library] -->|copy or synchronize| Phone[Phone storage]
Library -->|optional curated playlist| Media[Dedicated VPS media]
Media -->|manifest plus range-capable URLs| Phone
Phone --> Player[Android playback service]
Player --> Bluetooth[Paired shower speaker]
Decisions still required¶
Implementation will need explicit decisions for Android 5.1 storage access, supported codecs, media-session behavior, audio focus, indexing cost, album art, playlist persistence, and modern-Android permission differences. Nothing should auto-play at boot or after an unexpected reconnect.
Internet radio is a possible later source. It should not delay the local library, which is simpler, private, and independent of third-party client support.