# Media Upload & Embed Specification **Version:** 1.1 **Datum:** 2026-04-27 **Status:** DRAFT - Awaiting Review **Autor:** Claude Code **Änderungen v1.1:** Rollenbasierte Server-Limits (`EXERCISE_MEDIA_*_MB`) --- ## 1. Upload-Strategie ### 1.1 Hybrid-Ansatz **Zwei Medienquellen:** 1. **Lokale Uploads:** Datei-Upload auf Server (Images, Videos, PDFs, Sketches) 2. **Embeds:** Einbetten von YouTube, Instagram, Vimeo, TikTok **Vorteile:** - Lokale Kontrolle über kritische Inhalte - Keine Abhängigkeit von Drittanbietern für Kern-Content - Externe Plattformen für ergänzende Videos **Limitierungen (implementiert):** - Max. Dateigröße: **50 MB** Standardnutzer (`EXERCISE_MEDIA_MAX_UPLOAD_MB`, Default 50). - **`admin` / `superadmin`**: höheres Limit (**1024 MB** Default `EXERCISE_MEDIA_ADMIN_MAX_UPLOAD_MB`; nie unter dem Nutzer-Limit in MB). - Max. 10 Media-Items pro Übung (kombiniert Local + Embeds) — siehe Backend-Validierung - Erlaubte Formate: JPEG, PNG, GIF, MP4, PDF --- ## 2. Upload-Flow (Lokale Dateien) ### 2.1 Frontend-Komponente: MediaUploader **Props:** ```typescript interface MediaUploaderProps { exerciseId: number existingMedia: Media[] onUploadComplete: (media: Media) => void maxFiles?: number // default: 10 maxSizeMB?: number // default: 50 } ``` **UI-Struktur:** ```jsx
{/* Drag & Drop Area */} {/* Preview Grid */}
{uploadQueue.map(file => (
))}
{/* Metadata Form (per File) */}