An edge app is a web application plus a screenly.yml manifest. Everything below is done with the CLI.
The loop
screenly edge-app validate
screenly edge-app run --generate-mock-data
screenly edge-app deployValidate checks the manifest before anything reaches a screen. Run it first, and run it in CI.
Run starts the app locally against generated mock data, so you can develop without a device and without touching your workspace.
Deploy ships it. Every screen running the app picks up the new version on its next sync.
Creating and naming
edge-app create makes the app, rename changes its name, and delete removes it.
Settings
edge-app setting list and edge-app setting set work with the fields your manifest declares.
Settings are ordered as declared in the manifest, so the order in your screenly.yml is the order somebody sees in the dashboard. Put the field they must fill in first.
Settings can also be conditionally visible, using depends_on, so an option only appears once a prior choice makes it relevant. That is worth using: a form with eight fields where three are irrelevant is a form people get wrong.
Instances
edge-app instance list, create, update, delete.
An instance is the app plus one configuration, and it is the instance that goes in a playlist. One app can have many. See Instances.
Where it runs
On a Screenly player or Player Max, the app runs on the device. On some Screenly Anywhere platforms it is rendered on our infrastructure and sent as an image instead.
An app that depends on running locally, animating or reacting between refreshes, will not behave the same on Screenly Anywhere. Test on the hardware you are targeting. The local emulator or a player is the right place to develop a dynamic app.
See Where an app runs.
The full reference
The manifest schema, the JavaScript API available to your app, the branding values, and the deploy model are at developer.screenly.io.