DisplaySync

Dashboard tour

The dashboard at app.displaysync.live is your command center for an event. It runs in any modern browser; we use it on laptops, tablets, and (in a pinch) phones — though for phones the mobile app is faster.

This page is a structural tour: what each top-level section is for, what you'll find on each page, and the keyboard shortcuts worth remembering.

(New to DisplaySync? Start with Core concepts for the mental model — how Organization, Events, Signs, and Content nest — before diving into the dashboard surfaces below.)

Sign-in and org selection

After signing in (email/password or Google), you land on your default organization. If you belong to multiple orgs:

  • The org name appears in the top-right user menu — click it to switch
  • Each org has its own events, signs, and team

Roles within an org (owner, admin, member) determine what you can do. See Roles & permissions.

Top-level sections

The left sidebar surfaces two top-level destinations in V1:

SectionWho sees itWhat's there
EventsEveryoneEvery event in the current org, filtered by your event roles. The default landing page.
OrganizationOrg owners and adminsOrg details, members, invitations, billing, and the team-management UI.

Per-account preferences (password, notifications, push tokens) live in the user menu in the top-right.

Events

Default landing page. Lists every event in the current org.

Each row shows:

  • Event name + status badge (upcoming, active, completed, archived)
  • Venue + date range
  • Number of signs assigned
  • A live "online / total" sign counter that updates without refresh

Filtering: type-ahead search across event name + venue. Filters for status across the top.

Click an event to drop into the event detail.

Event detail

The most-used page on the dashboard once a show is running. It's a single page, not a tabbed one: a header, a stats strip, and the signs table.

The header

Event name, status badge, venue, date range, and sign count — plus two controls on the right:

  • Add Sign — a dropdown with two options: Pre-register Sign (Flow B from Claiming signs) and Claim by Code (manual short-code entry alternative to the QR).
  • The kebab () — everything else you can do to the event, described below.

On a narrow screen the kebab moves up next to the event name so it stays reachable.

The event kebab

One menu, grouped by what it touches. Items you don't have the role for simply aren't there:

ItemWho sees itWhat it does
Status boardEveryone on the eventOpens a read-only wall view of the event's signs in a new tab — see The status board
Edit EventManagersName, venue, dates, timezone
TeamEveryone on the eventThe event's team page: members, their event roles, and Add team member
Bulk update…ManagersPush the current sign app build to the fleet — see Bulk actions
Bulk refresh…ManagersReload content across the fleet now, or on a schedule — see Bulk actions
Watch / Unwatch eventEveryone on the eventSubscribes you to this event's notifications
Notification settingsEveryone on the eventPer-event notification preferences
Import CSV / Export CSV / Download TemplateManagersBulk sign records in and out
Archive / Unarchive EventManagersMoves the event out of the active view without deleting anything
Delete EventOrg owners and adminsPermanent. Blocked while the event still has signs — see below.

Per-event roles override org roles for event-specific actions; org owners and admins carry implicit event-manager privilege without needing an explicit row. Note that Delete Event is narrower than the rest: a plain event manager can edit and archive, but only an org owner or admin can delete.

An event with signs can't be deleted

If signs are still registered to the event, the delete dialog tells you how many and refuses: "This event still has 3 signs. Remove or unregister them first before deleting the event." Unregister the signs (or move them to another event) and the delete unlocks. Archiving has no such restriction.

The status board

Status board in the kebab opens the event on a screen of its own, in a new tab: no sidebar, no navigation, nothing to click — just the fleet, sized to be read from across a room. It's the view to leave up on a back-of-house monitor or a spare laptop during a show.

What's on it, top to bottom:

  • The event name and a live indicator. The board streams updates over the same live connection the dashboard uses, so it never needs a refresh. The indicator tells you whether that connection is currently up — worth a glance before you trust a quiet board.
  • The counts. Online, offline, and total, in numbers big enough to read at distance. Unlinked appears only when the event actually has unlinked sign records.
  • Needs Attention. Every sign that isn't online, worst first — offline before errors, before maintenance, before unlinked, and within each, longest-down first. Each tile carries the sign's name, its location, and how long it's been that way (6m, 1h 12m, 2d 3h).
  • Online. Everything that's healthy, in a compact grid underneath.

The header, counts, and attention band are pinned; only the online grid scrolls. On a 60-sign event the problems stay on screen no matter how many healthy signs there are.

It's read-only — there are no controls on it, deliberately, so a board on an unattended monitor can't be used to do anything to the fleet. It is not a public link, though: whoever opens it still signs in and still needs access to the event.

The signs table

Below a stats strip, every sign in the event in one sortable table: status dot, name, location, last seen, uptime, and content. A columns button adds Local IP, MAC, app version, resolution, and active network interface when you need them.

Above it: a search box and status filters (All / Online / Offline / …). Event managers also get a leading checkbox column — ticking rows raises the bulk action bar. See Bulk actions & schedules.

When a bulk wave is running, a Wave: 12/40 Running button appears beside the Signs heading. Click it to reopen the wave panel.

Click any sign row to drop into sign detail.

Sign detail (click any sign row)

