← All work

Independent product · Live product

SignageStack

Manage digital displays from one browser dashboard. Pair screens, build playlists, set working hours, and keep cached media playing when the connection drops.

Product design · Frontend & backend · Infrastructure

Visit SignageStack Explore display apps Download a player

The project at a glance

Project type
Independent product
Problem
Screen operators need to prepare and deliver content, set working hours, and see what played without managing every display separately.
Designed for
Teams managing digital displays across one or more locations.
Key functionality
Screen and media management; Playlists and screen working hours; Display apps and integrations; Cached playback and recovery; Proof-of-play reports.
Technical approach
A browser management application and API coordinate content delivery to a screen player. Shared rendering connects the editing preview to the display.
Engineering challenge
Keep preview and playback consistent while giving cached content a recovery path when connectivity is lost.
Evidence
Live at signagestack.com: pair a screen, schedule playlists around its working hours, keep playing from cache when the connection drops, and see what played in proof-of-play reports.
SignageStack public product homepage with its current orange branding and an example display showing weather, a clock, and an information ticker
Product overview · Public website capture · October 2026 · View source View full size

Make a screen
part of a system.

Digital signage needs more than an image on a television. Someone has to prepare content, assign it, set working hours, and manage what happens when a display loses its connection.

SignageStack pairs each display with a code, then lets operators manage screens, media, and playlists from the browser. Each screen has its own working hours: it plays its assigned content while open and goes dark outside those hours.

Bytesicht designed and implemented the operator experience, backend platform, media delivery, and player as parts of one product.

SignageStack public app catalogue excerpt showing category filters and apps with Live data, Works offline, and Needs an account labels
App catalogue excerpt · Public website capture · October 2026 · View source View full size

How the system connects

Editing, delivery, playback.

  1. Management application

    React tools prepare media, playlists, screen working hours, and display-app configuration.

  2. API & content delivery

    NestJS manages records and device updates. MongoDB stores application state; R2 stores media.

  3. Screen player

    Preact renders assigned content, persists a local snapshot, and prefetches media.

Backend connectors bring external data into the display payload. Device communication carries updates; media is delivered from object storage. This is a component overview, not a deployment topology.

Engineering decisions

Reliability is part
of the product.

Reusable apps connect content to the screen.

Menu boards, clocks, weather, and QR codes sit alongside Google Calendar, Sheets, Slides, Canva designs, and PDFs. Operators configure each app in the dashboard and preview the result before publishing.

A preview uses the actual renderer.

The dashboard and player mount the same display-app bundle. Shared configuration schemas define the editing form and the data the app expects. A new display app extends that contract, rather than requiring two separate rendering implementations.

Offline behavior depends on the content.

The player restores a saved snapshot and cached media before reconnecting. Apps that need a live data source are handled separately. This gives cached content a recovery path without pretending every integration works offline.

A loaded page is not proof of playback.

The native player reports update health only when content plays or the backend confirms a legitimate idle state. The watchdog can distinguish a successful page load from a player that is actually ready to display content.

Playback leaves a record.

Players report what ran and when. Coverage reports can be exported as PDFs for a screen or the fleet, or sent by email on a schedule.

Provider credentials stay on the backend.

The Google Calendar connector normalizes events into a shared payload. OAuth connections remain behind the API; the screen receives display data rather than provider credentials. Integration changes stay separate from screen layout.

Playback coverage matrix and scheduled monthly proof-of-play email illustrated on the SignageStack public product site; example data
Playback reporting · Public website illustration · Example data · View source View full size

Built with

React / NestJS / MongoDB / Cloudflare R2 / Preact / TypeScript / IndexedDB / Socket.IO

Current status

Live at signagestack.com, designed and built as a Bytesicht product. The platform includes screen management, display apps and integrations, cached playback, and proof-of-play reports, with players for Android, Windows, macOS, and the browser.

Build with Bytesicht

A product is more than its interface.

From management tools to connected devices, I can take responsibility for the software between them.

Discuss your project