# 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

```bash
# 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
