Eine moderne iOS‑Chat‑App mit stilvollem Auth‑Flow, klarer UI und Firebase‑Backend.
Ultimate Chatty ist eine SwiftUI‑basierte Chat‑App mit einem modernen Auth‑Flow, einem Main‑Tab‑Layout und einem Firebase‑Backend (Auth + Firestore). Das UI ist auf iPhone und iPad optimiert und setzt auf wiederverwendbare Komponenten, klare Typografie und eine glassmorphism‑ähnliche Gestaltung.
- Überblick
- Funktionsumfang
- Screens (Auszug)
- Tech‑Stack
- Datenmodell (Firestore)
- App‑Struktur
- Firebase‑Setup
- Tests
- Lokales Ausführen
- Realtime‑Verhalten
- Architektur‑Hinweise
- Models (App‑Modelle)
- Troubleshooting
- Status
- Lizenz
- Auth‑Flow: Login & Registrierung mit animierter Glas‑Card
- Session‑Handling: Automatische Umschaltung zwischen Auth und App‑Bereich
- Chats: Konversationsliste mit Live‑Updates
- Neue Nachricht: Nutzerliste mit Suche
- Chat‑Screen: Live‑Messages, Versand, Read‑Receipts
- Status: Online/Abwesend/Beschäftigt/Offline aus Firebase inkl. Farb‑Indikator
- Unread‑Counter: Neue Nachrichten pro Chat inkl. Reset beim Öffnen
- Settings & Profil: Profilname, Status, Bildauswahl
- iPad‑Optimierung: Adaptive Layouts und Typografie
- Login
- Registrierung
- Chats (Konversationsliste)
- Neuer Chat (User‑Suche)
- Chat‑Ansicht
- Einstellungen & Account‑Bearbeitung
- SwiftUI (iOS)
- Firebase Auth
- Firebase Firestore
- XCTest (Unit‑Tests)
Users
uid(String)fullName(String)username(String)email(String)status(String:online | busy | away | offline)
Messages/{uid}/{otherUid}
fromId(String)toId(String)text(String)timestamp(Timestamp)isRead(Bool)
Messages/{uid}/threads/{otherUid}
uid(String)lastMessage(String)timestamp(Timestamp)unreadCount(Int)
Ultimate Chatty/
├─ View/
│ ├─ Authentication/
│ ├─ Conversations/
│ ├─ Chats/
│ └─ Settings/
├─ ViewModel/
├─ Model/
├─ Services/
└─ Utils/
- Firebase‑Projekt erstellen.
- iOS‑App registrieren (Bundle Identifier muss übereinstimmen).
- GoogleService‑Info.plist herunterladen.
- Datei in das Xcode‑Projekt hinzufügen (Target: Ultimate Chatty).
Hinweis: Die
GoogleService-Info.plistist bewusst nicht im Repository enthalten und muss lokal ergänzt werden.
- Unit‑Tests laufen ohne Firebase (Mocks statt echter Services).
- Keine Firebase‑Initialisierung im Test‑Target erforderlich.
- Projekt öffnen: Ultimate Chatty.xcodeproj
- Zielgerät wählen (Simulator oder Gerät)
- Run in Xcode
- Chats werden live aktualisiert (Threads‑Listener).
- Status wird in der Konversationsliste und im Chat‑Header live übernommen.
- Unread‑Counter wird im Thread gespeichert und beim Öffnen auf 0 gesetzt.
- Read‑Receipts: Ausgehende Nachrichten zeigen „Gesehen“, sobald der Empfänger sie gelesen hat.
- ViewModels steuern UI‑State und benutzen Services.
- Services kapseln Firebase‑Zugriffe (Auth, User, Chat, Conversations).
- Utils enthalten wiederverwendbare UI‑Komponenten.
- Model enthält App‑Datenstrukturen.
User: Nutzerprofil (Name, Username, Email, Status)ChatMessage: Nachricht im Chat‑Verlauf inkl. Read‑StatusConversationItem: Anzeige‑Modell für KonversationslisteThreadSnapshot: Thread‑Metadaten (Last Message, Timestamp, Unread)Message: Firestore‑Mapping für Chat‑MessagesStatusOption: Verfügbare Online‑StatusSettingsSection: Settings‑SektionenSettingsRoute: Navigation in den SettingsViewState: UI‑State (idle/loading/success/failure)AppError: Fehler‑Mapping für UIFirestoreKeys: Zentrale Keys für Collections/Fields
- Leerer Chat/Users: Prüfen, ob Firebase Auth und Firestore aktiv sind.
- Keine Live‑Updates: Netzwerk prüfen und Firestore‑Rules testen.
- Build‑Fehler: Sicherstellen, dass nur eine AuthViewModel‑Definition im Build ist.
Aktive Entwicklung.
- Passwort vergessen
- Gruppen
- Benachrichtigungen
- Favoriten (mit Stern markiert)
- Support kontaktieren
- Profilbild in Firestore (kein Firebase Storage)
MIT License © 2025–2026 Marcel Khan. Jede Weiterverwendung muss die namentliche Nennung beibehalten.
