You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Browser source graphics system for dual-format live production (16:9 + 9:16, 4K/30).
Operator uploads and places images via the gallery. vMix displays live via browser source — no reload needed.
x/y = image center as % of canvas (0–100, default 50/50 = centered)
Gallery preview is proportionally identical to display page — what you see is what vMix shows
Persistent state
What
Where
Scope
Active slot H/V
localStorage
Browser (restored on reload)
Grid on/off, size, snap
localStorage
Browser (restored on reload)
API key
sessionStorage
Browser tab (cleared on close — intentional)
Saved layouts
Cloudflare KV
Server — shared across all browsers
Storage
Images live in Cloudflare R2 — permanent object storage. No expiry, no auto-purge. Free tier: 10 GB. Images persist until explicitly deleted.
Security notes
API key stored in Cloudflare Secrets only — never in any file or commit
CORS restricted to https://adp-lab.github.io
/go with ?apikey= in URL: acceptable for private show use; key visible in logs. For stricter use, send key as X-API-Key header from vMix VB.NET script instead
After each show: rotate key with npx wrangler secret put API_KEY
Deploy workflow
cd /Users/drean/Ponyhof/show-graphics_AD
git add -A && git commit -m "..."&& git push # HTML/frontend changes
npx wrangler deploy # Worker changes
npx wrangler secret put API_KEY # Rotate API key
npx wrangler tail # Live Worker logs
Project status
✅ Upload (modal in gallery toolbar), display pages H+V, QR pages