Self-hosted hotel-style guest welcome display. Show a beautiful welcome screen on any TV or tablet with guest names, live clock, weather, WiFi QR code, and custom info cards.
- TV Display — Elegant welcome screen with guest name, live clock, weather, and WiFi QR code
- Admin Dashboard — Manage guests, themes, info cards, WiFi, and display settings from any device
- Themes — Multiple built-in themes (dark elegant, minimal, warm) plus custom theme support
- Info Cards — Admin-configured content blocks: house rules, checkout time, local recommendations
- Weather — Current temperature and conditions via Open-Meteo (free, no API key)
- UniFi Integration — Auto-sync guest WiFi SSID/password from your UniFi controller
- WiFi QR Code — Guests scan to connect instantly (works on iOS and Android)
- SQLite Database — Zero-config persistent storage, no external DB needed
- Multi-guest Support — Multiple active guests shown as "Welcome, Jane & John"
- Custom Messages — Per-guest welcome messages
- Anti burn-in — Subtle content drift to protect your display
Pull the pre-built image from GitHub Container Registry:
docker compose up -dOr build locally:
docker compose up -d --build| URL | Purpose |
|---|---|
http://<host>:3000/display |
TV-facing welcome screen |
http://<host>:3000/admin |
Admin dashboard |
docker pull ghcr.io/sudobrandino/welcomeboard:mainnpm install
npm run devCopy .env.example to .env and configure as needed. All settings have sensible defaults.
Set these environment variables (in .env or docker-compose.yml):
UNIFI_HOST=192.168.1.1
UNIFI_PORT=443
UNIFI_USER=admin
UNIFI_PASS=your-password
UNIFI_SITE=default
UNIFI_IS_UNIFIOS=true # true for UDM/UDR/CK Gen2+Then hit "Sync Guest WiFi" in the admin panel.
Tip: Create a read-only local admin account on your UniFi controller specifically for this integration.
┌─────────────┐ ┌──────────────┐ ┌──────────────────┐
│ TV Display │◄────│ Express API │────►│ UniFi Controller│
│ (HTML/JS) │ │ + SQLite │ │ (optional) │
└─────────────┘ └──────────────┘ └──────────────────┘
▲
┌─────┴──────┐
│ Admin Panel│
│ (Alpine.js)│
└────────────┘
Single container. No build step. No external dependencies beyond Docker.
MIT