Doku: Handoff-Dokument für Session-Übergaben
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
1b2c880c89
commit
8b74a5b3df
1 changed files with 50 additions and 0 deletions
50
docs/handoff.md
Normal file
50
docs/handoff.md
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
# Handoff: LeafItToMe (Pflanzenpflege-App)
|
||||
|
||||
Stand: 2026-07-19. Sprache mit dem Nutzer (Chris): **Deutsch**.
|
||||
|
||||
## Projekt in einem Satz
|
||||
|
||||
Private Flutter-App (iOS+Android) zur Pflanzenpflege für Haushalt + Pflanzen-Sitter: Foto-Erkennung (PlantNet + Claude), Gieß-/Düngeplan mit Tages-Checkliste, tägliche Sammel-Push, Haushalt-Teilen per Einladungscode mit Rollen.
|
||||
|
||||
## Wo alles liegt
|
||||
|
||||
- **Code:** `~/Documents/Projekte/Planty` (Ordner heißt noch Planty, Projekt heißt seit Umbenennung `leafittome`, App-Name „LeafItToMe", Bundle-ID-Platzhalter `dev.leafittome.app`)
|
||||
- **Git-Remote:** selbst gehostetes Forgejo `https://git.cshomelabs.work/cschlaefke/leafittome.git` (HTTPS + Token im macOS-Schlüsselbund, `git push` läuft ohne Abfrage)
|
||||
- **Doku (im Repo, deutsch, aktuell halten!):** `README.md`, `docs/architektur.md`, `docs/firebase-einrichtung.md` (Schritt-für-Schritt-Historie aller Backend-Einrichtungen), `docs/git-forgejo.md`
|
||||
- **Claude-Memory:** Projektplan, Nutzerprofil und Backlog liegen im persistenten Memory-Verzeichnis dieser Claude-Code-Installation (werden automatisch geladen)
|
||||
- **Firebase-Projekt:** `leaf-it-to-me-app` (Blaze aktiv, Budget-Alarm eingerichtet; Firebase CLI ist eingeloggt)
|
||||
- **Functions:** `functions/` (TypeScript, Node 22, Region europe-west3): `identifyPlant` (PlantNet + Claude, Secrets `PLANTNET_API_KEY`/`ANTHROPIC_API_KEY` im Secret Manager), `sendDailyReminders` (alle 15 Min), `joinHousehold` (Einladungs-Einlösung)
|
||||
|
||||
## Verifizierter Stand
|
||||
|
||||
- **V1 komplett** und auf Android Ende-zu-Ende getestet: Foto → Erkennung → vorbefülltes Profil; Tages-Checkliste; Sammel-Push kam im regulären Scheduler-Lauf auf dem Sperrbildschirm an. iOS-App läuft ebenfalls (Login, Pflanzen, Fotos) — **nur iOS-Push fehlt** (braucht Apple Developer Account, Beantragung scheiterte bisher an Apples Webseite; Schritte stehen in `docs/firebase-einrichtung.md` Schritt 6).
|
||||
- **V2 implementiert und deployt** (Commit `1b2c880`), vom Nutzer **noch nicht getestet**: Einladungscodes (member/sitter), `joinHousehold`-Function, Rules-Enforcement für Sitter, „bestätigt von"-Anzeige. Testplan wurde dem Nutzer genannt (iPhone-Konto lädt Android-Konto ein — er hat versehentlich zwei getrennte Konten/Haushalte).
|
||||
|
||||
## Offen / Nächstes
|
||||
|
||||
1. Rückmeldung zum V2-Test abwarten, Bugs fixen.
|
||||
2. iOS-Push, sobald Apple Developer Account existiert.
|
||||
3. **V3:** Krankheits-Diagnose per Foto, Stellplatz-Bewertung (Standort-Analyse pro Stellplatz + Eignungs-Sterne pro Pflanze — Zwei-Ebenen-Konzept siehe Memory), Umtopf-Erinnerungen.
|
||||
4. **Backlog:** Button „KI-Zweitmeinung" bei unbefriedigendem PlantNet-Ergebnis; Push-Anzeige auch bei App im Vordergrund; App Check vor App-Store-Release; Englisch (`app_en.arb`).
|
||||
|
||||
## Stolperfallen (teuer erkauft, nicht erneut zahlen)
|
||||
|
||||
- `firebase functions:log` hinkt **15–20 Minuten** hinterher — „keine Läufe" heißt meist nur Log-Verzögerung. Scheduler-Status im Cloud-Scheduler-Console prüfen lassen.
|
||||
- Android zeigt FCM-Pushes **nur bei App im Hintergrund**.
|
||||
- `flutter_timezone` ≥5 liefert `TimezoneInfo`-Objekt → `.identifier` verwenden (Objekt crasht Firestore-Writes still).
|
||||
- Storage-Rules mit `firestore.get()` brauchen die IAM-Rolle „Firebase Rules Firestore Service Agent" fürs Storage-Dienstkonto (wurde manuell erteilt).
|
||||
- Erster Functions-Deploy in frischem Projekt kann mit 403 `iam.serviceaccounts.actAs` scheitern → wenige Minuten warten, erneut deployen.
|
||||
- Analyzer: `build/` und `ios/build/` sind in `analysis_options.yaml` ausgeschlossen (SwiftPM legt dort Fremdcode ab).
|
||||
- Nutzer wünscht zu jedem Backend-Baustein **begleitende deutsche Doku** in `docs/` (keine Firebase-Vorerfahrung).
|
||||
|
||||
## Arbeitsabläufe
|
||||
|
||||
- Prüfen: `flutter analyze && flutter test` (Tests mocken Firebase via `firebase_auth_mocks`/`fake_cloud_firestore`); Android-Verifikation: `flutter build apk --debug`
|
||||
- Texte: nur in `lib/l10n/app_de.arb` (typografische Anführungszeichen „…“ verwenden, gerade `"` brechen das JSON), dann `flutter gen-l10n`
|
||||
- Deploy: `firebase deploy --only functions|firestore|storage --project leaf-it-to-me-app`; nach jedem Arbeitsstand committen + `git push`
|
||||
|
||||
## Suggested skills
|
||||
|
||||
- `/verify` — nach nichttrivialen Änderungen den echten Flow treiben (Gerät/Simulator), nicht nur Tests
|
||||
- `/code-review` — vor größeren Merges über den Diff laufen lassen
|
||||
- `/run` — App starten/screenshotten, wenn Änderungen sichtbar geprüft werden sollen
|
||||
Loading…
Reference in a new issue