Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
635d946
docs(edge-apps): restructure READMEs with consistent format and tables
nicomiguelino Feb 12, 2026
6206513
Update edge-apps/weather/README.md
nicomiguelino Feb 12, 2026
6090db6
Update edge-apps/clock/README.md
nicomiguelino Feb 12, 2026
04e0f3f
fix(clock): correct README settings to match manifest
nicomiguelino Feb 12, 2026
7602044
Update edge-apps/weather/README.md
nicomiguelino Feb 12, 2026
16464ec
Update edge-apps/simple-timer/README.md
nicomiguelino Feb 12, 2026
0cf3741
fix(cap-alerting): restore NWS documentation and fix setting names
nicomiguelino Feb 12, 2026
8f429ad
fix(menu-board): add default items documentation and missing settings
nicomiguelino Feb 12, 2026
5fea868
docs(cap-alerting): add Playlist Priority Integration section
nicomiguelino Feb 12, 2026
089a99e
style: format simple-timer and weather READMEs
nicomiguelino Feb 12, 2026
4e38f20
fix(cap-alerting): fix line length in Playlist Priority section
nicomiguelino Feb 12, 2026
e749441
fix(qr-code): correct README settings to match manifest
nicomiguelino Feb 12, 2026
ee40e11
fix(grafana): add missing display_errors setting to README
nicomiguelino Feb 12, 2026
9975cb6
Update edge-apps/weather/README.md
nicomiguelino Feb 12, 2026
49a16a8
chore(weather): fix formatting
nicomiguelino Feb 12, 2026
7f86395
added new apps and fix order
salmanfarisvp Feb 13, 2026
01a25e1
Update edge-apps/simple-timer/README.md
salmanfarisvp Feb 13, 2026
659fe3f
docs: remove global settings from clock and weather READMEs
nicomiguelino Feb 13, 2026
6101092
docs(menu-board): add item settings to configuration table
nicomiguelino Feb 13, 2026
5511983
docs(menu-board): use zero-padded notation for item settings
nicomiguelino Feb 13, 2026
c52e945
Merge branch 'master' into docs/restructure-edge-app-readmes
nicomiguelino Feb 13, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 7 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,20 +13,24 @@ If you are not familiar with Edge Apps, we suggest you review our [developer doc
- [BambooHR App](https://github.com/Screenly/Playground/tree/master/edge-apps/bamboo-hr-app) - Displays employee birthdays, work anniversaries and other HR events from BambooHR.
- [Calendar App](https://github.com/Screenly/Playground/tree/master/edge-apps/calendar) - A simple calendar app that shows events from iCal data.
- [CAP Alerting](https://github.com/Screenly/Playground/tree/master/edge-apps/cap-alerting) - Display Common Alerting Protocol (CAP) emergency alerts on Screenly digital signage screens.
- [CharlieHR App](https://github.com/Screenly/Playground/tree/master/edge-apps/charlie-hr-app) - Displays employee birthdays, work anniversaries and other HR events from CharlieHR.
- [Clock App](https://github.com/Screenly/Playground/tree/master/edge-apps/clock) - A simple clock app.
- [Countdown Timer](https://github.com/Screenly/Playground/tree/master/edge-apps/countdown-timer) - A simple countdown timer app.
- [CharlieHR App](https://github.com/Screenly/Playground/tree/master/edge-apps/charlie-hr-app) - Displays employee birthdays, work anniversaries and other HR events from CharlieHR.
- [Fake Dashboard](https://github.com/Screenly/Playground/tree/master/edge-apps/fake-dashboard) - A simple fake dashboard screen to display simulated website analytics, including live visitor count, traffic sources, and device usage.
- [Flying Toasters App](https://github.com/Screenly/Playground/tree/master/edge-apps/flying-toasters) - A simple toaster app that flies around the screen.
- [Google Calendar App](https://github.com/Screenly/Playground/tree/master/edge-apps/google-calendar) - A simple calendar app that shows events from Google Calendar.
- [Grafana Dashboard](https://github.com/Screenly/Playground/tree/master/edge-apps/grafana) - Displays Grafana dashboards as images on Screenly screens with automatic refresh intervals.
- [iFrame App](https://github.com/Screenly/Playground/tree/master/edge-apps/iframe) - A simple iFrame app.
- [iframe App](https://github.com/Screenly/Playground/tree/master/edge-apps/iframe) - A simple iframe app.
- [Menu Board App](https://github.com/Screenly/Playground/tree/master/edge-apps/menu-board) - A dynamic and responsive menu board for digital signage displays.
- [Outlook Calendar App](https://github.com/Screenly/Playground/tree/master/edge-apps/outlook-calendar) - A simple calendar app that shows events from Outlook Calendar.
- [Power BI](https://github.com/Screenly/Playground/tree/master/edge-apps/powerbi) - A Power BI Edge App for securely accessing dashboards and reports.
- [QR Code Generator](https://github.com/Screenly/Playground/tree/master/edge-apps/qr-code) - An example of how to build unique QR Codes that embeds the screen metadata as UTM parameters.
- [RSS Reader](https://github.com/Screenly/Playground/tree/master/edge-apps/rss-reader) - A simple RSS reader.
- [Simple Message App](https://github.com/Screenly/Playground/tree/master/edge-apps/simple-message-app) - A simple message app.
- [Simple Table App](https://github.com/Screenly/Playground/tree/master/edge-apps/simple-table-app) - A minimalist edge app for Screenly that displays CSV data as a beautifully formatted table.
- [Simple Timer App](https://github.com/Screenly/Playground/tree/master/edge-apps/simple-timer) - A simple timer app.
- [Sonar Dashboard](https://github.com/Screenly/Playground/tree/master/edge-apps/sonar-dashboard) - A dashboard that displays the status of the [Sonar - BLE Device Counter](https://github.com/Viktopia/sonar).
- [Strava Club Leaderboard](https://github.com/Screenly/Playground/tree/master/edge-apps/strava-club-leaderboard) - A leaderboard of Strava club activities.
- [Simple Message App](https://github.com/Screenly/Playground/tree/master/edge-apps/simple-message-app) - A simple message app.
- [TFL Bus Status App](https://github.com/Screenly/Playground/tree/master/edge-apps/tfl-bus-status) - An app to display TFL Bus Status for a given bus stop. A list of all bus stops can be found here - [Bus Stop Lookup Tool](https://playground.srly.io/edge-apps/helpers/tfl/bus-stop-lookup/)
- [Weather App](https://github.com/Screenly/Playground/tree/master/edge-apps/weather) - A simple weather app.
- [Welcome App](https://github.com/Screenly/Playground/tree/master/edge-apps/welcome-app) - A customizable welcome screen app.
Expand Down
61 changes: 45 additions & 16 deletions edge-apps/cap-alerting/README.md
Original file line number Diff line number Diff line change
@@ -1,23 +1,43 @@
# CAP Alerting Edge App
# Screenly CAP Alerting App

Display Common Alerting Protocol (CAP) emergency alerts on Screenly digital signage screens. Designed to work with [Override Playlist](https://developer.screenly.io/api-reference/v4/#tag/Playlists/operation/override_playlist) to automatically interrupt regular content when alerts are active.
Display Common Alerting Protocol (CAP) emergency alerts on Screenly digital signage screens. Designed to work with Screenly's [Playlist API](https://developer.screenly.io/api_v4/#update-a-playlist) (`PATCH /v4/playlists`) to automatically interrupt regular content when alerts are active by setting the playlist priority.

## Settings
## Getting Started

- **CAP Feed URL**: URL or relative path to your CAP XML feed (required)
- **Display Errors**: Show errors on screen for debugging purposes (default: `false`, advanced setting)
- **Default Language**: Preferred language code when multiple languages are available (default: `en`)
- **Maximum Alerts**: Maximum number of alerts to display simultaneously (default: `Infinity`)
- **Mode**: Operation mode - Production, Demo, or Test (default: `production`)
- **Refresh Interval**: Minutes between feed updates (default: `5`)
```bash
bun install
```

## Deployment

Create and deploy the Edge App:

```bash
screenly edge-app create --name my-cap-alerting --in-place
bun run deploy
screenly edge-app instance create
```

## Configuration

## Modes
The app accepts the following settings via `screenly.yml`:

| Setting | Description | Type | Default |
| ------------------ | ---------------------------------------------------------------- | ------------------ | ------------ |
| `cap_feed_url` | URL or relative path to your CAP XML feed | required | - |
| `display_errors` | Display detailed error messages on screen for debugging purposes | optional, advanced | `false` |
| `language` | Preferred language code when multiple languages are available | optional | `en` |
| `max_alerts` | Maximum number of alerts to display simultaneously | optional | `Infinity` |
| `mode` | Operation mode: Production, Demo, or Test | optional | `production` |
| `refresh_interval` | Minutes between feed updates | optional | `5` |

### Modes

- **Production**: Fetches CAP data from the configured feed URL with offline caching support
- **Demo**: Displays random demo alerts (ignores feed URL if left empty)
- **Test**: Displays a static test alert for development and testing

## Nearest Exit Tags
### Nearest Exit Tags

Add tags to your Screenly screens (e.g., `exit:North Lobby`) to provide location-aware exit directions. The app substitutes `{{closest_exit}}` or `[[closest_exit]]` placeholders in alert instructions.

Expand Down Expand Up @@ -67,15 +87,24 @@ WHEN: Until 3 AM.

This formatting only applies to CAP alerts from the NWS sender (`w-nws.webmaster@noaa.gov`).

## Override Playlist Integration
## Playlist Priority Integration

This app is designed to work with Screenly's Playlist API to automatically interrupt regular content when emergency alerts are active.

This app is designed to use Screenly's [Override Playlist API](https://developer.screenly.io/api-reference/v4/#tag/Playlists/operation/override_playlist) to automatically interrupt regular content when alerts are active. Configure your backend to call the API when new CAP alerts are detected.
Configure your backend to call the [`PATCH /v4/playlists`](https://developer.screenly.io/api_v4/#update-a-playlist) endpoint:

- Set `priority: true` when new CAP alerts are detected to make this app take precedence over other content
- Set `priority: false` when alerts expire to resume normal playlist rotation

## Development

```bash
cd edge-apps/cap-alerting
bun install
bun run dev
bun install # Install dependencies
bun run dev # Start development server
```

## Testing

```bash
bun test
```
24 changes: 10 additions & 14 deletions edge-apps/clock/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,34 +11,30 @@ bun install
Create and deploy the Edge App:

```bash
screenly edge-app create --name my-clock-new --in-place
screenly edge-app deploy
screenly edge-app create --name my-clock --in-place
bun run deploy
screenly edge-app instance create
```

## Configuration

The app accepts the following settings via `screenly.yml`:

- `enable_analytics` - Enable or disable Sentry and Google Analytics integrations (optional, global)
- `openweathermap_api_key` - OpenWeatherMap API key to access weather data and location information (optional, global). Get your API key from <https://openweathermap.org/api>
- `override_locale` - Override the default locale with a supported language code (optional)
- `override_timezone` - Override the default timezone with a supported timezone identifier (optional)
- `tag_manager_id` - Google Tag Manager container ID to enable tracking and analytics (optional, global)
- `theme` - Visual theme for the app: 'light' or 'dark' (required, default: 'dark')
- `unit` - Measurement unit for temperature display (optional, advanced, default: 'auto')
- `auto` - Automatically determined based on the device's location
- `metric` - Celsius (°C)
- `imperial` - Fahrenheit (°F)
| Setting | Description | Type | Default |
| ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------ | ------- |
| `openweathermap_api_key` | OpenWeatherMap API key to access weather data and location information. Get your API key from <https://openweathermap.org/api> | optional | - |
| `override_locale` | Override the default locale with a supported language code | optional | `en` |
| `override_timezone` | Override the default timezone with a supported timezone identifier (e.g., `Europe/London`, `America/New_York`). Defaults to the system timezone if left blank | optional | - |
| `theme` | Visual theme for the app: 'light' or 'dark' | required | `light` |
| `unit` | Measurement unit for temperature display: `auto` (automatically determined based on location), `metric` (Celsius), or `imperial` (Fahrenheit) | optional, advanced | `auto` |

**Note:** When `unit` is set to `auto` (default), temperature units are automatically determined based on the device's location. The following countries use Fahrenheit: United States (US), Bahamas (BS), Cayman Islands (KY), Liberia (LR), Palau (PW), Federated States of Micronesia (FM), and Marshall Islands (MH). All other countries use Celsius.

## Development

```bash
bun install # Install dependencies
bun run build # Build the app
bun test # Run tests
bun run dev # Start development server
```

## Testing
Expand Down
33 changes: 12 additions & 21 deletions edge-apps/grafana/README.md
Original file line number Diff line number Diff line change
@@ -1,31 +1,30 @@
# Grafana Dashboard
# Screenly Grafana App

Displays Grafana dashboards as images on Screenly screens with automatic refresh intervals.
## Getting Started

## Features

- Render Grafana dashboards as images via the rendering API
- Automatic refresh at configurable intervals
- Dynamic resolution based on screen size
- Responsive design for landscape and portrait displays
- Theme color integration via @screenly/edge-apps
```bash
bun install
```

## Deployment

Create and deploy the Edge App:

```bash
screenly edge-app create --name my-grafana --in-place
screenly edge-app deploy
bun run deploy
screenly edge-app instance create
```

## Configuration

The app accepts the following settings via `screenly.yml`:

- `dashboard_id` - The unique ID of the Grafana dashboard (can be selected via dropdown when available)
- `refresh_interval` - The interval in seconds to refresh the dashboard image (default: 60)
| Setting | Description | Type | Default |
| ------------------ | ------------------------------------------------------------------------------------ | ------------------ | ------- |
| `dashboard_id` | The unique ID of the Grafana dashboard (can be selected via dropdown when available) | required | - |
| `display_errors` | Display detailed error messages on screen for debugging purposes | optional, advanced | `false` |
| `refresh_interval` | The interval in seconds to refresh the dashboard image | optional | `60` |

The Grafana domain and service access token are automatically fetched from your Grafana integration setup.

Expand All @@ -40,23 +39,15 @@ The Grafana domain and service access token are automatically fetched from your
- The URL in the browser will look like: `https://your-domain.grafana.net/d/<dashboard_id>/<dashboard_slug>`
- Extract the `<dashboard_id>` value (you don't need the slug)

3. **Example Configuration**

```yaml
dashboard_id: abc123
refresh_interval: 60
```

## Development

```bash
bun install # Install dependencies
bun run build # Build the app
bun run dev # Start development server
```

## Testing

```bash
bun run test # Run tests
bun test
```
Loading