Multi-tenant CMS. Offline-first players. Real-time content sync. From restaurant menu boards to retail video walls — manage thousands of screens from one dashboard.
Cloud-managed content. Offline-first playback. Two pieces, perfectly in sync.
Multi-tenant content management built on Next.js + Prisma. Drag-and-drop schedule editor, zone-based template designer, campaign day-parting, and real-time push to every screen.
Offline-first Flutter player with hardware-accelerated video, kiosk mode, watchdog restart, and 60s manifest polling with hash-based change detection.
Build multi-zone layouts for portrait, landscape, and video walls. Each zone runs its own playlist — split a screen into menu boards, tickers, and promos.
Day-of-week and time-of-day rules. Priority-based resolution when campaigns overlap. Targeted to screens, groups, or whole locations.
Span content across 2x2, 3x3, or any grid. Per-screen bezel compensation, automatic crop coordinates, seamless content stitching.
Push critical messages or assets to every screen in seconds. Auto-expiry, location-scoped, audit-logged — emergencies handled cleanly.
Refresh content, capture screenshots, reboot devices, clear cache, push messages — six remote commands acknowledged with status updates.
Show breakfast menus from 6–11am, lunch promos at noon, happy-hour banners from 4–6, dinner highlights all evening. Day-of-week rules, priority overrides, and automatic rollover — your screens stay relevant from open to close.
2x2 retail walls. 3x3 corporate lobbies. 4x1 menu boards. Define grid dimensions, set bezel offsets, and every player renders only its slice. Frame-accurate, automatic, and seamlessly stitched.
Override every screen in a location with a message or asset in under a second. Auto-expires when the situation ends. Every override is audit-logged.
Run a menu loop, a news ticker, and a promo banner on the same screen — each zone schedules independently. Designed for menu boards and information walls.
No plugins. No add-ons. No hidden fees. Enterprise features from day one.
Manage every location from one dashboard with timezone-aware scheduling
Split screens into menu, ticker, and promo zones with independent playlists
Time-of-day and day-of-week rules with priority-based resolution
2x2, 3x3, or any grid with bezel compensation and synced playback
SQLite manifest cache + 2GB LRU asset cache keep screens running
Instant takeover with auto-expiry, location-scoped and audit-logged
Refresh, screenshot, reboot, clear cache, push message — six commands
tRPC tenant procedures, query filters, audit logging, role-based access
Hash-based manifest comparison and SHA-256 asset verification
2GB local cache with automatic eviction — recent content always ready
Playback logs, heartbeat metrics, uptime tracking — see what played
Native cloud asset storage with SAS-signed URLs and tenant quotas
Day-parted menu boards, promo loops, kitchen status displays, and drive-thru screens.
Window displays, in-aisle screens, video walls at entrances, dynamic price boards.
Hotel lobby walls, in-room channels, event-day messaging, concierge displays.
Patient education screens, waiting-room rotation, wayfinding, emergency messaging.
Campus directories, classroom announcements, event schedules, athletic displays.
Visitor welcome displays, internal comms walls, KPI dashboards, town-hall live feeds.
Internet goes down? Your screens don't. Every player keeps playing cached content and reconciles when the connection returns.
SSE push for instant manifest updates · 60s heartbeat reporting
Cached manifest + local assets keep every screen playing
Heartbeat + playback log outbox flush when connection returns
“Our internet dropped during a Friday-night rush — every screen kept playing exactly what it should. Customers had no idea anything was wrong.”
“Day-parting saved us hours every week. We set the rules once and the right menu just appears at the right time on every screen.”
“We pushed an emergency closure message to 240 screens in under a second. That kind of speed isn't a feature, it's a safety net.”
Get started in minutes. No credit card required. Full access to every feature during your trial.