The deepest page in the dashboard — everything about a single sign. A linked sign has four tabs:

  • Overview — the cards listed below
  • Content — assigned URL, content history
  • Analytics — a health verdict, uptime, network round-trip, and the Activity log
  • Settings — name, location, notes, removal

An unlinked sign (a record with no device attached yet) has no Analytics tab — there's no device to report on until one links in.

Overview tab

CardWhat it shows
Currently DisplayingWhat's on the wall right now (URL + render state)
UptimeConnected time — shown as Since joined or, during a live event, This event. Brief Wi-Fi reconnects don't count against it; only sustained dropouts do.
Sign InformationName, location, owning event, owning org
Current ContentThe assigned URL plus content type
Device InformationPlatform, OS version, hostname, app version, screen resolution, RAM, CPU — plus a live System Time row with the sign's clock-correction badge (Clock and displayed time)
NetworkIP, Tailscale IP, active interface, signal strength (Wi-Fi)
CommandsRefresh Content, Restart App, Reboot Device, Update Sign App, View Logs, Download Logs, Enter / Exit Background
Sign LogsLast fetched log bundle (download or copy)
Webpage URLEditable quick-set — save updates the kiosk within ~5 s
Sign SettingsPer-sign preferences (display orientation, audio defaults)
Danger ZoneUnlink, delete, reset

Every button on the Commands card explains itself when it can't be pressed. If the sign is offline they all grey out with "Sign is offline — commands cannot be sent."; below technician role you get "Requires technician role or higher on this event." Update Sign App carries its own state in the label — Up to date (1.6.3), Ahead of feed (…), or a version to install. See Remote control for what each command does, and background mode for what the Enter / Exit Background pair puts the sign into.

Content tab

The full content-management surface for this sign: assigned URL with edit history, content type, and (in V2 builds) the playlist / schedule attachment UI. In V1, this is where you set or change what URL the sign displays.

Analytics tab

The Analytics tab opens with a plain-language health verdictOperating normally, Needs a look, or Offline — so you can read a sign's status at a glance before digging into the numbers. Below it:

  • Uptime — connected time as Since joined or This event (the same figure as the Overview card above). A freshly-claimed online sign reads an honest number right away.
  • Server round-trip — the heartbeat round-trip time from the sign to the DisplaySync server (average and p95). This tracks venue Wi-Fi and server distance, not your internet speed.
  • Activity log — the sign's individual events as the kiosk emits them, filterable by State, Content, and Errors, with an optional telemetry-snapshot view. Export the current view as CSV or JSON. The dashboard formats each event for human reading; if you ever see a raw event name (e.g. frame_anomaly instead of "Frame anomaly detected"), the dashboard build is older than the formatter coverage.

Events surfaced in the Activity log:

  • frame_anomaly — sign reloaded after rendering as a blank frame
  • page_frozen — sign reloaded after the page stopped responding
  • process_crash — a renderer or helper process crashed (renderer auto-reloads; GPU/utility/plugin crashes are logged only)
  • display_removed — monitor unplug detected
  • power_event — Windows power state change (resume from sleep, etc.)
  • on-battery — laptop running on battery (relevant for non-AC kiosks)

See Stability over features → Self-healing signs for what these signals mean operationally.

Settings tab

Name, location, notes, plus the unlink / delete actions that mirror the Overview tab's Danger Zone.

Live updates: the dashboard subscribes to that sign's events over the WebSocket. State changes appear within ~1 second of the kiosk emitting them — no refresh needed.

Organizations

Owner/admin only. Per-org settings:

  • General — name, logo, default language, default time zone
  • Members — invite, change roles, remove
  • Invitations — pending email invitations and their expiry
  • Billing — current tier, usage (sign-days this month, signs in fleet, members), Stripe Customer Portal link for self-service updates
  • API keys (v2) — when programmatic access lands

Notifications panel

The bell icon top-right opens an in-app notification feed:

  • Sign offline / online recovery
  • Content unreachable / recovered

A red badge shows the unread count. Clicking a notification deep-links to the relevant sign/event/setting.

Notifications covers the matching email and push channels and how to subscribe.

Profile / Settings

  • Password — change it, enable 2FA (when v3 lands)
  • Connected accounts — Google sign-in linkage
  • Notification preferences — opt in/out per channel, per-event subscriptions
  • Push tokens — manage browser push registrations across devices

Real-time behavior

A few dashboard-wide patterns worth knowing:

  • The WebSocket reconnects automatically if your laptop sleeps, the venue Wi-Fi drops, or you switch tabs. Stale data is replaced as soon as the connection comes back.
  • Optimistic updates: when you save a URL, the dashboard shows the new value immediately. If the server rejects the change, the dashboard rolls back and surfaces the error.
  • Multi-tab sync: if you have two dashboard tabs open and someone (you or a teammate) changes a sign in one, the other updates within a second.

What's next

  • Mobile app — when you're walking the floor instead of sitting at a laptop
  • Remote control — exactly what each command on the sign detail page does
  • Bulk actions & schedules — the kebab's Bulk update / Bulk refresh modals and the wave panel
  • Monitoring — interpreting the health cards in detail