// case study mobile
Neat
Eine native SwiftUI-App zum Aufräumen der Fotomediathek mit schnellen Swipe-Entscheidungen, sicherer Lösch-Warteschlange, Live-Photo- und Video-Support, Duplikaterkennung und poliertem iOS/macOS-Erlebnis.
// tl;dr — hat's funktioniert?
// der Auslöser
Das Problem
Fotomediatheken wachsen unbemerkt: Screenshots, doppelte Aufnahmen, große Videos, alte Erinnerungen und fast identische Serien sammeln sich über Jahre an. Manuelles Löschen in Apple Fotos ist langsam, repetitiv und riskant, weil Nutzer vor dem Entfernen Sicherheit brauchen.
// das Setup
Kontext & Rahmenbedingungen
Neat ist eine fokussierte native App rund um eine zentrale Interaktion: ein Medium nach dem anderen prüfen, behalten oder zum Löschen vormerken und am Ende die gesamte Auswahl über Apples eigenen Löschdialog bestätigen. Das Projekt läuft mit einer SwiftUI-Codebase auf iOS und macOS.
// meine Entscheidungen
Entscheidungen & Tradeoffs
Native SwiftUI und PhotoKit statt Cross-Platform-Shell nutzen
Fotozugriff, Löschen, Live Photos, Videowiedergabe, Haptik und macOS-Tastatursteuerung profitieren von nativen APIs. SwiftUI hält die Oberfläche flexibel, während PhotoKit sicheren Zugriff auf große Mediatheken ermöglicht.
Löschentscheidungen sammeln statt sofort löschen
Jeder Lösch-Swipe legt das Medium nur in eine temporäre Warteschlange. Nutzer können rückgängig machen, die Auswahl prüfen, einzelne Medien behalten und erst danach Apples Systembestätigung auslösen.
Performance für große Mediatheken planbar halten
Die App hält ein lazy PHFetchResult statt die gesamte Mediathek in den Speicher zu laden, lädt nur ein kleines bewegliches Fenster vor und spielt Bewegung nur auf der vorderen Karte ab.
Duplikatbereinigung prüfbar statt automatisch machen
Vision Feature Prints erkennen fast identische Gruppen, aber Nutzer vergleichen die Bilder weiterhin selbst, wählen die besten aus und führen den Merge erst nach Prüfung aus.
// wie's zusammenpasst
Architektur
SwiftUI-App → SessionViewModel-State-Machine → PhotoKit-Fetch-/Löschservices → gecachtes Medienladen → Vision-basierte Duplikaterkennung → sichere Apple-Löschbestätigung.
// die harten Teile
Zentrale Herausforderungen
- Einen Löschflow entwickeln, der schnell wirkt, ohne destruktive Aktionen beiläufig erscheinen zu lassen.
- Fotos, Videos und Live Photos flüssig darstellen, während nur ein kleines aktives Fenster dekodiert wird.
- Duplikaterkennung nützlich machen, ohne dem Nutzer die Kontrolle über tatsächlich entfernte Medien zu nehmen.
- Dieselbe Produktidee für touchbasiertes iOS und tastatur-/buttonbasiertes macOS passend umsetzen.
// ist es live gegangen?
Ergebnis
Eine polierte native Cleanup-App mit First-Run-Onboarding, animiertem Live-Hintergrund, Swipe-Review, Undo, sicherer Löschübersicht, Duplikatvergleich, Live-Photo-/Video-Support und gemeinsamer iOS/macOS-Architektur.
// im Nachhinein, 20/20
Die aktuelle Version fokussiert ein hochwertiges, lokales Cleanup-Erlebnis. Weitere Verbesserungen wären feinere Duplikat-Gruppierung, stärkere Empty States, App-Store-Analytics und ausführlichere Accessibility-Tests auf echten Geräten.
Stack
- Swift
- SwiftUI
- PhotoKit
- PhotosUI
- AVFoundation
- Vision
- CoreGraphics
- Observation
- Xcode
- iOS
- macOS