Card templates

A template is a string key into a registry of React components compiled into the desktop app. The wire carries data only — the cards below are rendered live by the same component the app uses.

text — default fallback

The generic notification, and the fallback for unknown template keys: nothing is ever dropped.

data fieldtypenotes
titlestringdefaults to "Notification"
bodystringoptional body text
iconstringoptional emoji
accentstringoptional hex color
payload
{
  "template": "text",
  "data": {
    "title": "Nightly backup complete",
    "body": "412 MB uploaded to R2 in 38s.",
    "icon": "🌙"
  }
}
🌙Nightly backup complete
412 MB uploaded to R2 in 38s.

deploy — build / deploy status

data fieldtypenotes
titlestringdefaults to "Deploy"
status"ok" | "fail"drives color, icon and badge
branchstringoptional, monospace
commitstringoptional, monospace
durationstringoptional, monospace
payload
{
  "template": "deploy",
  "data": {
    "title": "Build finished",
    "branch": "main",
    "commit": "a1b2c3d",
    "status": "ok",
    "duration": "2m13s"
  }
}
Build finished
Success
Branchmain
Commita1b2c3d
Duration2m13s

alert — leveled alert

data fieldtypenotes
level"info" | "warn" | "critical"drives color and icon
titlestringdefaults to "Alert"
messagestringoptional body
sourcestringoptional footnote
payload
{
  "template": "alert",
  "data": {
    "level": "critical",
    "title": "Disk usage above 90%",
    "message": "Volume /dev/sda1 on web-01 is at 93% capacity.",
    "source": "node-exporter"
  }
}
🚨Disk usage above 90%
Volume /dev/sda1 on web-01 is at 93% capacity.
Source: node-exporter

Style overrides

Any template accepts a top-level style object: accent recolors the card edge, icon replaces the default emoji, and urgency hints toast behavior. Template defaults win when omitted.

Notify — a quiet notification center for builders.