[grade=B] feat: add Vintage Stereo radio app template
Adds a new DashCaddy app template that ships a glass-front vintage console stereo UI tuning curated real internet-radio streams through a beautiful analog control surface. Adds src/docker/app-templates.js:vintage-radio with: - Wooden end caps with Power / Mode / Mute knobs and a brushed-metal face visible behind a smoked-glass overlay - Slide-rule tuning rail with red cursor + flag and click/drag/touch/keyboard - Twin glowing VU meters with smooth needle animation - Vertical volume slider, prev/next preset buttons, signal LED - MODE knob filters visible stations by genre (ALL/AMBIENT/ROCK/MIXED); dial respects the active filter without resetting it - 18 curated real streams (SomaFM, KEXP, Radio Paradise, etc.) live-verified - Persistent visible MODE label and dynamic aria-label - Narrow-screen zoom-based responsive scaling at 760/600/480px Bundles dashcaddy-api/static-sites/vintage-radio/: - web/index.html, web/radio.css, web/radio.js, web/stations.json - install.sh (copies assets to /opt/vintage-radio/web, DASHCADDY_ROOT override) - install-installer.sh (installs install.sh into /usr/local/bin) Verification: - 20/20 app-templates test suite passes - Headless Chromium: 18 stations render, dial+filter+power all functional with zero page errors - 18/18 stream URLs return HTTP 200 from this host - Codex grade B (urn:ump:ekaap5xpggifl76tia3dddq5iv5bi23rlvevbn22mux62yfkiexa)
This commit is contained in:
@@ -1764,6 +1764,47 @@ const APP_TEMPLATES = {
|
||||
]
|
||||
},
|
||||
|
||||
"vintage-radio": {
|
||||
name: "Vintage Stereo",
|
||||
description: "Glass-front console stereo that tunes curated real internet stations (SomaFM, KEXP, Radio Paradise, and more) through a beautiful analog UI",
|
||||
icon: "📻",
|
||||
category: "Media",
|
||||
popularity: 72,
|
||||
difficulty: "Easy",
|
||||
docker: {
|
||||
image: "nginx:alpine",
|
||||
ports: ["{{PORT}}:80"],
|
||||
volumes: [
|
||||
"/opt/vintage-radio/web:/usr/share/nginx/html:ro"
|
||||
],
|
||||
environment: {}
|
||||
},
|
||||
subdomain: "radio",
|
||||
defaultPort: 8090,
|
||||
healthCheck: "/",
|
||||
subpathSupport: 'none',
|
||||
preInstall: {
|
||||
description: "Materialize the bundled static assets into /opt/vintage-radio/web before starting the container.",
|
||||
script: "vintage-radio-install.sh"
|
||||
},
|
||||
features: [
|
||||
"Glass-front console stereo UI with wooden end caps and brushed-metal faceplate",
|
||||
"Tunable analog slide-rule dial with click-stop detents and red cursor flag",
|
||||
"Twin glowing VU meters with smooth needle animation while powered",
|
||||
"Power / Mode / Mute knobs, vertical volume slider, signal-strength LED",
|
||||
"MODE knob filters stations by genre (ALL / AMBIENT / ROCK / MIXED)",
|
||||
"18 curated real internet-radio streams (SomaFM, KEXP, Radio Paradise, Space Station Soma, Mission Control, and more)"
|
||||
],
|
||||
setupInstructions: [
|
||||
"Run `bash /usr/local/bin/vintage-radio-install.sh` once before starting the container — copies the bundled web assets (index.html, radio.css, radio.js, stations.json) from the DashCaddy repo (dashcaddy-api/static-sites/vintage-radio/web) into /opt/vintage-radio/web",
|
||||
"Open radio.sami (or your configured subdomain)",
|
||||
"Press the PWR knob, drag the dial or click a station card",
|
||||
"Cycle the MODE knob to filter by genre (ALL / AMBIENT / ROCK / MIXED)",
|
||||
"To add stations, edit /opt/vintage-radio/web/stations.json on the host and restart the container"
|
||||
],
|
||||
tags: ["radio", "music", "streaming", "audio", "vintage", "retro", "media"]
|
||||
},
|
||||
|
||||
"airsonic": {
|
||||
name: "Airsonic Advanced",
|
||||
description: "Free web-based media streamer",
|
||||
|
||||
Reference in New Issue
Block a user