# Claude Working Guidelines - Hellth Hub Hellth Hub ist eine mobile-first Health-, Ernährungs-, Aktivitäts- und Einkaufs-Tracking-App für den Home-Lab-Betrieb. Monorepo mit `pnpm`: Next.js 16 / React 19 Frontend (`apps/admin`), Hono + tRPC + Better Auth API (`packages/api`), Drizzle/PostgreSQL (`packages/db`). **Ausführliche Projektreferenz** (Dateilandkarte, Features, Altlasten): [`docs/projektreferenz.md`](docs/projektreferenz.md). ## Grundregeln - Umlaute immer korrekt schreiben: echte `ä ö ü Ä Ö Ü ß` statt `ae oe ue ss`. Gilt für UI, Doku, Commits und Antworten. - Keine alten Altprojekt-/Tenant-/Community-/Naturfreunde-Begriffe in neue UI oder Doku übernehmen. - Einstellungen und Health-Daten sind benutzerbezogen, nicht global. - Bestehende Architektur nutzen: `apps/admin`, `packages/api`, `packages/db`. - Änderungen mit Tests absichern, besonders bei Auth, Health-Daten, Wochenbudget und Einkaufslisten. - Bestehende User-Änderungen nicht zurücksetzen. Keine destruktiven Git-Befehle ohne ausdrückliche Anweisung. - Cleanup von Altlasten nur nach ausdrücklicher Freigabe. - Neue Formulare nach Möglichkeit mit `FormField` aus `apps/admin/app/_components/form-field.tsx` bauen. - Bei neuen DB-Funktionen Schema, Migration, API und UI zusammen denken. - UI mobile-first denken. ## Ports - Admin-App lokal: `http://localhost:3001` - API lokal: `http://localhost:3002` (Health: `/api/health` — `/` direkt liefert 404, ist normal) - Docker-App: `http://localhost:3000` · Postgres: `localhost:5432` · pgAdmin: `http://localhost:5050` ## Lokaler Start Docker/Postgres muss laufen (`docker ps`), dann: ```powershell pnpm --filter @hellth/db db:migrate # Migrationen pnpm --filter @hellth/api dev # API (Port 3002) pnpm --filter admin dev # Admin (Port 3001) ``` Tests: `pnpm --filter admin test` · `pnpm --filter @hellth/api test`. Typecheck: `pnpm typecheck`. ## Auth/Admin Admin-User: `admin@onl1.eu`. Admin erzwingt 2FA (mit Logs/Sicherheitsmechanik bei 2FA-Verlust). Passwörter nicht dokumentieren; bei Bedarf über Seed-/Admin-Skripte neu setzen.