Skip to content

Latest commit

 

History

74 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

╔════════════════════════════════════════════════════════╗
║  █████╗ ██████╗      ██╗ ██╗  ██╗ ███╗   ██╗  ██████╗  ║
║ ██╔══██╗██╔══██╗     ██║ ██║  ██║ ████╗  ██║ ██╔════╝  ║
║ ███████║██████╔╝     ██║ ███████║ ██╔██╗ ██║ ██║  ███╗ ║
║ ██╔══██║██╔══██╗██   ██║ ╚════██║ ██║╚██╗██║ ██║   ██║ ║
║ ██║  ██║██║  ██║╚█████╔╝      ██║ ██║ ╚████║ ╚██████╔╝ ║
║ ╚═╝  ╚═╝╚═╝  ╚═╝ ╚════╝       ╚═╝ ╚═╝  ╚═══╝  ╚═════╝  ║
╚═════════════════════[ ON THE CODE ]════════════════════╝
  

BreakLoop

BreakLoop App Icon

Konsumkosten sichtbar machen. Gewohnheit brechen. Fortschritt belohnen.

Plattform Architektur Status

Kurzpitch

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.

Warum ich die App baue

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.

Was aktuell drin ist

  • Onboarding Flow → Mehrstufig, generisch für verschiedene Konsumtypen, mit dynamischem Cost/Usage Setup
  • Auth Flow → Sign in, Register, Guest mit Routing über Root Flow
  • Dashboard → Live Übersicht mit Overview, Activity Monitor, Cost/Consumption Cards, Chart und Custom Bottom Tabs
  • Quit Mode → Eigener Recovery Dashboard Zustand mit Streak, Money Saved, Units Avoided, Daily Burn Rate und Recovery Stage Vorschau
  • Consumable Picker → Custom Overlay Menü mit Auswahl, Modify, Delete, Start Quit (mit Datumsauswahl) und Relapse Aktionen
  • Selection Persistence → Zuletzt gewähltes Consumable wird lokal pro Account/Scope gemerkt und beim App-Start wiederhergestellt
  • Dashboard Warm Cache → Letzter Dashboard Zustand wird lokal gecacht und sofort angezeigt, während Firestore im Hintergrund live nachlädt
  • Profile Settings → Dediziertes Profile Sheet mit Firestore Display-Name Update und sicherem Passwortwechsel via Re-Auth
  • Guest Profile Guard → Gäste sehen im Profile Bereich einen klaren Signup CTA statt direkter Security/Profile-Edits
  • Global 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 Einheit
  • Details Tab → Umschaltbare Liste für Purchases und Consumes zur Kontrolle der Rohdaten
  • Settings → Consumable Verwaltung mit Add/Edit/Archive und dynamischem Tracking-/Kostenmodell
  • Shared Models → User, Consumable, ConsumeEntry, PurchaseEntry, Rewards, Stats und flexible Cost-Metadaten
  • CalculationService → Kosten, Durchschnitt, Ersparnis, Reward Logik, Unit Mapping und Purchase-basierte Cost-per-Consume Berechnung
  • Quit/Relapse Data Flow → QuitPlans, QuitPlanEvents und RelapseEvents werden über Service + Firestore Repository persistiert
  • Firestore Repositories → CRUD für Profile, Consumables, ConsumeEntries, PurchaseEntries, Rewards, QuitPlans und Event-Historie
  • Firebase → Auth + Firestore integriert, guestUsers/users Scope vorbereitet

Tech und Struktur

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

Projektstatus

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

Abschluss

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

Lokales Secret Setup (wichtig)

Damit keine API Keys aus Versehen auf GitHub landen, sind Secrets absichtlich nur lokal.

  1. Datei kopieren: BreakLoop/Config/Secrets.xcconfig.example → BreakLoop/Config/Secrets.xcconfig
  2. In Secrets.xcconfig deinen lokalen Pexels Key eintragen: PEXELS_API_KEY=DEIN_KEY
  3. BreakLoop/BreakLoop/GoogleService-Info.plist nur lokal behalten (Datei ist bereits in .gitignore)
  4. Einmalig Secret-Schutz für Commits aktivieren: git config core.hooksPath .githooks

Kurz gesagt: Keys lokal ja, im Repo nein.

About

Make consumption costs visible - break habits - reward progress (my iOS bootcamp final project)

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages