Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
15 changes: 7 additions & 8 deletions .claude/CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,10 @@
- Edge Apps allows you to build custom digital signage content without provisioning or managing servers.
- You could think of it as something similar to other serverless technologies like Cloudflare Workers
or AWS Lambda.
- More details for Screenly's Edge Apps could be found in [https://developer.screenly.io/edge-apps](mdc:https:/developer.screenly.io/edge-apps).
- This repository contains a variety of Edge Apps like a simple clock app or an app that displays
real-time bus schedules.
- Each of the available Edge Apps have their own directory, which could be found in the
[edge-apps](mdc:edge-apps) directory.
- More details for Screenly's Edge Apps could be found in [https://developer.screenly.io/edge-apps](mdc:https://developer.screenly.io/edge-apps).
- Most Edge Apps have migrated to standalone repositories under the Screenly org. The
[edge-apps](mdc:edge-apps) directory contains the apps that have not migrated yet, redirect stubs
for the apps that have, plus shared assets like icons.
Comment thread
nicomiguelino marked this conversation as resolved.

## Players

Expand All @@ -22,11 +21,11 @@
- Screenly Player, a Raspberry-pi based player
- Compatible with Raspberry Pi 3 and 4 devices.
- Screenly Player Max, a more powerful alternative to the Screenly Player
- See [https://www.screenly.io/digital-signage-players/](mdc:https:/www.screenly.io/digital-signage-players) for more details about the physical players.
- See [https://www.screenly.io/digital-signage-players/](mdc:https://www.screenly.io/digital-signage-players) for more details about the physical players.
- Screenly also offers a virtual alternative, which we call "Screenly Anywhere".
- Screenly Anywhere allows to you to deploy screens with no hardware required.
- Screenly Anywhere allows you to deploy screens with no hardware required.
- Screenly Anywhere can be set up on a web browser, on a smartphone, or on a smart TV.
- See [https://www.screenly.io/end-user/screenly-anywhere/](mdc:https:/www.screenly.io/end-user/screenly-anywhere) for more details.
- See [https://www.screenly.io/end-user/screenly-anywhere/](mdc:https://www.screenly.io/end-user/screenly-anywhere) for more details.

## Supported Resolutions

Expand Down
3 changes: 2 additions & 1 deletion .claude/rules/edge-apps.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,8 @@ This approach provides a better user experience in the web interface by renderin

This rule applies to Edge Apps that are written in plain HTML, CSS, and JavaScript.

- Create a directory inside the [edge-apps](mdc:edge-apps) directory.
- If you're one of the maintainers of this repository, it's encouraged to create the new Edge App in its own standalone GitHub repo under the Screenly org, rather than inside this monorepo's `edge-apps/` directory.
- If the app stays in this monorepo, create a directory inside the [edge-apps](mdc:edge-apps) directory.
- That new directory should at least contain the following files:
- `index.html`
- `screenly.yml`
Expand Down
19 changes: 8 additions & 11 deletions .claude/skills/create-an-edge-app/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,8 @@ description: Use when scaffolding a new Screenly Edge App — covers the templat

## When Creating an Edge App

- Scaffold the new Edge App using the `bun create` template from inside the `edge-apps/` directory:
```bash
bun create edge-app-template --no-git <app-name>
```
- The app name should follow the `kebab-case` naming convention.
- If you're one of the maintainers of this repository, it's encouraged to create the new Edge App in its own standalone GitHub repo under the Screenly org, rather than inside this monorepo's `edge-apps/` directory.
- Scaffold the new Edge App by starting from one of the apps in the [Reference Apps](#reference-apps) section below — pick the closest match in complexity and adapt it, following the `kebab-case` naming convention for the app name.
- After scaffolding, add an `id` field to `screenly.yml` and `screenly_qc.yml` before running `bun run dev`.
- **Verify it boots** before building features: run `bun run dev`, `bun run lint`, and the tests. A scaffold that doesn't start is the first thing to fix.
- **Consult Figma designs** before starting implementation.
Expand All @@ -33,7 +30,7 @@ When the app shows data from a third-party service, **do not hand-roll an auth f

To develop locally (real credentials aren't present), set up a **super simple** way to supply them — pick the lighter of these two:

- **Read a secret (CLI is fine).** Declare an `access_token` secret marked "for testing only", set it with `screenly edge-app setting set access_token=...` (or in `mock-data.yml`), and read it with `getSettingWithDefault('access_token', '')`. See `edge-apps/google-calendar/` (`src/main.ts`).
- **Read a secret (CLI is fine).** Declare an `access_token` secret marked "for testing only", set it with `screenly edge-app setting set access_token=...` (or in `mock-data.yml`), and read it with `getSettingWithDefault('access_token', '')`. See [Screenly/google-calendar-app](https://github.com/Screenly/google-calendar-app) (`src/main.ts`).
- **Handle the OAuth flow with a tiny companion app.** A small Express + Bun server that runs the flow, stores the tokens, refreshes them, and exposes `GET /access_token/` returning `{ token, metadata }` — mimicking the Screenly OAuth service. Wire it in via `mock-data.yml`'s `screenly_oauth_tokens_url`. See the `mock-authenticator/` in [Screenly/salesforce-app](https://github.com/Screenly/salesforce-app) for a complete, minimal example.

Both paths feed the same `getCredentials()` — the Edge App code does not change between them.
Expand All @@ -51,12 +48,12 @@ Both paths feed the same `getCredentials()` — the Edge App code does not chang

## Reference Apps

For reference on more complex implementations, consult:
Most Edge Apps have migrated to standalone repos under the Screenly org. For reference on more complex implementations, consult:

- QR Code (`edge-apps/qr-code/`) — simple, low-footprint example
- Menu Board (`edge-apps/menu-board/`) — more complex layout
- CAP Alerting (`edge-apps/cap-alerting/`) — advanced settings and data fetching
- Google Calendar (`edge-apps/google-calendar/`) — integration via a test secret
- [Screenly/qr-code-app](https://github.com/Screenly/qr-code-app) — simple, low-footprint example
- [Screenly/menu-board-app](https://github.com/Screenly/menu-board-app) — more complex layout
- [Screenly/cap-alerting-app](https://github.com/Screenly/cap-alerting-app) — advanced settings and data fetching
- [Screenly/google-calendar-app](https://github.com/Screenly/google-calendar-app) — integration via a test secret
- [Screenly/salesforce-app](https://github.com/Screenly/salesforce-app) — integration with a companion OAuth authenticator

All apps depend on the `@screenly/edge-apps` NPM package and use `edge-apps-scripts` for tooling.
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/edge-app-checks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ jobs:
# Function to add app to list if not already included
add_app_if_valid() {
local app="$1"
if [[ -n "$app" && "$app" != "helpers" && "$app" != ".bun-create" ]]; then
if [[ -n "$app" && "$app" != "helpers" ]]; then
if [[ -d "edge-apps/$app" ]]; then
if [[ " $CHANGED_APPS " != *" $app "* ]]; then
CHANGED_APPS="$CHANGED_APPS $app"
Expand Down
8 changes: 1 addition & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,13 +37,7 @@ If you are not familiar with Edge Apps, we suggest you review our [developer doc

### Creating a New Edge App

To scaffold a new Edge App, run the following from the `edge-apps/` directory:

```bash
bun create edge-app-template --no-git <your-app-name>
```

This generates a new app with TypeScript, the Screenly design system, manifest files, and all standard scripts pre-configured. See [`edge-apps/README.md`](/edge-apps/README.md) for full details.
New Edge Apps are encouraged to live in their own standalone GitHub repo under the Screenly org rather than in this monorepo. See [`edge-apps/README.md`](/edge-apps/README.md) for guidance on creating a new app.

### TypeScript Library

Expand Down
5 changes: 0 additions & 5 deletions edge-apps/.bun-create/edge-app-template/.gitignore

This file was deleted.

1 change: 0 additions & 1 deletion edge-apps/.bun-create/edge-app-template/.ignore

This file was deleted.

51 changes: 0 additions & 51 deletions edge-apps/.bun-create/edge-app-template/README.md

This file was deleted.

41 changes: 0 additions & 41 deletions edge-apps/.bun-create/edge-app-template/e2e/screenshots.spec.ts

This file was deleted.

24 changes: 0 additions & 24 deletions edge-apps/.bun-create/edge-app-template/index.html

This file was deleted.

37 changes: 0 additions & 37 deletions edge-apps/.bun-create/edge-app-template/package.json

This file was deleted.

41 changes: 0 additions & 41 deletions edge-apps/.bun-create/edge-app-template/screenly.yml

This file was deleted.

41 changes: 0 additions & 41 deletions edge-apps/.bun-create/edge-app-template/screenly_qc.yml

This file was deleted.

Loading