In development · Open source
Point a lobby television at a small computer and let a volunteer control what it shows from any browser on the network. Text cards, single images, folder slideshows, a stand-by screen, with an optional clock and calendar dragged onto a snapping grid.
Small choices that prevent support calls
Images are served in place. Nothing is uploaded, copied, or imported into a library. You point it at the folder where your pictures already live, and that is the end of the conversation — because the alternative is a volunteer wondering why the photo they just replaced is still showing the old one.
One port in development and in production. Most projects use a development server on one port and a built application on another, and the gap between them is where "worked on my machine" lives. Here both run on the same port deliberately, so the thing being tested is the thing being shipped.
The file picker is the operating system’s. When a volunteer chooses a folder, they get the real native dialog they already know, driven from the backend — not a web reimplementation that behaves almost but not quite like the one on their desktop.

The control panel, and nearly everything visible here is a constraint rather than a feature. Widgets snap to nine fixed anchor points — the dots — instead of being positioned freely, and they come in four sizes rather than being resizable. Both decisions exist so that a volunteer with ten minutes and no design training cannot produce something misaligned or unreadable from across a lobby. The Landscape / Portrait toggle is not a preference either; church televisions get mounted vertically often enough that assuming landscape would strand a whole class of installs. And the countdown labelled “Time to worship…” is the single most requested thing on any church screen.
The part that actually decides whether it works
The deployment guide is a checklist for the physical box: launch the browser automatically at boot, reserve the address so it does not move, and survive a power blip without a human walking over to it. A sign that needs attention after a storm is not a sign, it is a chore.

Running on a wall. This is the same configuration as the control panel above, seen from the other end — clock at the top anchor, countdown in the middle, giving at the bottom, exactly where they were dropped. The display is portrait-mounted, which is the reason that orientation toggle exists rather than a preference I imagined someone might want. The clock reads the date this photograph was taken, because it is not a mockup; it is a screen that was already running when I walked past it with a phone.
Prototype approaching usable
Twenty-four commits, actively developed, and honestly a working prototype rather than a finished product. No tests yet, no release artifact yet, and no public deployment. It is on this site because the operational thinking in it is better than its line count suggests.