September 28, 2026

StoreCast Goes From a Blank Repo to a Real Appliance in One Day

Nothing to report outside the keyboard today — just a long, satisfying push on StoreCast.

Building StoreCast, start to finish

Monday's target was the build itself, and it landed in one long session: StoreCast went from an empty project folder to a real, working appliance. Started with the audio basics — sound shaping and leveling so nothing plays too loud or too quiet, a way to compress the audio down small enough to stream to the phone system's hold music, support for playing a wide range of file and stream formats, an internet radio source that reconnects on its own if it drops, and a local music player that never goes silent or gets stuck on a bad file. On top of that: a scheduler for store and phone announcements that never talk over each other, a backup plan to fall back on a similar genre if a streaming source drops out, and a watchdog that notices when something's gone wrong and recovers on its own.

From there: the background service that runs all this, its remote-control interface, and the install package, including actually turning on the nightly update check for both fresh installs and upgrades from the test version. Then the web control panel (staff and admin logins, a page to manage the outputs). Along the way, fixed a real snag — the test network had lost its internet connection, which had silently taken the automatic build-and-test system down with it — and moved the test machines back once that was fixed.

A real YouTube Music source, with a live sign-in you can actually use

The most interesting piece: a way to run an actual, invisible web browser in the background and capture its sound, so YouTube Music can play as a real source — sign-in, playlists including offline-downloaded songs, play/pause/skip, and it recovers on its own if it gets stuck. Since that hidden browser can't show you a normal login screen, I built a live sign-in view: it shows you a stream of what the hidden browser is looking at and lets you click and type into it from the admin panel, so you can actually log in. It all runs in a way that survives a reboot without needing anyone logged into the computer itself.

Also added a fourth output option — a feed to SonoBus for listening remotely (off, store, phone, or both at once). That needed a small fix on the SonoBus side too: running it without its usual screen always defaulted to sending in mono, so I added a real option to send true stereo, or two separate stereo feeds at once, without needing to first set it up through its normal screen — something a fully automated appliance like StoreCast can't do on its own.

← Back to Blog