MENUSIGN TV documentation

Complete guide to the admin dashboard, screen editor, media library, team access, store hours, and TV players. Use the table of contents on desktop or scroll the section chips on mobile. For the fastest path: create a screen, add menu items, save, then pair your display with the 6-digit code.

Quick start

  1. Sign in at menusign.tv with your workspace email.
  2. Open Dashboard for a snapshot of screens, playlists, media, and devices.
  3. Go to Screens → Add Screen. Name the display and optionally assign a group.
  4. In the screen editor, add images or videos (upload or pick from Media).
  5. Click Save Screen — changes are not live on TVs until you save.
  6. Copy the 6-digit TV Pairing Code from the editor.
  7. On the TV, open the player at live.menusign.tv (or the Samsung / iOS app) and enter the code.
  8. Confirm the screen shows Online under Devices or in the screen editor.

Pro tip: Export all menu artwork at the same aspect ratio as your physical mount (16:9 landscape or 9:16 portrait) before uploading — see Image & video sizes.

Overview & concepts

MENUSIGN TV is a digital menu signage platform. You manage content in the web admin; each TV runs a player app that downloads the assigned menu and plays it full screen.

  • Organization — your workspace. All screens, media, and members belong to one organization.
  • Screen — one logical menu for one physical display. Each screen has its own pairing code and playlist.
  • Screen group — optional folder to organize many screens. Groups can share store open/close hours.
  • Menu item / playlist item— an image or video slot on a screen's menu, with order, duration, and rotation.
  • Media library — shared uploads reused across any screen.
  • Device — a paired TV identified by a device ID (often MAC-style). Linked to exactly one screen at a time.
  • Player — web, Samsung Tizen, or iOS app that pairs with a code and plays the menu.

Media is shared; menus are not. Each screen maintains its own ordered list of items unless you explicitly copy from another screen.

Dashboard

The dashboard at /dashboard is your home after sign-in.

  • Summary cards for Screens, Playlists, Media files, and TV Devices — each links to that section.
  • Quick counts help you see whether content or pairing is missing before opening a detail page.
  • Use the sidebar for day-to-day navigation; Dashboard is the overview only.

Screens & groups

All Screens page

  • Visual and List views — switch with the segmented control. Visual shows card thumbnails; List is compact for many screens.
  • Create group — organize screens (e.g. by location or brand). Drag screens between groups when editing.
  • Add screen — opens the screen editor for a new display.
  • Edit and Delete actions per screen or group (confirm before delete).
  • Store hours badge on groups when open/close scheduling is enabled.

Pairing

  1. Open a screen in the editor and note the 6-digit TV Pairing Code.
  2. On the display, launch the player (live.menusign.tv or native app).
  3. Enter the code. The device links to this screen only.
  4. Status becomes Online when the player heartbeats successfully.
  5. Use Disconnect in admin to force the player back to the pairing screen.

Each screen has a unique pairing code. A code cannot pair two TVs to different menus simultaneously — unpair first if reassigning hardware.

Screen editor

  • TV Preview — frame matching 16:9 (landscape) or 9:16 (portrait). Use the TV icon to set mount rotation (how the display is physically installed).
  • Per-item rotation — image icon on a thumbnail rotates individual content (0°, 90°, 180°, 270°).
  • Add Content— upload new files, pick from the media gallery, schedule start/end dates, or copy items from another screen's menu.
  • Menu Items — thumbnails for this screen only. Select an item; drag to reorder when Slide Mode is on.
  • Save Screen — publishes the menu and bumps the revision players listen for. Always save after edits.

Standard mode(Slide Mode off): one item is "live" on the TV — click the thumbnail to select it, then Save Screen.

Slide mode (Slide Mode on): all active items play as a slideshow — see Slide mode.

Store hours

Configure open and close times at the screen group level. When enabled, players receive a store_closed signal outside those hours and show a black screen until open.

EnableToggle on the group bar in Screens (list or visual view).
TimesOpen and close in local time (24h). Overnight ranges (e.g. 22:00–06:00) are supported.
OverridePer-screen overrides can inherit or replace group hours when configured in the editor.
PlayerPlaylist API includes store_hours; players refresh on the next poll or SSE event.

Saving group hours signals connected screens so TVs update without a manual reboot.

Slide mode (slideshow)

Turn on Slide Mode in the screen editor to run all active items as a slideshow.

