Skip to content

marcelkhan/Ultimate-Chatty

Repository files navigation

Ultimate-Chatty

Ultimate Chatty Icon

Eine moderne iOS‑Chat‑App mit stilvollem Auth‑Flow, klarer UI und Firebase‑Backend.


✨ Überblick

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.

Ultimate Chatty App Vorschau

📑 Inhaltsverzeichnis

✅ Funktionsumfang

  • 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

🧩 Screens (Auszug)

  • Login
  • Registrierung
  • Chats (Konversationsliste)
  • Neuer Chat (User‑Suche)
  • Chat‑Ansicht
  • Einstellungen & Account‑Bearbeitung

🛠️ Tech‑Stack

  • SwiftUI (iOS)
  • Firebase Auth
  • Firebase Firestore
  • XCTest (Unit‑Tests)

📦 Datenmodell (Firestore)

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)

🧭 App‑Struktur

Ultimate Chatty/
├─ View/
│  ├─ Authentication/
│  ├─ Conversations/
│  ├─ Chats/
│  └─ Settings/
├─ ViewModel/
├─ Model/
├─ Services/
└─ Utils/

🔐 Firebase‑Setup

  1. Firebase‑Projekt erstellen.
  2. iOS‑App registrieren (Bundle Identifier muss übereinstimmen).
  3. GoogleService‑Info.plist herunterladen.
  4. Datei in das Xcode‑Projekt hinzufügen (Target: Ultimate Chatty).

Hinweis: Die GoogleService-Info.plist ist bewusst nicht im Repository enthalten und muss lokal ergänzt werden.

✅ Tests

  • Unit‑Tests laufen ohne Firebase (Mocks statt echter Services).
  • Keine Firebase‑Initialisierung im Test‑Target erforderlich.

▶️ Lokales Ausführen

  1. Projekt öffnen: Ultimate Chatty.xcodeproj
  2. Zielgerät wählen (Simulator oder Gerät)
  3. Run in Xcode

🔄 Realtime‑Verhalten

  • 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.

🧹 Architektur‑Hinweise

  • 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.

🧱 Models (App‑Modelle)

  • User: Nutzerprofil (Name, Username, Email, Status)
  • ChatMessage: Nachricht im Chat‑Verlauf inkl. Read‑Status
  • ConversationItem: Anzeige‑Modell für Konversationsliste
  • ThreadSnapshot: Thread‑Metadaten (Last Message, Timestamp, Unread)
  • Message: Firestore‑Mapping für Chat‑Messages
  • StatusOption: Verfügbare Online‑Status
  • SettingsSection: Settings‑Sektionen
  • SettingsRoute: Navigation in den Settings
  • ViewState: UI‑State (idle/loading/success/failure)
  • AppError: Fehler‑Mapping für UI
  • FirestoreKeys: Zentrale Keys für Collections/Fields

🧪 Troubleshooting

  • 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.

📌 Status

Aktive Entwicklung.

🚧 Geplante Funktionen (noch nicht umgesetzt)

  • Passwort vergessen
  • Gruppen
  • Benachrichtigungen
  • Favoriten (mit Stern markiert)
  • Support kontaktieren
  • Profilbild in Firestore (kein Firebase Storage)

📄 Lizenz

MIT License © 2025–2026 Marcel Khan. Jede Weiterverwendung muss die namentliche Nennung beibehalten.

About

A simple chat application for iOS that allows you to send messages in real time

Topics

Resources

License

Stars

Watchers

Forks

Contributors

Languages