╔════════════════════════════════════════════════════════╗ ║ █████╗ ██████╗ ██╗ ██╗ ██╗ ███╗ ██╗ ██████╗ ║ ║ ██╔══██╗██╔══██╗ ██║ ██║ ██║ ████╗ ██║ ██╔════╝ ║ ║ ███████║██████╔╝ ██║ ███████║ ██╔██╗ ██║ ██║ ███╗ ║ ║ ██╔══██║██╔══██╗██ ██║ ╚════██║ ██║╚██╗██║ ██║ ██║ ║ ║ ██║ ██║██║ ██║╚█████╔╝ ██║ ██║ ╚████║ ╚██████╔╝ ║ ║ ╚═╝ ╚═╝╚═╝ ╚═╝ ╚════╝ ╚═╝ ╚═╝ ╚═══╝ ╚═════╝ ║ ╚═════════════════════[ ON THE CODE ]════════════════════╝
Konsumkosten sichtbar machen. Gewohnheit brechen. Fortschritt belohnen.
BreakLoop ist mein iOS Bootcamp Abschlussprojekt.
Die Idee: Nutzer:innen sehen klar, was ihr Konsum wirklich kostet, setzen sich Ziele und bleiben mit kleinen Rewards eher dran.
Im Alltag wirken Konsumkosten oft „nicht so schlimm". Wenn man die Zahlen aber auf Woche, Monat und Jahr sieht, ändert sich der Blick schnell. Genau da setzt BreakLoop an.
Onboarding Flow→ Mehrstufig, generisch für verschiedene Konsumtypen, mit dynamischem Cost/Usage SetupAuth Flow→ Sign in, Register, Guest mit Routing über Root FlowDashboard→ Live Übersicht mit Overview, Activity Monitor, Cost/Consumption Cards, Chart und Custom Bottom TabsQuit Mode→ Eigener Recovery Dashboard Zustand mit Streak, Money Saved, Units Avoided, Daily Burn Rate und Recovery Stage VorschauConsumable Picker→ Custom Overlay Menü mit Auswahl, Modify, Delete, Start Quit (mit Datumsauswahl) und Relapse AktionenSelection Persistence→ Zuletzt gewähltes Consumable wird lokal pro Account/Scope gemerkt und beim App-Start wiederhergestelltDashboard Warm Cache→ Letzter Dashboard Zustand wird lokal gecacht und sofort angezeigt, während Firestore im Hintergrund live nachlädtProfile Settings→ Dediziertes Profile Sheet mit Firestore Display-Name Update und sicherem Passwortwechsel via Re-AuthGuest Profile Guard→ Gäste sehen im Profile Bereich einen klaren Signup CTA statt direkter Security/Profile-EditsGlobal Status Bar Fade→ Oberer Lesbarkeits-Overlay für Scroll-Content unter dem Statusbereich (ohne Loading-Glitch)Entry Flows→ Slide-to-log für ConsumeEntries und Purchase Sheet für Preis, Menge und EinheitDetails Tab→ Umschaltbare Liste für Purchases und Consumes zur Kontrolle der RohdatenSettings→ Consumable Verwaltung mit Add/Edit/Archive und dynamischem Tracking-/KostenmodellShared Models→ User, Consumable, ConsumeEntry, PurchaseEntry, Rewards, Stats und flexible Cost-MetadatenCalculationService→ Kosten, Durchschnitt, Ersparnis, Reward Logik, Unit Mapping und Purchase-basierte Cost-per-Consume BerechnungQuit/Relapse Data Flow→ QuitPlans, QuitPlanEvents und RelapseEvents werden über Service + Firestore Repository persistiertFirestore Repositories→ CRUD für Profile, Consumables, ConsumeEntries, PurchaseEntries, Rewards, QuitPlans und Event-HistorieFirebase→ Auth + Firestore integriert, guestUsers/users Scope vorbereitet
- iOS + SwiftUI
- MVVM + Service Layer
- Firebase (Auth, Firestore, Messaging)
- Layered Struktur (
UI,Business,Storage,Platform)
BreakLoop/
├── BreakLoop/
│ ├── UI/ # Screens, Views, ViewModels
│ ├── Business/ # Domain Models + Business Services
│ ├── Storage/ # Firebase Repositories + Infra Services
│ ├── Platform/ # Design System + Utilities + Platform Config
│ ├── Assets.xcassets/
│ └── BreakLoopApp.swift
└── BreakLoopTests/
| Bereich | Status | Notiz |
|---|---|---|
| Projektstruktur | ✅ Fertig | Layered Struktur mit klarer Trennung von UI, Business, Storage und Platform steht |
| Design System | ✅ Basis fertig | Farben + Typografie angelegt |
| Domain Modelle | ✅ Fertig | Generische Konsum Modelle inkl. Stats und Rewards stehen |
| Calculation Engine | ✅ Fertig | Average, Cost, Saved Money und Reward Logik mit dynamischem Cost-per-Consume Modell |
| Firebase Setup | ✅ Fertig | SDK eingebunden, plist gesetzt, FirebaseApp.configure() aktiv |
| Repository Implementierung | ✅ Fertig | Firestore CRUD inkl. guest/registered Scope, Export/Import Snapshot Logik |
| Onboarding + Auth UI | ✅ Fertig | Flow steht inkl. dynamischem Consumable Setup und stabilem Root Routing |
| Feature Screens UI | ✅ Fertig | Dashboard, Recovery/Details und Settings sind vollständig nutzbar |
| Quit Mode + Recovery | ✅ Fertig | Start Quit mit Datum, Relapse Flow, Recovery Kennzahlen und Stage-Vorschau sind integriert und an Firestore angebunden |
| Consumable Management UX | ✅ Fertig | Custom Overlay Picker inkl. Actions (Modify/Delete/Start Quit/Relapse/Return) integriert |
| Profile & Security | ✅ Fertig | Display-Name Update über Firestore + Passwortwechsel via Firebase Re-Auth umgesetzt; Guest Signup Gate aktiv |
| Startup Performance | ✅ Fertig | Dashboard Warm-Cache und Startverhalten für die Kernflows umgesetzt |
| Wallpaper + API Integration | ✅ Fertig | Pexels Foto-Suche, Auswahl, Editor, globale Anwendung und lokale Persistenz integriert |
| Phase | Status | Ziel |
|---|---|---|
| 1 · Scaffold | ✅ Fertig | Grundstruktur, Module, Basis Design System |
| 2 · Core Tracking Engine | ✅ Fertig | Modelle + Berechnungen für Konsum, Kosten, Ersparnis und Rewards |
| 3 · Firebase Data Layer | ✅ Fertig | Auth + Repositories + guest/registered Datenpfade stehen |
| 4 · Onboarding & Auth UX | ✅ Fertig | Onboarding/Registration/SignIn Flow mit stabilem Routing abgeschlossen |
| 5 · Entry Flows + Dashboard UI | ✅ Fertig | Consume/Purchase Eingabe, Recovery Modus und Dashboard Live Werte vollständig integriert |
| 6 · Recovery Product Layer | ✅ Fertig | Quit/Relapse, Recovery Timeline und Kennzahlen sind produktiv umgesetzt |
| 7 · Wallpaper API Feature | ✅ Fertig | Wallpaper Flow inkl. Pexels API Integration, Suche, Editor, Blur und globaler Anwendung abgeschlossen |
Damit keine API Keys aus Versehen auf GitHub landen, sind Secrets absichtlich nur lokal.
- Datei kopieren:
BreakLoop/Config/Secrets.xcconfig.example→BreakLoop/Config/Secrets.xcconfig - In
Secrets.xcconfigdeinen lokalen Pexels Key eintragen:PEXELS_API_KEY=DEIN_KEY BreakLoop/BreakLoop/GoogleService-Info.plistnur lokal behalten (Datei ist bereits in.gitignore)- Einmalig Secret-Schutz für Commits aktivieren:
git config core.hooksPath .githooks
Kurz gesagt: Keys lokal ja, im Repo nein.