SecSeconds each image stays on screen (images only)
VideosPlay their full length, then advance to the next slide
Sec lockedIf every item is a video, Sec is disabled
TransitionFade, slide, wipe, zoom, and other transitions between items
LoopAfter the last slide, return to the first
Video muteTVs often start muted; unmute in preview if you need sound on TV

After changing slide settings or menu items, click Save Screen. Players pick up changes within seconds via live updates or polling.

Media library

Central gallery at /media for all uploads.

View modes

CurrentDefault grid with large thumbnails — best on desktop
CompactDense grid for browsing many files on tablet or phone
ListRow layout with filename, type badge, and delete — best for long filenames

Upload & reuse

  • Drag files onto the upload area or click to browse. Large videos use resumable upload (up to 100 MB).
  • Deleting from Media removes the file from storage; remove it from screen menus first if still in use.
  • When editing a screen, Add Content → Gallery picks from this library without re-uploading.

Playlists

The Playlists page lists reusable playlist records in your organization. Screen menus are managed primarily in the screen editor; the Playlists section is useful for overview, legacy flows, and bulk playlist management.

  • Create playlists and attach items with duration and rotation metadata.
  • Assign or sync playlists to screens from the Screens workflow as your deployment uses.
  • Reorder items in the playlist detail view; changes follow the same Save / revision rules as screens.

Calendar

Calendar shows scheduled menu items across screens by date.

  • Set start and end dates when adding content in the screen editor (schedule fields).
  • Use Calendar to see what will appear on which day without opening each screen.
  • Items outside their schedule are skipped by the player automatically.

Devices & telemetry

Devices lists every TV that has paired with your organization. Each row reports both pairing state and live telemetry the player POSTs every 5 minutes.

Device IDUnique identifier (MAC for Tizen, prefixed UUID for FIRETV / IOS / WEB)
PlatformFire TV, iOS, Web, or Tizen — derived from the device_id prefix
ScreenWhich screen this device is currently linked to
StatusOnline when heartbeat is within 20 min; offline otherwise
RevisionPlaylist revision the device is actually showing — proves the menu update reached this TV
App versionPlayer app build the device is running (useful when rolling out updates)
Last errorMost recent error the player hit (network timeout, etc.) — surfaces issues without walking to the venue
Last seenUpdated every ~45s during open hours; every 15 min during closed hours (deep-idle mode)

Filter by status (Online / Offline / All), by platform (Fire TV / iOS / Web / Tizen), or search by MAC or screen name.

Disconnecting a device in admin clears the pairing session; the TV must enter the code again. The current pairing code stays the same — use Regenerate code on the screen panel if you want a fresh code for security.

TV players

Web player (browser)

  1. Open https://live.menusign.tv in the TV or tablet browser (many smart TV browsers work).
  2. Enter the 6-digit pairing code from the screen editor.
  3. Leave the tab open for continuous playback.
  4. After one successful online load, the web player can use cached playlist data offline.
  5. If admin disconnects the device, the player returns to the pairing screen.

Dedicated apps for LG webOS, Amazon Fire TV, Roku, and Android are not released yet. Use the web player on those platforms when a browser is available.

Samsung Tizen (native app)

  • Install the MENUSIGN package from Samsung Seller Office / sideload for development.
  • Same pairing API as web: POST pairing code + device_id, then poll playlist revision.
  • Supports slideshow vs single-item playback_mode and store_closed black screen.
  • Back / Return on the remote unpairs (same as Disconnect flow).

iOS / iPadOS / Apple TV

Use the native MENUSIGN TV player app for iPhone, iPad, and Apple TV (build from the project in apps/ios). Pair with the same 6-digit code; assets follow the same 16:9 / 9:16 rules as TVs.

Player URL: https://live.menusign.tv

Offline playback

Every paired TV keeps playing its assigned menu even with no internet at all. After one successful online sync each player stores the full playlist (JSON + every image + every video) locally.

Fire TV / Fire StickFull offline cache — playlist JSON + media files on internal storage. Plays indefinitely without network.
iOS / iPadOS / Apple TVSame — SlideMediaCache stores every URL under Application Support.
Samsung TizenIndexedDB-backed media cache (Tizen 3+). Same guarantee as Fire TV.
Web player (browser)IndexedDB + blob URLs. Browser HTTP cache holds media for 1 year (immutable).
  • A single network blip never disconnects a paired TV — three consecutive unpaired-status responses are required before unpair (matches every platform).
  • When the network returns, players auto-detect the revision change and refresh both playlist and media cache.
  • Store hours and slideshow timing run off the device's local clock, so they work the same online and offline.
  • Emergency takeover and force-refresh signals are buffered until network returns; players honor them on the next poll cycle.

