# DarkMedia-X Studio Architecture ``` ┌─────────────────────────────────────────────────────────────────────────┐ │ DARKMEDIA-X STUDIO ARCHITECTURE │ └─────────────────────────────────────────────────────────────────────────┘ ┌──────────────────┐ │ VERCEL │ https://darkmedia-xstudio.vercel.app │ (Landing Page) │ Static HTML — scanlines, vignette, CTA └────────┬─────────┘ │ │ "LANCER LE STUDIO" ▼ ┌──────────────────────────────────────────────────────────────┐ │ HUGGING FACE SPACE (Gradio UI) │ │ cybermedia/darkmedia-x-studio │ │ app.py — Python 3.12+ │ │ │ │ ┌─────────────┐ ┌─────────────┐ ┌────────────────────┐ │ │ │ PROJECT │ │ EDITOR │ │ MONITOR │ │ │ │ BIN │ │ Scripting │ │ Video Output │ │ │ │ Stories │ │ Gallery │ │ System Logs │ │ │ │ Delete │ │ Visuals │ │ Service Status │ │ │ └─────────────┘ └─────────────┘ └────────────────────┘ │ │ │ │ ┌──────────────────────────────────────────────────────┐ │ │ │ EXTERNAL SERVICES PANEL │ │ │ │ ⚡ Hugging Face ● ONLINE │ │ │ │ ⚡ Gradio Spaces ● ONLINE │ │ │ │ ⚡ FFmpeg ● v7.x │ │ │ │ ⚡ Edge TTS ● ONLINE │ │ │ │ ⚡ Cloudflare R2 ● ONLINE │ │ │ │ │ │ │ │ 🖼 Image FLUX.1-schnell ● READY │ │ │ │ 🎤 Voice Parler-TTS-mini-v1 ● READY │ │ │ │ 🎵 Music MusicGen-small ● READY │ │ │ │ 🎬 Video SVD-img2vid-xt ● READY │ │ │ └──────────────────────────────────────────────────────┘ │ └──────────────────────────┬──────────────────────────────────┘ │ ┌──────────────────┼──────────────────┐ │ │ │ ▼ ▼ ▼ ┌───────────────┐ ┌───────────────┐ ┌───────────────┐ │ HF INFER. │ │ HF INFER. │ │ HF INFER. │ │ API (ZeroGPU)│ │ API (ZeroGPU)│ │ API (ZeroGPU)│ │ │ │ │ │ │ │ 🖼 FLUX.1 │ │ 🎤 Parler- │ │ 🎵 MusicGen │ │ 1080x1920 │ │ TTS │ │ small │ │ 4 steps │ │ French voice │ │ 30s audio │ └───────┬───────┘ └───────┬───────┘ └───────┬───────┘ │ │ │ │ │ │ ▼ ▼ ▼ ┌──────────────────────────────────────────────────────┐ │ CLOUDFLARE R2 (Media Storage) │ │ darkmedia-x-studio bucket │ │ │ │ stories/ │ │ horror_story_01/ │ │ assets/images/scene_1.png ← R2 URL │ │ assets/images/scene_2.png ← R2 URL │ │ assets/sounds/voice_1.wav ← R2 URL │ │ assets/sounds/background_music.wav ← R2 URL │ │ horror_story_01_final.mp4 ← R2 URL │ └──────────────────────────────────────────────────────┘ ┌──────────────────────────────────────────────────────┐ │ LOCAL MACHINE │ │ │ │ backend/ ← FastAPI (dev only, optional) │ │ engine/ ← Python + Rust generators │ │ data/stories/ ← Local story cache │ │ data/videos/ ← Local video cache │ └──────────────────────────────────────────────────────┘ DATA FLOW: 1. User clicks "LANCER LE STUDIO" on Vercel → HF Space 2. HF Space receives story text → parses scenes 3. For each scene: a. Sends prompt → HF Inference API (FLUX) → gets image b. Sends narration → HF Inference API (Parler-TTS) → gets audio 4. Background music → HF Inference API (MusicGen) → gets audio 5. All generated files → auto-upload to Cloudflare R2 6. ffmpeg assembles images + audio → final MP4 → upload to R2 7. Gallery shows media via R2 public URLs (not local disk) GPU USAGE: ┌─────────────────┬──────────┬──────────────────────────────┐ │ Component │ GPU? │ Provider │ ├─────────────────┼──────────┼──────────────────────────────┤ │ Image gen │ ✅ ZeroGPU│ HF Inference API (FLUX) │ │ Voice gen │ ✅ ZeroGPU│ HF Inference API (Parler) │ │ Music gen │ ✅ ZeroGPU│ HF Inference API (MusicGen) │ │ Video gen │ ✅ ZeroGPU│ HF Inference API (SVD) │ │ ffmpeg assembly │ ❌ CPU │ HF Space (lightweight) │ │ Vercel frontend │ ❌ Static│ CDN only │ │ Local machine │ ❌ Idle │ Nothing heavy │ └─────────────────┴──────────┴──────────────────────────────┘ ```