Skip to content

Commit d523707

Browse files
nicomiguelinoclaude
andcommitted
feat(asset-metadata): scaffold and implement migrated app
- Add new asset-metadata Edge App using edge-app-template - Implement glassmorphic card layout for screen metadata display - Support landscape and portrait orientations via CSS Grid - Use @screenly/edge-apps utilities for theme, branding, and metadata - Copy screenly.yml and screenly_qc.yml from asset-metadata-old - Bump @screenly/edge-apps to 0.0.17 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 479c0f8 commit d523707

File tree

13 files changed

+1800
-0
lines changed

13 files changed

+1800
-0
lines changed
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
node_modules/
2+
dist/
3+
*.log
4+
.DS_Store
5+
screenshots/*.png

edge-apps/asset-metadata/.ignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
node_modules/

edge-apps/asset-metadata/README.md

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
# Asset Metadata
2+
3+
Displays screen metadata on Screenly digital signage players, including hostname, screen name, hardware type, firmware version, GPS coordinates, and assigned labels.
4+
5+
## Getting Started
6+
7+
```bash
8+
bun install
9+
```
10+
11+
## Development
12+
13+
```bash
14+
bun run dev
15+
```
16+
17+
## Building
18+
19+
```bash
20+
bun run build
21+
```
22+
23+
## Testing
24+
25+
```bash
26+
bun run test
27+
```
28+
29+
## Linting & Formatting
30+
31+
```bash
32+
bun run lint
33+
bun run format
34+
```
35+
36+
## Deployment
37+
38+
Create and deploy the Edge App:
39+
40+
```bash
41+
screenly edge-app create --name asset-metadata --in-place
42+
bun run deploy
43+
screenly edge-app instance create
44+
```
45+
46+
## Screenshots
47+
48+
Generate screenshots at all supported resolutions:
49+
50+
```bash
51+
bun run screenshots
52+
```
53+
54+
Screenshots are saved to the `screenshots/` directory.
55+
56+
## Configuration
57+
58+
| Setting | Description | Type | Default |
59+
| ------- | ----------------------------------------- | -------- | ------- |
60+
| `theme` | Visual theme for the app (`light`/`dark`) | required | `light` |

edge-apps/asset-metadata/bun.lock

Lines changed: 1073 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
import { test } from '@playwright/test'
2+
import {
3+
createMockScreenlyForScreenshots,
4+
getScreenshotsDir,
5+
RESOLUTIONS,
6+
setupClockMock,
7+
setupScreenlyJsMock,
8+
} from '@screenly/edge-apps/test/screenshots'
9+
import path from 'path'
10+
11+
const { screenlyJsContent } = createMockScreenlyForScreenshots(
12+
{ coordinates: [40.7128, -74.006], location: 'New York, NY' },
13+
{
14+
display_errors: 'false',
15+
message: 'Hello, World!',
16+
override_locale: 'en',
17+
override_timezone: 'America/New_York',
18+
},
19+
)
20+
21+
for (const { width, height } of RESOLUTIONS) {
22+
test(`screenshot ${width}x${height}`, async ({ browser }) => {
23+
const screenshotsDir = getScreenshotsDir()
24+
25+
const context = await browser.newContext({ viewport: { width, height } })
26+
const page = await context.newPage()
27+
28+
await setupClockMock(page)
29+
await setupScreenlyJsMock(page, screenlyJsContent)
30+
31+
await page.goto('/')
32+
await page.waitForLoadState('networkidle')
33+
34+
await page.screenshot({
35+
path: path.join(screenshotsDir, `${width}x${height}.png`),
36+
fullPage: false,
37+
})
38+
39+
await context.close()
40+
})
41+
}
Lines changed: 178 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,178 @@
1+
<!doctype html>
2+
<html lang="en">
3+
<head>
4+
<meta charset="UTF-8" />
5+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
6+
<title>Asset Metadata</title>
7+
<script src="screenly.js?version=1"></script>
8+
</head>
9+
<body>
10+
<auto-scaler
11+
reference-width="1920"
12+
reference-height="1080"
13+
orientation="auto"
14+
>
15+
<div id="app">
16+
<div class="grid-container">
17+
<div class="card hostname-card">
18+
<div class="card-header">
19+
<svg
20+
class="card-icon"
21+
viewBox="0 0 58 58"
22+
fill="none"
23+
xmlns="http://www.w3.org/2000/svg"
24+
>
25+
<circle
26+
cx="29"
27+
cy="29"
28+
r="29"
29+
fill="var(--theme-color-primary)"
30+
/>
31+
<path
32+
d="M28.9992 15.9502C30.7298 15.9502 32.3894 16.6376 33.6131 17.8613C34.8368 19.085 35.5242 20.7447 35.5242 22.4752C35.5242 24.2057 34.8368 25.8654 33.6131 27.0891C32.3894 28.3127 30.7298 29.0002 28.9992 29.0002C27.2687 29.0002 25.609 28.3127 24.3853 27.0891C23.1617 25.8654 22.4742 24.2057 22.4742 22.4752C22.4742 20.7447 23.1617 19.085 24.3853 17.8613C25.609 16.6376 27.2687 15.9502 28.9992 15.9502ZM28.9992 42.0502C28.9992 42.0502 42.0492 42.0502 42.0492 38.7877C42.0492 34.8727 35.6873 30.6314 28.9992 30.6314C22.3111 30.6314 15.9492 34.8727 15.9492 38.7877C15.9492 42.0502 28.9992 42.0502 28.9992 42.0502Z"
33+
fill="white"
34+
/>
35+
</svg>
36+
<span class="card-label">Host Name</span>
37+
</div>
38+
<div class="card-value" id="hostname">N/A</div>
39+
</div>
40+
41+
<div class="card screenname-card">
42+
<div class="card-header">
43+
<svg
44+
class="card-icon"
45+
viewBox="0 0 58 58"
46+
fill="none"
47+
xmlns="http://www.w3.org/2000/svg"
48+
>
49+
<circle
50+
cx="29"
51+
cy="29"
52+
r="29"
53+
fill="var(--theme-color-primary)"
54+
/>
55+
<path
56+
d="M28.9992 15.9502C30.7298 15.9502 32.3894 16.6376 33.6131 17.8613C34.8368 19.085 35.5242 20.7447 35.5242 22.4752C35.5242 24.2057 34.8368 25.8654 33.6131 27.0891C32.3894 28.3127 30.7298 29.0002 28.9992 29.0002C27.2687 29.0002 25.609 28.3127 24.3853 27.0891C23.1617 25.8654 22.4742 24.2057 22.4742 22.4752C22.4742 20.7447 23.1617 19.085 24.3853 17.8613C25.609 16.6376 27.2687 15.9502 28.9992 15.9502ZM28.9992 42.0502C28.9992 42.0502 42.0492 42.0502 42.0492 38.7877C42.0492 34.8727 35.6873 30.6314 28.9992 30.6314C22.3111 30.6314 15.9492 34.8727 15.9492 38.7877C15.9492 42.0502 28.9992 42.0502 28.9992 42.0502Z"
57+
fill="white"
58+
/>
59+
</svg>
60+
<span class="card-label">Screen Name</span>
61+
</div>
62+
<div class="card-value" id="screen-name">N/A</div>
63+
</div>
64+
65+
<div class="card hardware-card">
66+
<div class="card-header">
67+
<svg
68+
class="card-icon"
69+
viewBox="0 0 58 58"
70+
fill="none"
71+
xmlns="http://www.w3.org/2000/svg"
72+
>
73+
<circle
74+
cx="29"
75+
cy="29"
76+
r="29"
77+
fill="var(--theme-color-primary)"
78+
/>
79+
<path
80+
d="M34.9809 22.4736H23.0184C22.7181 22.4736 22.4746 22.7171 22.4746 23.0174V34.9799C22.4746 35.2802 22.7181 35.5236 23.0184 35.5236H34.9809C35.2812 35.5236 35.5246 35.2802 35.5246 34.9799V23.0174C35.5246 22.7171 35.2812 22.4736 34.9809 22.4736Z"
81+
fill="white"
82+
/>
83+
<path
84+
d="M43.1379 24.6494C43.4263 24.6494 43.7029 24.5348 43.9069 24.3309C44.1108 24.1269 44.2254 23.8503 44.2254 23.5619C44.2254 23.2735 44.1108 22.9969 43.9069 22.7929C43.7029 22.589 43.4263 22.4744 43.1379 22.4744H42.0504V20.2994C42.0491 19.1461 41.5904 18.0404 40.7749 17.2249C39.9594 16.4094 38.8537 15.9507 37.7004 15.9494H35.5254V14.8619C35.5254 14.5735 35.4108 14.2969 35.2069 14.0929C35.0029 13.889 34.7263 13.7744 34.4379 13.7744C34.1495 13.7744 33.8729 13.889 33.6689 14.0929C33.465 14.2969 33.3504 14.5735 33.3504 14.8619V15.9494H30.0879V14.8619C30.0879 14.5735 29.9733 14.2969 29.7694 14.0929C29.5654 13.889 29.2888 13.7744 29.0004 13.7744C28.712 13.7744 28.4354 13.889 28.2314 14.0929C28.0275 14.2969 27.9129 14.5735 27.9129 14.8619V15.9494H24.6504V14.8619C24.6504 14.5735 24.5358 14.2969 24.3319 14.0929C24.1279 13.889 23.8513 13.7744 23.5629 13.7744C23.2745 13.7744 22.9979 13.889 22.7939 14.0929C22.59 14.2969 22.4754 14.5735 22.4754 14.8619V15.9494H20.3004C19.1471 15.9507 18.0414 16.4094 17.2259 17.2249C16.4104 18.0404 15.9516 19.1461 15.9504 20.2994V22.4744H14.8629C14.5745 22.4744 14.2979 22.589 14.0939 22.7929C13.89 22.9969 13.7754 23.2735 13.7754 23.5619C13.7754 23.8503 13.89 24.1269 14.0939 24.3309C14.2979 24.5348 14.5745 24.6494 14.8629 24.6494H15.9504V27.9119H14.8629C14.5745 27.9119 14.2979 28.0265 14.0939 28.2304C13.89 28.4344 13.7754 28.711 13.7754 28.9994C13.7754 29.2878 13.89 29.5644 14.0939 29.7684C14.2979 29.9723 14.5745 30.0869 14.8629 30.0869H15.9504V33.3494H14.8629C14.5745 33.3494 14.2979 33.464 14.0939 33.6679C13.89 33.8719 13.7754 34.1485 13.7754 34.4369C13.7754 34.7253 13.89 35.0019 14.0939 35.2059C14.2979 35.4098 14.5745 35.5244 14.8629 35.5244H15.9504V37.6994C15.9516 38.8527 16.4104 39.9584 17.2259 40.7739C18.0414 41.5894 19.1471 42.0482 20.3004 42.0494H22.4754V43.1369C22.4754 43.4253 22.59 43.7019 22.7939 43.9059C22.9979 44.1098 23.2745 44.2244 23.5629 44.2244C23.8513 44.2244 24.1279 44.1098 24.3319 43.9059C24.5358 43.7019 24.6504 43.4253 24.6504 43.1369V42.0494H27.9129V43.1369C27.9129 43.4253 28.0275 43.7019 28.2314 43.9059C28.4354 44.1098 28.712 44.2244 29.0004 44.2244C29.2888 44.2244 29.5654 44.1098 29.7694 43.9059C29.9733 43.7019 30.0879 43.4253 30.0879 43.1369V42.0494H33.3504V43.1369C33.3504 43.4253 33.465 43.7019 33.6689 43.9059C33.8729 44.1098 34.1495 44.2244 34.4379 44.2244C34.7263 44.2244 35.0029 44.1098 35.2069 43.9059C35.4108 43.7019 35.5254 43.4253 35.5254 43.1369V42.0494H37.7004C38.8537 42.0482 39.9594 41.5894 40.7749 40.7739C41.5904 39.9584 42.0491 38.8527 42.0504 37.6994V35.5244H43.1379C43.4263 35.5244 43.7029 35.4098 43.9069 35.2059C44.1108 35.0019 44.2254 34.7253 44.2254 34.4369C44.2254 34.1485 44.1108 33.8719 43.9069 33.6679C43.7029 33.464 43.4263 33.3494 43.1379 33.3494H42.0504V30.0869H43.1379C43.4263 30.0869 43.7029 29.9723 43.9069 29.7684C44.1108 29.5644 44.2254 29.2878 44.2254 28.9994C44.2254 28.711 44.1108 28.4344 43.9069 28.2304C43.7029 28.0265 43.4263 27.9119 43.1379 27.9119H42.0504V24.6494H43.1379ZM37.7004 35.5244C37.7004 36.1013 37.4712 36.6545 37.0633 37.0624C36.6555 37.4703 36.1022 37.6994 35.5254 37.6994H22.4754C21.8985 37.6994 21.3453 37.4703 20.9374 37.0624C20.5295 36.6545 20.3004 36.1013 20.3004 35.5244V22.4744C20.3004 21.8976 20.5295 21.3443 20.9374 20.9365C21.3453 20.5286 21.8985 20.2994 22.4754 20.2994H35.5254C36.1022 20.2994 36.6555 20.5286 37.0633 20.9365C37.4712 21.3443 37.7004 21.8976 37.7004 22.4744V35.5244Z"
85+
fill="white"
86+
/>
87+
</svg>
88+
<span class="card-label">Hardware</span>
89+
</div>
90+
<div class="card-value" id="hardware">N/A</div>
91+
</div>
92+
93+
<div class="card logo-card">
94+
<img class="brand-logo" id="brand-logo" src="" alt="Brand Logo" />
95+
<span class="powered-by">Powered by Screenly</span>
96+
</div>
97+
98+
<div class="card version-card">
99+
<div class="card-header">
100+
<svg
101+
class="card-icon"
102+
viewBox="0 0 58 58"
103+
fill="none"
104+
xmlns="http://www.w3.org/2000/svg"
105+
>
106+
<circle
107+
cx="29"
108+
cy="29"
109+
r="29"
110+
fill="var(--theme-color-primary)"
111+
/>
112+
<path
113+
d="M37.6992 17.3994H28.9992C27.8455 17.3994 26.7391 17.8577 25.9233 18.6735C25.1075 19.4893 24.6492 20.5957 24.6492 21.7494V36.2494C24.6492 37.4031 25.1075 38.5095 25.9233 39.3253C26.7391 40.1411 27.8455 40.5994 28.9992 40.5994H37.6992C38.8529 40.5994 39.9594 40.1411 40.7751 39.3253C41.5909 38.5095 42.0492 37.4031 42.0492 36.2494V21.7494C42.0492 20.5957 41.5909 19.4893 40.7751 18.6735C39.9594 17.8577 38.8529 17.3994 37.6992 17.3994ZM21.7492 20.2994C22.1044 20.2995 22.4472 20.4299 22.7126 20.6659C22.978 20.9019 23.1475 21.2271 23.1891 21.5798L23.1992 21.7494V36.2494C23.1988 36.619 23.0573 36.9745 22.8036 37.2432C22.5499 37.5119 22.2031 37.6737 21.8342 37.6953C21.4653 37.717 21.102 37.5969 20.8186 37.3597C20.5352 37.1225 20.353 36.7861 20.3094 36.4191L20.2992 36.2494V21.7494C20.2992 21.3649 20.452 20.996 20.7239 20.7241C20.9958 20.4522 21.3647 20.2994 21.7492 20.2994ZM17.3992 21.7494C17.7544 21.7495 18.0972 21.8799 18.3626 22.1159C18.628 22.3519 18.7975 22.6771 18.8391 23.0298L18.8492 23.1994V34.7994C18.8488 35.169 18.7073 35.5245 18.4536 35.7932C18.1999 36.0619 17.8531 36.2237 17.4842 36.2453C17.1153 36.267 16.752 36.1469 16.4686 35.9097C16.1852 35.6725 16.003 35.3361 15.9594 34.9691L15.9492 34.7994V23.1994C15.9492 22.8149 16.102 22.446 16.3739 22.1741C16.6458 21.9022 17.0147 21.7494 17.3992 21.7494Z"
114+
fill="white"
115+
/>
116+
</svg>
117+
<span class="card-label">Version</span>
118+
</div>
119+
<div class="card-value" id="version">N/A</div>
120+
</div>
121+
122+
<div class="card coordinates-card">
123+
<div class="card-header">
124+
<svg
125+
class="card-icon"
126+
viewBox="0 0 58 58"
127+
fill="none"
128+
xmlns="http://www.w3.org/2000/svg"
129+
>
130+
<circle
131+
cx="29"
132+
cy="29"
133+
r="29"
134+
fill="var(--theme-color-primary)"
135+
/>
136+
<path
137+
d="M42.7037 27.8785H40.6882C40.4248 25.1374 39.2158 22.5733 37.2686 20.6261C35.3214 18.6789 32.7573 17.4699 30.0162 17.2065V15.191C30.0162 14.9026 29.9016 14.626 29.6977 14.422C29.4937 14.2181 29.2171 14.1035 28.9287 14.1035C28.6402 14.1035 28.3636 14.2181 28.1597 14.422C27.9557 14.626 27.8412 14.9026 27.8412 15.191V17.2065C25.112 17.4831 22.5635 18.6982 20.6304 20.6445C18.6974 22.5908 17.4997 25.1476 17.2417 27.8785H15.2262C15.0834 27.8785 14.9419 27.9066 14.81 27.9613C14.6781 28.0159 14.5582 28.0961 14.4572 28.197C14.3562 28.298 14.2761 28.4179 14.2215 28.5498C14.1668 28.6818 14.1387 28.8232 14.1387 28.966C14.1387 29.1088 14.1668 29.2502 14.2215 29.3822C14.2761 29.5141 14.3562 29.634 14.4572 29.735C14.5582 29.836 14.6781 29.9161 14.81 29.9707C14.9419 30.0254 15.0834 30.0535 15.2262 30.0535H17.2417C17.5051 32.7946 18.7141 35.3587 20.6613 37.3059C22.6085 39.2531 25.1725 40.4621 27.9137 40.7255V42.741C27.9137 43.0294 28.0282 43.306 28.2322 43.51C28.4361 43.7139 28.7127 43.8285 29.0012 43.8285C29.2896 43.8285 29.5662 43.7139 29.7702 43.51C29.9741 43.306 30.0887 43.0294 30.0887 42.741V40.7255C32.8288 40.4594 35.3913 39.2495 37.338 37.3029C39.2847 35.3562 40.4946 32.7936 40.7607 30.0535H42.7762C42.919 30.0535 43.0604 30.0254 43.1923 29.9707C43.3243 29.9161 43.4442 29.836 43.5452 29.735C43.6461 29.634 43.7262 29.5141 43.7809 29.3822C43.8355 29.2502 43.8637 29.1088 43.8637 28.966C43.8637 28.8232 43.8355 28.6818 43.7809 28.5498C43.7262 28.4179 43.6461 28.298 43.5452 28.197C43.4442 28.0961 43.3243 28.0159 43.1923 27.9613C43.0604 27.9066 42.919 27.8785 42.7762 27.8785H42.7037ZM28.9287 38.594C27.0244 38.594 25.163 38.0293 23.5796 36.9714C21.9963 35.9135 20.7623 34.4098 20.0336 32.6505C19.3048 30.8912 19.1142 28.9553 19.4857 27.0877C19.8572 25.22 20.7741 23.5045 22.1206 22.158C23.4671 20.8115 25.1827 19.8945 27.0503 19.523C28.918 19.1515 30.8539 19.3422 32.6131 20.0709C34.3724 20.7996 35.8761 22.0337 36.9341 23.617C37.992 25.2003 38.5567 27.0618 38.5567 28.966C38.5567 31.5209 37.5428 33.9713 35.7376 35.7792C33.9324 37.5871 31.4835 38.6047 28.9287 38.6085V38.594Z"
138+
fill="white"
139+
/>
140+
<path
141+
d="M35.4941 28.9785C35.4941 30.2811 35.1077 31.5545 34.3837 32.6373C33.6597 33.7202 32.6307 34.564 31.427 35.0618C30.2232 35.5596 28.8989 35.6891 27.6215 35.434C26.3441 35.1788 25.1712 34.5504 24.2511 33.6283C23.331 32.7062 22.7052 31.5318 22.4529 30.2539C22.2005 28.976 22.3329 27.6519 22.8334 26.4493C23.3339 25.2466 24.1799 24.2195 25.2644 23.4979C26.3488 22.7763 27.623 22.3927 28.9256 22.3955C29.7894 22.3955 30.6448 22.5659 31.4426 22.8969C32.2405 23.2279 32.9653 23.713 33.5754 24.3245C34.1855 24.936 34.6691 25.6618 34.9983 26.4604C35.3275 27.259 35.496 28.1147 35.4941 28.9785Z"
142+
fill="white"
143+
/>
144+
</svg>
145+
<span class="card-label">Coordinates</span>
146+
</div>
147+
<div class="card-value" id="coordinates">N/A</div>
148+
</div>
149+
150+
<div class="card labels-card">
151+
<div class="card-header">
152+
<svg
153+
class="card-icon"
154+
viewBox="0 0 58 58"
155+
fill="none"
156+
xmlns="http://www.w3.org/2000/svg"
157+
>
158+
<circle
159+
cx="29"
160+
cy="29"
161+
r="29"
162+
fill="var(--theme-color-primary)"
163+
/>
164+
<path
165+
d="M37.6992 17.3994H28.9992C27.8455 17.3994 26.7391 17.8577 25.9233 18.6735C25.1075 19.4893 24.6492 20.5957 24.6492 21.7494V36.2494C24.6492 37.4031 25.1075 38.5095 25.9233 39.3253C26.7391 40.1411 27.8455 40.5994 28.9992 40.5994H37.6992C38.8529 40.5994 39.9594 40.1411 40.7751 39.3253C41.5909 38.5095 42.0492 37.4031 42.0492 36.2494V21.7494C42.0492 20.5957 41.5909 19.4893 40.7751 18.6735C39.9594 17.8577 38.8529 17.3994 37.6992 17.3994ZM21.7492 20.2994C22.1044 20.2995 22.4472 20.4299 22.7126 20.6659C22.978 20.9019 23.1475 21.2271 23.1891 21.5798L23.1992 21.7494V36.2494C23.1988 36.619 23.0573 36.9745 22.8036 37.2432C22.5499 37.5119 22.2031 37.6737 21.8342 37.6953C21.4653 37.717 21.102 37.5969 20.8186 37.3597C20.5352 37.1225 20.353 36.7861 20.3094 36.4191L20.2992 36.2494V21.7494C20.2992 21.3649 20.452 20.996 20.7239 20.7241C20.9958 20.4522 21.3647 20.2994 21.7492 20.2994ZM17.3992 21.7494C17.7544 21.7495 18.0972 21.8799 18.3626 22.1159C18.628 22.3519 18.7975 22.6771 18.8391 23.0298L18.8492 23.1994V34.7994C18.8488 35.169 18.7073 35.5245 18.4536 35.7932C18.1999 36.0619 17.8531 36.2237 17.4842 36.2453C17.1153 36.267 16.752 36.1469 16.4686 35.9097C16.1852 35.6725 16.003 35.3361 15.9594 34.9691L15.9492 34.7994V23.1994C15.9492 22.8149 16.102 22.446 16.3739 22.1741C16.6458 21.9022 17.0147 21.7494 17.3992 21.7494Z"
166+
fill="white"
167+
/>
168+
</svg>
169+
<span class="card-label">Labels</span>
170+
</div>
171+
<div class="label-chips" id="labels"></div>
172+
</div>
173+
</div>
174+
</div>
175+
</auto-scaler>
176+
<script type="module" src="/src/main.ts"></script>
177+
</body>
178+
</html>
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
{
2+
"name": "asset-metadata",
3+
"version": "1.0.0",
4+
"type": "module",
5+
"scripts": {
6+
"prebuild": "bun run type-check",
7+
"generate-mock-data": "screenly edge-app run --generate-mock-data",
8+
"predev": "bun run generate-mock-data",
9+
"dev": "edge-apps-scripts dev",
10+
"build": "edge-apps-scripts build",
11+
"build:dev": "edge-apps-scripts build:dev",
12+
"build:prod": "edge-apps-scripts build",
13+
"test": "bun test --pass-with-no-tests src/",
14+
"test:unit": "bun test --pass-with-no-tests src/",
15+
"lint": "edge-apps-scripts lint --fix",
16+
"format": "prettier --write src/ README.md index.html",
17+
"format:check": "prettier --check src/ README.md index.html",
18+
"deploy": "bun run build && screenly edge-app deploy --path=dist/",
19+
"type-check": "edge-apps-scripts type-check",
20+
"screenshots": "edge-apps-scripts screenshots"
21+
},
22+
"prettier": "../.prettierrc.json",
23+
"devDependencies": {
24+
"@playwright/test": "^1.58.0",
25+
"@screenly/edge-apps": "0.0.17",
26+
"@types/bun": "^1.3.9",
27+
"@types/jsdom": "^27.0.0",
28+
"bun-types": "^1.3.9",
29+
"jsdom": "^28.1.0",
30+
"npm-run-all2": "^8.0.4",
31+
"prettier": "^3.8.1",
32+
"typescript": "^5.9.3"
33+
}
34+
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
---
2+
syntax: manifest_v1
3+
id: 01JH83JQZ2FX46WG5H7FFEAGFE
4+
description: Displays the screen metadata like position on Google map, coordinates, hostname, etc.
5+
icon: https://playground.srly.io/edge-apps/asset-metadata/static/images/icon.svg
6+
author: Screenly, Inc.
7+
categories:
8+
- Utilities
9+
ready_signal: true
10+
settings:
11+
enable_analytics:
12+
type: string
13+
default_value: 'true'
14+
title: enable_analytics
15+
optional: true
16+
help_text: |
17+
Toggle to enable or disable Sentry and Google Analytics integrations.
18+
is_global: true
19+
sentry_dsn:
20+
type: secret
21+
title: Sentry Client Key
22+
optional: true
23+
help_text: |
24+
Enter your Sentry DSN to enable error tracking.
25+
is_global: true
26+
tag_manager_id:
27+
type: string
28+
default_value: ''
29+
title: tag_manager_id
30+
optional: true
31+
help_text: |
32+
Enter your Google Tag Manager container ID to enable tracking and analytics.
33+
is_global: true
34+
theme:
35+
type: string
36+
default_value: light
37+
title: Theme
38+
optional: false
39+
help_text: |
40+
Select the visual theme for the app ('light' or 'dark').

0 commit comments

Comments
 (0)