Cold start, never online: a brand-new device that has never reached the API can't pair. Once paired at least once, the device handles offline indefinitely.

Live updates & force refresh

When you save a screen, change store hours, or push an emergency takeover, the paired TVs see the change in seconds rather than waiting for a poll cycle.

  • Force refresh button — on the screen connection panel, click Refresh to push a signal that connected players honor immediately (≤ 1 s on web, ≤ 12 s on Fire TV / iOS / Tizen).
  • SSE — web players subscribe to /api/screen/[id]/events for revision bumps and disconnect signals.
  • Polling fallback — Fire TV / iOS / Tizen poll the revision endpoint every 12 s during open hours, and every 15 min during store-closed hours (deep-idle mode).
  • Heartbeat POST every ~45s during open hours keeps Devices status Online; backs off to 15 min during closed.

Emergency takeover

Push a fullscreen message to every TV in the organization in one click — useful for power outages, surprise closures, fire drills, or limited-time promotional banners.

  1. Open the Screens page.
  2. Click Emergency takeover at the top.
  3. Pick a preset (Closed / Maintenance / Custom) or type a custom message.
  4. Optionally set an end time — the takeover auto-clears at that moment.
  5. Click Activate on all TVs. The red banner shows the takeover is live until you Clear it.
  • Web players switch within 1 second; Fire TV / iOS / Tizen within 12 s during open hours.
  • While takeover is active, the normal slideshow pauses on every TV.
  • Clearing the takeover resumes the assigned playlist automatically.
  • Every activate / clear is recorded in the Audit log.

Group bulk actions

When you operate multiple locations, you'll do the same thing on many screens at once. Group-level bulk actions save dozens of clicks.

  • Assign menu to group — click Assign menu on the group header, pick a playlist, and every screen in the group is updated in a single round-trip. Each connected TV gets a refresh signal so the new menu appears within seconds.
  • Group store hours — set open / close times once on the group; every screen in the group inherits them. Override per-screen if a specific location has different hours.
  • Group-wide signal — the store-hours signal endpoint pushes a refresh to every paired TV in the group when hours change.

Archive & restore

Both screens and playlists support soft-delete. Archive removes the item from the active list without losing its history; Restore brings it back.

  • Click the small Archive icon (next to Delete) on any screen or playlist row.
  • Archived items disappear from the main list. A banner at the top shows "N archived hidden — Show archived."
  • Click Show archived to view them; each row has a Restore icon to bring it back.
  • Hard Delete is still available and still cascades (linked devices unassigned, items deleted). Archive is the safer default for items you might want back.

Audit log

Every sensitive admin action is recorded with actor email, target, timestamp, and a JSON metadata blob. Open the Audit log page from the sidebar (Owner / Admin only).

Actions logged

  • Screen force refresh
  • Screen pairing code regenerated
  • Screen device disconnected
  • Screen archived / restored
  • Playlist archived / restored
  • Group menu assigned (bulk)
  • Emergency takeover set / cleared
  • Media orphan cleanup

Filters

  • By action (dropdown of values actually present)
  • By actor email (substring search)
  • By time range (Last 24h / 7 days / 30 days / 90 days / All)

Image & video sizes

One rule for every display. Export at the correct aspect ratio for how the screen is mounted — not the exact pixel size of each TV model. Use the same files on smart TVs, the web player, and iOS.

Match media to mount orientation. The player uses a 16:9 landscape frame when horizontal, and 9:16 portrait when vertical (90° or 270° mount rotation in the editor).

Landscape16:9 — e.g. 1920×1080 (Full HD) or 3840×2160 (4K)
Portrait9:16 — e.g. 1080×1920 or 2160×3840
All devicesRatio matters more than exact resolution
ImagesFit inside the frame (letterboxing possible if aspect differs)
VideosFill the frame (edge-to-edge; may crop slightly)

Landscape 16:9

  • Ideal: 1920 × 1080 px
  • Also fine: 1280 × 720, 3840 × 2160
  • Ratio: width ÷ height ≈ 1.78

