Start · Devlog

Tag 1 · Freitag, 8. Mai 2026

Freitag, 2026-05-08 — Tag 1

Spieler-Sicht

Nutriphi geht live. Ein Werkzeug, das dir hilft, deine Mahlzeiten zu erfassen — per Foto, per Text oder manuell — und dir Kalorien und Makros zeigt.

Was du heute schon kannst

  • Anmelden mit deinem Verein-Account.
  • Mahlzeit per Foto — Aufnehmen oder hochladen, die KI sagt dir, was wahrscheinlich drauf ist, du speicherst.
  • Mahlzeit per Text — wenn du das Foto nicht machen willst.
  • Mahlzeit manuell — wenn du eh schon weißt, was drin ist.
  • Tagesübersicht mit Kalorien und Makros.

Hintergrund

Nutriphi war als Funktion im großen Mana-Repo Versuchskaninchen. Heute steht es auf eigenen Beinen — eigene Adresse, eigene Datenbank, gleicher KI-Service wie die anderen Verein-Apps. Wer schon ältere Daten im alten Mana-Food-Modul hat: das läuft parallel weiter, du verlierst nichts.

Macher-Sicht

Greenfield-Repo, Phase 0 bis Phase A in einem Initial-Commit, plus Pre-Flight-P1–P7. Strategie B (eigene App, Peer im Mana-Ökosystem), nicht Subprojekt. Live-Cut am gleichen Tag.

Stats

2 Commits, +10 111 / −14 LoC, 106 Files. 61× .ts, 13× .svelte, 13× .json. Top-Dirs api/routes (13 %), web/lib (12 %), api/db (11 %). Active-Time-Messung 2 Min (Single-Burst-Commits via claudebot — reale Vorarbeit war stundenlang, Commits sind das Push-Event).

Was im Initial-Commit drin ist

  • Repo-Skelett. Turborepo + pnpm + Bun für API, Drizzle + Postgres mit pgSchema('nutriphi'). Ports 3086 (API), 3087 (Web).
  • DB-Schema. meals, meals.foods[], favorites, goals, analyses, photos, account_deletion_requests.
  • API-Routen. Photos-Upload (Proxy zu mana-media), /api/v1/analysis/photo + /api/v1/analysis/text, Meal-CRUD, Summary, Favorites, Goals, DSGVO-Export.
  • AI-Pipeline. AI SDK + AnthropicCompatibleProvider gegen ${MANA_LLM_URL}/v1, generateObject({ schema, prompt, image }) mit MealAnalysisSchema aus @mana/shared-types.
  • Web-Frontend. SvelteKit 2 + Svelte 5 (runes-only), Camera- Capture, Photo-Upload, Manual-Entry-Sheet, Today-Dashboard, Meals-List, Favorites, Goals, Account.
  • Föderations-Boilerplate via @mana/shared-app-tpl: /healthz, /.well-known/mana-app.json, share-receive, tools-router, search, dsgvo-export — alle aus dem shared-tpl.
  • Pre-Flight P1–P7 (zweiter Commit): Verdaccio-Pakete fix, DNS bereit, Cloudflared-Tunnel-Konfig, Health-Probe gegen Mac Mini, JWKS-Cache-Test, Compose-Project-Name fix (manacore-monorepo).

Architektur-Entscheidungen

  • Strategie B (eigene App) statt food-Modul-Erweiterung. Plan in mana/docs/playbooks/NUTRIPHI_GREENFIELD.md. food-Modul bleibt parallel laufen (Brücke nur via mana-share-Push).
  • Server-authoritative MVP, keine Dexie. Local-First später via mana-sync, nicht eigener Stack.
  • AI-Wire-Format aus @mana/shared-types (MealAnalysisSchema, NutritionData, AnalyzedFood, AiResponseEnvelope). Single Source.
  • Photo-Upload via mana-media, nicht direkt zur LLM-API. Verein-Plattform ist einziger LLM-Pfad (Compliance + Cost- Tracking).
  • Encryption initial AUS, dokumentierter Trigger-Pfad in docs/ENCRYPTION_PATH.md. Wenn Compliance es erzwingt: meals.description, meals.foods[].name, favorites.{name, description} werden encrypted.
  • Föderation über @mana/shared-app-tpl. Drift-Schutz durch Boilerplate, nicht Hand-Implementation.
  • Compliance-Veto-Override für Live-Cut: siehe Memory project_nutriphi_live.md. Pre-Flight-Liste in nutriphi/STATUS.md.

Trade-offs

  • +10 097 LoC netto in einem Initial-Commit ist Greenfield- Pattern, nicht Anti-Pattern: alles musste zusammen funktionieren, Schnitt wäre kosmetisch. STATUS.md trackt die Phasen.
  • Compliance-Veto-Override kostet Vertrauen, wenn nicht schnell nachgezogen wird. Encryption-Pfad ist dokumentiert, Trigger explizit — aber nicht aktiv.
  • food-Modul bleibt parallel statt geschlossen. Doppel-Pflege- Last für eine Weile; verhindert aber Daten-Verlust für Bestands-User.

Offene Punkte (Pre-Flight + Phase B)

  • Compliance-Audit-Erinnerung in STATUS.md muss vor jedem Major-Schema-Schritt sichtbar bleiben.
  • food-Modul-Cutover-Plan — wann genau ziehen wir den Stecker?
  • Encryption-Trigger-Watch — wann passiert die erste konkrete Anforderung?
  • Phase B: Local-First via mana-sync — nicht heute, aber Plan.
  • Web-Theme-Migration (Phase 7 in CLAUDE.md): oklch → HSL für Drift-Compliance.

Stats

2
Commits
+10111/-14
Zeilen
106
Files
0.0 h
Aktiv
Erster Commit
20:55 (Freitag)
Letzter Commit
20:57
Spannweite
0.0 Stunden
Aktiv (ohne Pausen > 30min)
0.0 Stunden
Längster Fokus
0.0 Stunden

Wo wurde gearbeitet

  • 13% apps/api/src/routes
  • 12% apps/web/src/lib
  • 11% apps/api/src/db
  • 9% apps/web/src/routes
  • 8% packages/nutriphi-domain/src

Commits (2)

Volle Liste aufklappen
  • 2f4e0a6 Initial commit — Phase 0 bis Phase A
  • 19c7327 Pre-Flight P1-P7 erledigt
Geschrieben mit Claude — Hand veredelt