Dragonflight - self-hosted broadcast media asset management. SRT/RTMP/SDI ingest via Blackmagic DeckLink, FFmpeg proxy generation, growing-file editing via SMB + Premiere Pro CEP panel, BullMQ job queue, S3-compatible storage (RustFS). Replaces Grass Valley AMPP FramelightX.
With asChild, Radix merges its pointer event handlers directly onto the
draggable div. This interferes with browser drag gesture initiation,
resulting in no ghost image and no drag events firing.
Fix: remove asChild so ContextMenuTrigger renders its own span (with
display:contents to preserve layout). Radix handlers now live on the
ancestor span, not the draggable div. Right-click still bubbles up to
trigger the context menu correctly.
Also add draggable={false} to <img> elements inside draggable divs
to prevent browser native image drag from competing with the parent.
|
||
|---|---|---|
| docs/superpowers | ||
| services | ||
| .env.example | ||
| .gitignore | ||
| docker-compose.yml | ||
| README.md | ||
| setup-repo.sh | ||
Wild Dragon
Self-hosted Media Asset Management platform built to replace Grass Valley AMPP FramelightX.
Services
| Service | Port | Description |
|---|---|---|
| web-ui | 8080 | Browser-based MAM interface + capture controls |
| mam-api | 3000 | REST API — assets, projects, bins, jobs |
| capture | 3001 | SDI capture daemon (Blackmagic DeckLink + FFmpeg) |
| worker | — | Async job processor (proxy gen, thumbnails, conform) |
| db | 5432 | PostgreSQL 16 metadata store |
| queue | 6379 | Redis 7 job queue (BullMQ) |
Quick Start
# Clone
git clone https://forge.wilddragon.net/zgaetano/wild-dragon.git
cd wild-dragon
# Configure
cp .env.example .env
# Edit .env with your S3 credentials and secrets
# Launch
docker compose up -d
# Open
open http://localhost:8080
Architecture
SDI Input (DeckLink) → capture service → dual FFmpeg streams
├─ HiRes (ProRes) → S3
└─ Proxy (H.264) → S3
↓
web-ui ← mam-api ← PostgreSQL ← worker (BullMQ)
├─ proxy_gen
├─ thumbnail
└─ conform (EDL → FFmpeg → export)
Tech Stack
- Backend: Node.js / Express
- Frontend: Vanilla HTML/CSS/JS
- Database: PostgreSQL 16
- Queue: Redis 7 + BullMQ
- Storage: S3-compatible (RustFS)
- Media Processing: FFmpeg
- Capture: Blackmagic DeckLink SDK
- Deployment: Docker Compose
License
MIT