Portrait 9:16

  • Ideal: 1080 × 1920 px
  • Also fine: 720 × 1280, 2160 × 3840
  • Ratio: height ÷ width ≈ 1.78

Align TV Preview mount rotation with the physical display before exporting artwork.

Formats & limits

ImagesJPG, PNG, GIF (JPG for photos, PNG for graphics)
VideosMP4 (H.264) recommended; WebM and MOV supported
Max video100 MB per file (resumable upload)
AvoidTiny images on 4K TVs; portrait files on landscape mounts

Media cleanup

Files keep accumulating in your media bucket as menus evolve. The Media library page exposes a one-click cleanup that finds files no playlist item references.

  1. Open the Media library.
  2. Click Clean up unused at the top-right.
  3. You see a preview: "N files, X MB." Confirm to delete, or cancel.
  4. All orphaned files are removed in a single round-trip.
  5. The action is recorded in the Audit log with file names + total bytes freed.

Owner or Admin role required. Editor role can't run cleanup.

Members & roles

Owners and admins manage team access at /members.

OwnerFull access, including members and ownership
AdminManage content and team members (except owner)
EditorEdit screens, playlists, and media only
  • Invite by email; pending invites appear until the user accepts.
  • Only owners can transfer ownership or demote the last owner.
  • Editors can change screens and media but cannot manage billing or all member actions.

Settings

Settings covers your account email, member role display, display defaults, and system information for the workspace.

  • Theme follows your browser or the in-app light/dark toggle in the sidebar.
  • Password changes use Supabase Auth email flows (reset link from login).

Pricing & billing

Per-screen pricing — pay only for what you put on a screen. All plans include the full admin and every TV player, with offline playback on all four platforms.

Free$0 — 1 screen, no card, all core features
Starter$9 / screen / month (up to 4 screens) — audit log + offline + store hours
Reliability$12 / screen / month (5–25 screens) — adds per-device telemetry, force refresh, emergency takeover, priority email support
Multi-location$15 / screen / month (25–100 screens) — adds group bulk-assign, soft delete + restore, members + roles, orphan media cleanup
Enterprise$25 / screen / month, min 100 screens — adds SAML SSO, custom domain, dedicated CSM, uptime SLA
  • Annual billing saves 20% on every paid tier.
  • Billing appears in the sidebar for owners only. Admins and editors don't see it.
  • Hardware (e.g. Fire TV Stick) is not included — buy direct from the manufacturer.
  • For enterprise contracts, custom invoicing, or onboarding help, email [email protected].

API reference

TV-facing routes are public (CORS-enabled) and use the service role on the server. Admin routes require Supabase session cookies.

POST /api/device/pairBody: pairing_code (6 digits), device_id. Links device to screen.
GET /api/device/{mac}Returns screen_id assigned to device (or null).
GET /api/screen/{id}/playlistFull playlist, revision, playback_mode, store_hours, store_closed.
GET /api/screen/{id}/eventsSSE stream for revision / store-hours updates.
POST /api/device/update-last-seenBody: device_id. Heartbeat for Online status.

Example playlist item fields: url, type, duration, rotation, aspect_ratio.

Troubleshooting

  • Black or white bars on images — wrong aspect ratio; re-export at 16:9 or 9:16 or fix mount rotation in preview.
  • Video text cropped — videos fill the frame; keep text in the center safe area.
  • TV not updating — click Save Screen; confirm device is Online; refresh the player tab.
  • Invalid pairing code — use the code from the same screen; check for typos; ensure API host matches your admin deployment.
  • Upload fails — use MP4 H.264 under 100 MB; check network; retry resumable upload.
  • Store closed black screen — expected outside group store hours; adjust hours or disable on the group.
  • Dev server chunk 404 — stop stale next dev processes and run npm run dev:clean.

Glossary

Pairing code6-digit code unique per screen for TV setup
RevisionInteger bumped on save; players detect changes
Playback modeslideshow (all items) or single (one live item)
Mount rotationPhysical TV orientation in the editor frame
Content rotationPer-item rotation of an image or video
store_closedAPI flag telling players to show a black screen
RLSRow Level Security — Postgres rules for tenant isolation

Support

For account, billing, or technical help, email [email protected]. Include your organization name, screen name, and device ID when reporting player issues.

Admin: https://menusign.tv · Player: https://live.menusign.tv