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.
Find a file
2026-05-16 00:29:49 -04:00
services fix(infra+workers): S3 creds, ffprobe, BullMQ awaits, thumbnail seek, bin optional, docker-compose vars, jobs Redis, recorders stop codes: executor.js 2026-05-16 00:29:49 -04:00
.env.example fix(infra+workers): S3 creds, ffprobe, BullMQ awaits, thumbnail seek, bin optional, docker-compose vars, jobs Redis, recorders stop codes: .env.example 2026-05-16 00:29:45 -04:00
.gitignore add .gitignore 2026-04-07 21:58:17 -04:00
docker-compose.yml fix(infra+workers): S3 creds, ffprobe, BullMQ awaits, thumbnail seek, bin optional, docker-compose vars, jobs Redis, recorders stop codes: docker-compose.yml 2026-05-16 00:29:46 -04:00
README.md add README.md 2026-04-07 21:58:16 -04:00
setup-repo.sh add setup-repo.sh 2026-04-07 21:58:16 -04:00

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