Get Started with Aeion Signage
Set up your first digital display in 5 steps. AI slide generation, playlists, scheduling, and live data bindings—all in under 20 minutes.
Create Your First Project
Go to Signage → Projects and click New Project.
- Enter a project name (e.g., "Summer Sale 2026")
- Choose a template or start blank
- Set canvas resolution for your display type:
Default slide settings:
typescript
{
duration: 10, // seconds per slide
transition: "fade", // crossfade between slides
transitionDuration: 500, // ms
backgroundColor: "#FFFFFF"
}
Or generate with AI:
- Click Generate with AI button
- Enter prompt: "retail summer sale, bold colors, product images, energetic feel"
- AI generates 5-8 slides with layout, elements, backgrounds
- Edit any slide before saving
Register Your Displays
| Setting | Description |
|---|---|
| Name | Friendly name for display |
| Location | Physical location (for organization) |
| Display Group | Optional group membership |
| Resolution | Width × Height in pixels |
| Orientation | landscape or portrait |
| Platform | OS running display client |
| Timezone | Display's local timezone for scheduling |
Build a Playlist
| Type | Description | Use Case |
|---|---|---|
| projectId | Full project | Most common—entire deck |
| slideId | Single slide | Individual slide highlight |
| motionSceneId | 3D scene | Spatial/Motion Studio content |
Schedule Content
| Pattern | Use Case |
|---|---|
| once | Single promotion day |
| daily | All-day every day |
| weekly | Specific weekdays |
| custom | Flexible patterns |
Enable Data Bindings
| Source | Examples |
|---|---|
| commerce | orders.todayCount, orders.todayRevenue, products.count, inventory.low |
| crm | deals.pipelineValue, contacts.newToday, activities.pending |
| collab | activeUsers, messagesToday, unreadCount |
| media | uploadsToday, storageUsed |
| custom | external.weather, stocks symbol |
Quick Reference
Display Setup API:
```bash # Register display POST /signage/displays/register
# Send heartbeat (display client) POST /signage/displays/{id}/heartbeat { "ipAddress": "192.168.1.50", "currentSlideId": "slide-123", "uptimeSeconds": 3600, "performanceProfile": "standard" }
# Get pending commands GET /signage/displays/{id}/command ```
Remote Operations:
```bash # Send command to display POST /signage/displays/{id}/command { "type": "refresh" }
# Screenshot capture POST /signage/displays/{id}/screenshot
# Set volume POST /signage/displays/{id}/command { "type": "set-volume", "payload": { "level": 50 } } ```
Slide Editor API:
```bash # Create slide POST /signage/slides { "projectId": "uuid", "label": "My Slide" }
# Reorder slides POST /signage/slides/reorder { "projectId": "uuid", "orderedIds": ["id1", "id2", "id3"] }
# Duplicate slide POST /signage/slides/{id}/duplicate
# Apply theme POST /signage/projects/{id}/apply-theme { "themeId": "uuid" } ```
AI Slide Generation:
```bash # Generate deck POST /signage/ai/generate { "description": "retail summer sale, bold colors", "slideCount": 6 }
# Generate campaign POST /signage/ai/generate-campaign { "description": "morning specials across all locations", "displayTypes": ["retail", "menu-board"] } ```
A/B Testing:
```bash # Create test POST /signage/ab-tests { "name": "Red vs Blue CTA", "variantA": { "slideId": "slide-red" }, "variantB": { "slideId": "slide-blue" }, "displayIds": ["display-1", "display-2"] }
# Evaluate results GET /signage/ab-tests/{id}/results ```
Data Binding Syntax:
{{ path.to.data }}
{{ commerce.orders.todayCount }}
{{ commerce.orders.todayRevenue | currency:"USD" }}
{{ weather.current.temperature | prefix:"°F" }}
FAQ
The Aeion Bridge desktop app includes the signage player. Download Bridge, install on your display device (Raspberry Pi, mini PC, Android device), and register via QR code or manual entry.
Yes. Playlists are resolved with all referenced slide content on heartbeat. Displays cache the content and render without internet. Sync updates on reconnect.
Commands are queued server-side. On each heartbeat, the server includes pending commands in the response. Display executes them and they're cleared from the queue.
Priority determines which schedule wins. The schedule with the higher priority number plays. Equal priorities: most recently created wins.
Use the `{{ path }}` syntax in slide element content. Aeion resolves these against the live data APIs of the target module in real time. Configure refresh intervals per binding.
Yes. Create an A/B test with two variants (different slides). Assign display(s) to the test. Aeion collects dwell time data and auto-selects the winner once statistical significance is reached (p < 0.05).
A **project** is a collection of slides with shared theme, background, and settings. A **playlist** is an ordered sequence of projects, slides, or motion scenes for continuous playback.
Use the Motion Studio module to create 3D scenes. Link motion scenes to playlists via `motionSceneId`. Displays with WebGL support render the 3D scene.
Configurable per display, default 60 seconds. High-traffic displays can use shorter intervals (30s). Low-power devices can use longer intervals (120s+).
Yes. Use display groups. Send commands to a group and all member displays receive them. Schedule content to a group and all displays in the group show the same playlist.