Signage Architecture & Technical Specs
AI slide generation, master slide system, display heartbeat monitoring, live data bindings, statistical A/B testing, and more.
Capability Breakdown & Metrics
Slide Editor
— Slide CRUD, element manipulation, master slides, theme application, revision history
Template Library
— Pre-built templates, variable substitution, clone/customize
AI Design Engine
— Deck generation, auto-layout, theme suggestions, campaign creation
Display Management
— Display registration, heartbeat, command queuing, QR codes
Bulk Import
— CSV/Excel import, template mapping, validation
Live Data Bindings
— Live data bindings, conditional styles, number formatting
Remote Operations
— Remote commands, screenshot capture, reboot scheduling
Scheduling Engine
— Time-based scheduling, priority override, recurrence
Playlist Management
— Playlist CRUD, content resolution, loop/shuffle
Export
— JSON/PDF export, backup, migration
Presentation Mode
— Live presentation, projector mode, preview
A/B Testing
— Statistical significance testing, auto-winner selection
Background Processing
— Async job management for rendering and bulk operations
1. Slide Editor
| Property | Description |
|---|---|
| Position & Size | x/y coordinates, width, height |
| Rotation | Rotate any element to any angle |
| Content & Style | Element-specific content (text, image source, etc.) and visual styling |
| Locked / Visible | Lock elements in place, or hide them without deleting |
| Layer Order | Control which elements appear in front |
| Property | Default |
| ---------- | --------- |
| Label | "Slide N" |
| Layout | Blank |
| Background color | White |
| Background gradient | None |
| Background image | None |
| Transition | Fade |
| Transition duration | 500ms |
| Duration | 10 seconds |
| Elements | Empty (add your own) |
| Hidden | False |
| Speaker notes | Empty |
| Capability | Description |
| ----------- | ------------- |
| Create | Add a new slide to the end of your deck |
| Edit | Update any slide's content or layout |
| Delete | Remove a slide (deck adjusts automatically) |
| Duplicate | Clone a slide, ready to customize |
| Reorder | Drag-and-drop to resequence your deck |
| Apply Theme | Push colors/fonts/spacing to every slide at once |
| Apply Master | Sync a slide to your master layout |
| Revision History | Snapshot and roll back to earlier versions |
2. AI Design Engine
| Element Type | Configurable Properties |
|---|---|
| Text | text, font size, font family, color, alignment, bold, italic |
| Shape | shape type, fill, stroke, stroke width |
| Image | source, fit, opacity |
| Video | source, volume, autoplay, loop |
| Ticker | text, speed, direction, pause on hover |
| QR Code | data, size, color, background color |
| Web Frame | URL, background color |
3. Display Management
| Command | Payload | Description |
|---|---|---|
| refresh | - | Reload current playlist |
| restart | - | Restart the player app |
| update-playlist | playlistId | Switch to new playlist |
| show-message | { text, duration, type } | Show overlay message |
| set-volume | { level: 0-100 } | Set volume level |
| set-brightness | { level: 0-100 } | Set display brightness |
| Profile | Use Case | |
| --------- | ---------- | |
| high | 4K displays, complex animations | |
| standard | 1080p, typical content | |
| low | Limited hardware, simple slides |
4. Live Data Bindings
| Path Pattern | Source | Example |
|---|---|---|
| commerce.\* | Commerce module | orders.todayCount, products.totalActive |
| crm.\* | CRM module | deals.pipelineValue, contacts.totalCount |
| files.\* | Files module | uploads.todayCount, storage.used |
| events.\* | Events module | attendees.registered, sessions.totalCount |
| helpdesk.\* | Helpdesk module | tickets.openCount, satisfaction.score |
| Format | Input | Output |
| -------- | ------- | -------- |
| compact | 1234 | 1.2K |
| full | 1234 | 1,234 |
| none | 1234 | 1234 |
5. A/B Testing
| Metric | Description |
|---|---|
| Average dwell time | Average time viewers spend on variant |
| Dwell time variance | Variance in dwell time |
| Sample size | Number of viewers |
| Engagement rate | Percentage engaging with content |
6. Scheduling Engine
| Pattern | Behavior |
|---|---|
| once | Single day, no recurrence |
| daily | Every day in date range |
| weekly | Specific days of week |
| custom | User-defined pattern |
7. Additional Capabilities
Playlist Management:
- Ordered playlists with reference to projects, slides, or motion scenes
- Per-item duration/transition overrides
- Content resolution for offline playback
- Loop and shuffle modes
- Transition between items
Presentation Mode:
- Projector mode: full-screen, hidden UI
- Preview mode: in-browser preview
- Presenter notes view
- Manual slide navigation
- Auto-play with timing
Export:
- JSON export for backup/migration
- PDF export for print
- Project metadata included
- Playlist content resolved
Bulk Import:
- CSV/Excel import for bulk content
- Template mapping for structure
- Validation before import
- Progress tracking
- Rollback on failure
Template Library:
- Pre-built templates: retail, corporate, healthcare, education, wayfinding, menu boards
- Variable substitution in templates
- Clone and customize
- Category filtering
Remote Operations:
- Remote screenshot capture
- Screenshot-based health checks
- Reboot scheduling
- Volume/brightness control
Background Processing:
- Background job management for content processing
- Automatic retries on failure
8. Matrix Tiling Video Walls + Interactive DOOH
Matrix Tiling (software video walls). A traditional N×M video wall (e.g. a 3×3 grid of nine TVs) needs a ~$10K hardware splitter/processor. Aeion does it in software:
- Each display is assigned a position in the grid (its row/column coordinate), with a per-display bezel offset field to account for the physical frame gap between screens.
- Each panel scales its full player surface up by the grid's column/row multiple (e.g. a 2×2 wall renders content at 200% width/height) and translates it by its own row/column index, so only that panel's slice of the whole wall lands in its viewport — no per-panel hardware splitter needed.
- Sync uses a CRDT-style clock shared in real time across every panel. The primary display (row 0, column 0) broadcasts the playhead time; every other panel snaps to the shared timestamp, holding sub-frame alignment with no master cabling.
Interactive DOOH (phone-as-remote + instant buy). When an interactive 3D scene plays, the display overlays a pairing QR code. Scanning it opens a remote control on the visitor's phone, paired in real time over Aeion Realtime. Joystick input on the phone spins and manipulates the on-screen product live, and tapping "Buy Now" drops the exact SKU into the phone's cart and triggers a success animation on the billboard.
Master slides provide base styling that slides inherit. When a master is applied to a slide:
1. Clone all master placeholder elements with new IDs
2. Filter slide's existing elements: keep non-placeholders, discard placeholders
3. Merge: cloned master elements + existing non-placeholders
4. Re-compute z-index (1 to N)
5. Inherit: background color/image/gradient, transition, duration
6. If slide already has explicit values, they override master defaults
1. Display client polls server every N seconds (configurable, default 60)
2. Heartbeat payload includes: IP, current slide, uptime, hardware metrics
3. Server looks up pending commands for this display
4. Commands returned in heartbeat response (display executes them)
5. Commands cleared from queue after acknowledgment
6. If display offline, commands accumulate in queue
Each binding has a configurable refresh interval:
1. When slide is rendered, binding is evaluated
2. If cache TTL exceeded, fetch fresh data
3. Substitute `{{path}}` in element content
4. Evaluate conditional styles based on value
5. Apply number formatting, prefix/suffix
6. Cache result for the refresh interval duration
Welch's t-test compares two variants:
1. Collect: mean, variance, sample size for each variant
2. Require minimum 30 samples per variant
3. Calculate t-statistic: (meanB - meanA) / sqrt(varA/nA + varB/nB)
4. Calculate p-value from t-statistic (two-tailed)
5. If p-value < 0.05 → statistically significant
6. Winner is variant with higher mean
7. If not significant → continue collecting data