AASA-Endpoint für Native-Universal-Links, Mana-Media-Port-Fix
(3015 → 3011), User-Profile-Schema mit BMR/TDEE-Empfehlung +
Apple-Health-Import-Pfad.
Stats
3 Commits, +1 042 / −4 LoC, 14 Files. 10× .ts, 1× .sql-
Migration. Top-Dirs: api/db (36 %), nutriphi-domain (29 %). Tags:
web, infra, profile. Active-Time 0 Min (claudebot-Commits).
Schritte
- feat(web): AASA für nutriphi-native Universal-Links.
/.well-known/apple-app-site-association mit appID: QP3GLU8PH3.ev.mana.nutriphi und Pfad-Patterns
(/meals/*, /share/*, …).
- fix(infra): mana-media-Port von 3015 auf 3011 korrigieren.
docker-compose.yml-Mismatch zwischen lokal (3011) und Mac-
Mini-Pinning (3015). Folge: Photo-Upload-503 in einer
Test-Session.
- feat(profile): User-Profile mit BMR/TDEE-Empfehlung + Apple-
Health-Import.
- DB-Schema:
user_profiles mit sex, dob, mass_kg,
height_cm, activity_level, goal_kcal,
goal_protein_g, goal_carbs_g, goal_fat_g.
packages/nutriphi-domain/src/recommendation.ts:
Mifflin-St-Jeor-Formel für BMR, Activity-Level-Multiplier
für TDEE, Makro-Verteilung als Empfehlung.
- API-Routen
GET/PATCH /api/v1/profile,
POST /api/v1/profile/recommendation (returns suggestion).
POST /api/v1/profile/import-health als Endpoint-Stub für
Native-Side (nimmt von App vorbereitete Werte und persistiert).
- Web-Route
/profile mit Sheet zum Bearbeiten.
Architektur-Entscheidungen
- Recommendation als pure Funktion in
nutriphi-domain-
Paket, nicht im API-Handler. Damit von Native auch direkt
importierbar.
- Apple-Health-Import als Server-Endpoint, nicht reiner
Client-Pfad. Server validiert + speichert; bei späterem
Multi-Device-Setup ist Server-State Quelle.
- Mifflin-St-Jeor + Activity-Level-Multiplier als Standard-
Formeln, nicht Harris-Benedict oder Katch-McArdle. Ernährungs-
Beratungs-Mainstream, gut dokumentiert.
- Makro-Verteilung als Default (40 % Carbs, 30 % Protein,
30 % Fat), aber im Profil überschreibbar.
- AASA-File mit App-Group für Multiple-Apps auf
mana.how-
Domain: nutriphi, cards, manaspur, zitare. Jede App hat eigene
Pfad-Patterns.
Trade-offs
- +984 LoC für Profile in einem Commit — substantielle Logik
(BMR/TDEE-Berechnung + Drizzle-Schema + DTOs + Routes + Sheet),
hätte man auf zwei (Schema/Logik separat) splitten können.
- DB-Schema-Hinzufügen ohne Down-Migration — Drizzle macht
das, aber bei Schema-Roll-back wäre
user_profiles-Drop nötig.
Accepted, weil greenfield.
- Apple-Health-Import-Endpoint serverseitig statt purer
Client-Path: zusätzlicher Round-Trip pro Import, aber State-
Konsistenz garantiert.
- mana-media-Port-Drift (3015 vs. 3011) ist ein klassisches
„Doku in PORTS.md vs. Realität in compose.yml"-Problem.
PORTS.md ist SOT, compose hatte den falschen.
Offene Punkte
- Lost-Pixel-Snapshots für /profile vor Live noch nicht.
- Health-Import-Native-Endpunkt (Server-Side) ist Stub —
echte Sex/DateOfBirth-Validation gegen Apple-Health-Format
steht aus.
- Mass-Unit-Toggle (kg vs. lbs) im Profil fehlt. DE-first
zwingt nicht, US-Roll-out aber.
- Goal-Aktualisierung-Audit (wann hat sich das Goal zuletzt
geändert?) fehlt — User könnten ihre Geschichte sehen wollen.
- Compliance-Erwähnung Health-Profil-Daten in
COMPLIANCE.md fehlt.