# Flixy > Ein nativer Plex-Client für iPhone und iPad — dunkel, mit ausfahrbarer > Seitenleiste und Offline-Downloads. Der Name ist ein Platzhalter. Siehe [`Flixy/Branding.swift`](Flixy/Branding.swift). ## Stand Phase 0 (Fundament) steht. Die App startet, die Navigation ist begehbar, die Inhalte folgen in Phase 1. Der Fahrplan steht in [`docs/superpowers/specs/2026-09-11-flixy-design.md`](docs/superpowers/specs/2026-09-11-flixy-design.md). | Phase | Inhalt | Stand | |---|---|---| | 0 | Projektgerüst, Design-Tokens, Navigation | ✅ | | 1 | Anmeldung, Bibliothek, DirectPlay | offen | | 2 | Transcoding, adaptive Bitrate, Spuren, Sync | offen | | 3 | Download-Engine und Offline-Wiedergabe | offen | | 4 | Download-Intelligenz | offen | | 5 | Feinschliff und Personalisierung | offen | | 6 | Live-TV mit EPG | offen | ## Aufbau Die Xcode-Projektdatei wird aus `project.yml` erzeugt und ist **nicht** eingecheckt — das erspart Konflikte in der `pbxproj`. ```bash xcodegen generate open Flixy.xcodeproj ``` Der Code liegt zum größten Teil in lokalen Packages unter `Packages/FlixyKit`. Das App-Target enthält nur Oberfläche und Navigation. | Modul | Aufgabe | Hängt ab von | |---|---|---| | `PlexKit` | Anmeldung, Endpunkte, Modelle. Kein SwiftUI. | — | | `FlixyDesign` | Farben, Typografie, wiederkehrende Bausteine. | — | | `FlixyPlayback` | Wiedergabe-Abstraktion und die Entscheidung DirectPlay/Transcode. | `PlexKit` | | `FlixyDownloads` | Warteschlange, Hintergrundübertragung, Offline-Bestand. | `PlexKit` | ### Warum zwei Player iOS spielt weder Matroska-Dateien noch DTS- oder TrueHD-Ton — und genau das liegt in typischen Plex-Beständen. `PlaybackDecider` prüft deshalb pro Datei, ob AVPlayer sie nativ öffnen kann (dann gibt es Bild-in-Bild und AirPlay gratis), und schickt sie sonst an VLCKit. Ab Phase 2 kommt der dritte Weg dazu: Server-Transcoding. Dafür ist genau eine Funktion zu erweitern — `PlaybackDecider.decide(media:part:policy:)`. Die Oberfläche bleibt unberührt. ## Tests Die Logik-Tests laufen ohne Simulator, deshalb in Sekunden: ```bash cd Packages/FlixyKit && swift test ``` Die wichtigste Testdatei ist `PlaybackDeciderTests` — sie hält fest, welche Datei auf welchem Weg landet, und schlägt an, sobald jemand `DeviceCapabilities` anfasst. Die Antwort-Vorlagen unter `Tests/PlexKitTests/Fixtures` sind von Hand geschrieben und gehören durch echte Mitschnitte ersetzt, sobald ein Server erreichbar ist — siehe das README dort. Die Oberfläche wird von Hand im Simulator geprüft. ## Voraussetzungen - Xcode 26 oder neuer - iOS 26.0 auf dem Zielgerät - XcodeGen (`brew install xcodegen`)