Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
479c0f8
chore(asset-metadata): rename existing app directory to asset-metadat…
nicomiguelino Apr 8, 2026
d523707
feat(asset-metadata): scaffold and implement migrated app
nicomiguelino Apr 8, 2026
f279d27
feat(asset-metadata): add app-header to layout
nicomiguelino Apr 9, 2026
416c6dd
feat(asset-metadata): apply glassmorphic design with background image
nicomiguelino Apr 9, 2026
d3f2ee5
chore(asset-metadata): swap background image to sunny variant
nicomiguelino Apr 9, 2026
132c08c
fix(asset-metadata): prevent broken image request for brand logo
nicomiguelino Apr 9, 2026
5743d7f
feat(asset-metadata): add display_errors setting to manifests
nicomiguelino Apr 9, 2026
d3dd36c
refactor(asset-metadata): use type-safe query for brand logo element
nicomiguelino Apr 9, 2026
901e2c3
refactor(asset-metadata): remove unused theme setting and CSS variabl…
nicomiguelino Apr 9, 2026
5e05ba3
feat(asset-metadata): improve portrait mode layout and typography
nicomiguelino Apr 9, 2026
d3388ee
fix(asset-metadata): use fixed icon colors and clean up branding logic
nicomiguelino Apr 9, 2026
57be85e
feat(asset-metadata): float widgets to the right and remove logo card
nicomiguelino Apr 9, 2026
00749c8
feat(asset-metadata): increase landscape card width and update screen…
nicomiguelino Apr 9, 2026
389250f
fix(asset-metadata): increase spacing between card header and value
nicomiguelino Apr 9, 2026
098f95c
chore(asset-metadata): remove old Vue-based app
nicomiguelino Apr 9, 2026
efecffd
refactor(asset-metadata): replace custom escapeHtml with library import
nicomiguelino Apr 9, 2026
2ba7650
test(asset-metadata): add unit tests for app initialization
nicomiguelino Apr 9, 2026
56b4ecd
Update edge-apps/asset-metadata/package.json
nicomiguelino Apr 9, 2026
a8c6544
chore(asset-metadata): update bun lockfile
nicomiguelino Apr 9, 2026
d9354d6
chore(asset-metadata): replace background image with shared bg.webp
nicomiguelino Apr 9, 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
5 changes: 5 additions & 0 deletions edge-apps/asset-metadata/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
node_modules/
dist/
*.log
.DS_Store
screenshots/*.png
1 change: 1 addition & 0 deletions edge-apps/asset-metadata/.ignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
node_modules/
9 changes: 0 additions & 9 deletions edge-apps/asset-metadata/.vscode/extensions.json

This file was deleted.

70 changes: 24 additions & 46 deletions edge-apps/asset-metadata/README.md
Original file line number Diff line number Diff line change
@@ -1,82 +1,60 @@
# Screenly Asset Metadata
# Asset Metadata

![Screenly Asset Metadata App Preview](static/images/asset-metadata-app-preview.jpg)

This Edge App displays the screen metadata - Hostname, Screen Name, Position , Hardware name, Firmware version, Labels, etc.

## Prerequisites

- [Bun (1.2.2+)](https://bun.sh/docs/installation)
- [Screenly Edge App CLI (v1.0.3+)](https://github.com/Screenly/cli?tab=readme-ov-file#installation)
Displays screen metadata on Screenly digital signage players, including hostname, screen name, hardware type, firmware version, GPS coordinates, and assigned labels.

## Getting Started

```bash
bun install
screenly edge-app create \
--name=EDGE_APP_NAME \
--in-place
```

## Create an Edge App Instance via CLI
## Development

```bash
screenly edge-app instance create --name=EDGE_APP_INSTANCE_NAME
bun run dev
```

## Deployment
## Building

```bash
bun run deploy
bun run build
```

> [!NOTE]
> The `deploy` command takes care of building the app as well.

## Development

Install the dependencies for the first run:
## Testing

```bash
bun install
bun run test
```

Run the development environment with a single command:
## Linting & Formatting

```bash
bun run dev
bun run lint
bun run format
```

This will build in watch mode and start the development server via [Screenly CLI](https://github.com/Screenly/cli).

## Unit Tests
## Deployment

To run unit tests:
Create and deploy the Edge App:

```bash
bun run test:unit
screenly edge-app create --name asset-metadata --in-place
bun run deploy
screenly edge-app instance create
```

Press `q` to quit the test runner.

## E2E Tests
## Screenshots

Install dependencies for the first run:
Generate screenshots at all supported resolutions:

```bash
bun run playwright install-deps
bun run playwright install
bun run screenshots
```

To run E2E tests:

```bash
bun run test:e2e
```
Screenshots are saved to the `screenshots/` directory.

### Linting and Formatting
## Configuration

```bash
bun run lint
bun run format
```
| Setting | Description | Type | Default |
| ---------------- | -------------------------------------- | -------- | ------- |
| `display_errors` | Display errors on screen for debugging | optional | `false` |
928 changes: 497 additions & 431 deletions edge-apps/asset-metadata/bun.lock

Large diffs are not rendered by default.

42 changes: 42 additions & 0 deletions edge-apps/asset-metadata/e2e/screenshots.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
import { test } from '@playwright/test'
import {
createMockScreenlyForScreenshots,
getScreenshotsDir,
RESOLUTIONS,
setupClockMock,
setupScreenlyJsMock,
} from '@screenly/edge-apps/test/screenshots'
import path from 'path'

const { screenlyJsContent } = createMockScreenlyForScreenshots(
{
coordinates: [40.7128, -74.006],
location: 'New York, NY',
tags: ['lobby', 'floor-2', 'new-york', 'retail', 'north-wing', 'entrance', 'demo'],
},
{
display_errors: 'false',
},
)

for (const { width, height } of RESOLUTIONS) {
test(`screenshot ${width}x${height}`, async ({ browser }) => {
const screenshotsDir = getScreenshotsDir()

const context = await browser.newContext({ viewport: { width, height } })
const page = await context.newPage()

await setupClockMock(page)
await setupScreenlyJsMock(page, screenlyJsContent)

await page.goto('/')
await page.waitForLoadState('networkidle')

await page.screenshot({
path: path.join(screenshotsDir, `${width}x${height}.png`),
fullPage: false,
})

await context.close()
})
}
4 changes: 0 additions & 4 deletions edge-apps/asset-metadata/e2e/tsconfig.json

This file was deleted.

70 changes: 0 additions & 70 deletions edge-apps/asset-metadata/e2e/vue.spec.ts

This file was deleted.

34 changes: 0 additions & 34 deletions edge-apps/asset-metadata/eslint.config.ts

This file was deleted.

Loading