diff --git a/.gitignore b/.gitignore index 6bda3f9..1cd4a77 100644 --- a/.gitignore +++ b/.gitignore @@ -12,6 +12,9 @@ build/ coverage/ *.tsbuildinfo +# Next.js auto-generated (siehe https://nextjs.org/docs/app/api-reference/config/typescript) +next-env.d.ts + # Logs *.log .logs/ diff --git a/CLAUDE.md b/CLAUDE.md index dfc836e..733cc48 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -1,11 +1,40 @@ # Claude Working Guidelines - Hellth Hub -Hellth Hub ist eine mobile-first Health- und Ernährungstracking-App für den Home-Lab-Betrieb. +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`). -Wichtig: +**Ausführliche Projektreferenz** (Dateilandkarte, Features, Altlasten): [`docs/projektreferenz.md`](docs/projektreferenz.md). -- Umlaute immer korrekt schreiben. -- Keine alten Altprojekt-/Tenant-/Community-Begriffe in neue UI oder Doku übernehmen. +## 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. \ No newline at end of file +- Ä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. diff --git a/apps/admin/next-env.d.ts b/apps/admin/next-env.d.ts deleted file mode 100644 index c4b7818..0000000 --- a/apps/admin/next-env.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -/// -/// -import "./.next/dev/types/routes.d.ts"; - -// NOTE: This file should not be edited -// see https://nextjs.org/docs/app/api-reference/config/typescript for more information. diff --git a/claude-info.md b/docs/projektreferenz.md similarity index 73% rename from claude-info.md rename to docs/projektreferenz.md index 5bf9ca8..ce762a2 100644 --- a/claude-info.md +++ b/docs/projektreferenz.md @@ -1,4 +1,6 @@ -# Hellth Hub Projektinfo +# Hellth Hub - Projektreferenz + +Ausführliches Nachschlagewerk. Die immer geltenden Regeln und der Schnellstart stehen in [`CLAUDE.md`](../CLAUDE.md) im Repo-Root. ## Kurzüberblick @@ -6,18 +8,6 @@ Hellth Hub ist eine mobile-optimierte Web-App für persönliches Health-, Ernäh Das Projekt wurde technisch aus einem kopierten Naturfreunde-Hub-Grundgerüst entwickelt. Naturfreunde-Funktionen wurden weitgehend entfernt oder ersetzt. Das alte Projekt dient nur noch als historische/technische Vorlage, nicht als fachliche Grundlage. -Wichtig: In deutscher UI und Dokumentation immer echte Umlaute verwenden, also `ä`, `ö`, `ü`, `ß` statt `ae`, `oe`, `ue`, `ss`. - -## Arbeitsverzeichnis - -Aktueller Projektpfad: - -```text -c:\EurOwiG\Entwicklung\forgejo\hellth-hub -``` - -Das Monorepo liegt direkt im Repo-Root (`apps/`, `packages/`, `docker/` …). Der frühere `nf-hub/`-Unterordner wurde am 2026-05-27 entfernt und sein Inhalt nach oben gezogen. - ## Tech Stack - Monorepo mit `pnpm` @@ -27,44 +17,7 @@ Das Monorepo liegt direkt im Repo-Root (`apps/`, `packages/`, `docker/` …). De - Docker: Postgres und pgAdmin, plus vorhandener App-Container - Auth: Better Auth mit Login, 2FA, Passkeys -## Wichtige Ports - -- Admin-App lokal: `http://localhost:3001` -- API lokal: `http://localhost:3002` -- API Healthcheck: `http://localhost:3002/api/health` -- Docker-App: `http://localhost:3000` -- Postgres: `localhost:5432` -- pgAdmin: `http://localhost:5050` - -Hinweis: `http://localhost:3002` direkt kann `404` liefern. Das ist normal, weil die API unter `/api/...` hängt. - -## Lokaler Start - -Docker/Postgres muss laufen: - -```powershell -docker ps -``` - -Migrationen anwenden: - -```powershell -pnpm --filter @hellth/db db:migrate -``` - -API starten: - -```powershell -pnpm --filter @hellth/api dev -``` - -Admin starten: - -```powershell -pnpm --filter admin dev -``` - -Seeds: +## Seeds ```powershell pnpm --filter @hellth/api seed:health @@ -114,7 +67,7 @@ Der Demo-Recipe-Seed erzeugt 50 öffentliche Testrezepte mit IDs `demo-recipe-01 Wearables/Fitbit/Health-Connect-Vorbereitung. - `apps/admin/app/(authed)/einstellungen/page.tsx` - User-Profil, Sicherheit, 2FA, Passkeys, Rezept-/Ernährungspräferenzen. + User-Profil, Sicherheit, 2FA, Passkeys, Rezept-/Ernährungspräferenzen. Aufgeteilt in Tabs (`_components/settings-tabs.tsx`, `section-card.tsx`, `status-banner.tsx`), Tab-Auswahl über `?tab=`-Query. - `apps/admin/app/(authed)/einstellungen/punkte/page.tsx` Globale Admin-Einstellung für Hellfireclub-/Aktivitätspunkte. @@ -221,18 +174,9 @@ Vorschläge berücksichtigen vorrangig User-Profil: ### Admin Activity Feed -Pfad: +Pfad: `/aktivitaetsfeed` -```text -/aktivitaetsfeed -``` - -Zeigt aktuell: - -- Rezeptvorschläge -- Marktänderungsanträge - -Marktänderungen können direkt übernommen oder abgelehnt werden. +Zeigt aktuell Rezeptvorschläge und Marktänderungsanträge. Marktänderungen können direkt übernommen oder abgelehnt werden. ### Hellfireclub @@ -254,18 +198,6 @@ Marktänderungen können direkt übernommen oder abgelehnt werden. - Fitbit-Aktivitätskatalog ist vorhanden. - Manuelle Aktivitäten sind möglich. -## Auth/Admin - -Admin-User: - -```text -admin@onl1.eu -``` - -Passwort steht nicht hier dokumentieren. Falls nötig über vorhandene Admin-/Seed-Skripte neu setzen. - -Admin erzwingt 2FA. Es gibt zusätzliche Logs/Sicherheitsmechanik, falls 2FA-Status verloren geht. - ## Tests und Checks Admin-Tests: @@ -292,12 +224,12 @@ Admin-Build: $env:NEXT_PUBLIC_API_URL='http://localhost:3002'; pnpm --filter admin build ``` -Zuletzt erfolgreich: +Zuletzt erfolgreich (Stand 2026-05-29): -- API-Tests: 28/28 +- API-Tests: 38/38 - Admin-Tests: 10/10 -- API-Typecheck: grün -- Admin-Build: grün +- Typecheck: grün (alle Pakete) +- Lint: 0 Errors (react-hooks-Warnings = bestehendes Muster) ## Lokale Dev-Logs @@ -310,25 +242,7 @@ Wenn die Prozesse im Hintergrund gestartet wurden, liegen Logs hier: .logs/admin-dev.err.log ``` -## Wichtige Arbeitsregeln - -- Bestehende User-Änderungen nicht zurücksetzen. -- Keine destruktiven Git-Befehle ohne ausdrückliche Anweisung. -- Für manuelle Code-Edits bevorzugt `apply_patch` verwenden. -- Bei Suche `rg` bevorzugen. -- UI mobile-first denken. -- Keine Naturfreunde-Fachlogik wieder einführen. -- Neue Formulare nach Möglichkeit mit `FormField` und `inputClassName` aus `apps/admin/app/_components/form-field.tsx` bauen. -- Bei neuen DB-Funktionen Schema, Migration, API und UI zusammen denken. -- Bei deutscher UI immer Umlaute korrekt schreiben. - -## Aktuelle bekannte Besonderheiten - -- `localhost:3002` direkt liefert 404; `/api/health` ist der richtige API-Test. -- Docker stellt primär DB/pgAdmin bereit; lokale Entwicklung läuft über `pnpm --filter @hellth/api dev` und `pnpm --filter admin dev`. -- Die Docker-App läuft zusätzlich auf `localhost:3000`, ist aber nicht der primäre lokale Dev-Workflow. - -## Wichtige Orientierung für Claude: Repo-Konsistenz +## Repo-Konsistenz und Altlasten Das Hellth-Hub-Monorepo liegt direkt im Repo-Root. Aktuell relevant sind: @@ -357,14 +271,4 @@ Diese Altlast ist noch da und sollte **nicht angepackt werden**, weil sie die DB - `packages/db/drizzle/*.sql` und `meta/*.json` (Migrationen 0000-0008) enthalten noch Naturfreunde-Tabellen-DDL aus der Schema-Historie. Drizzle tracked sie per Datei + Hash - Umbenennen oder Löschen würde die DB inkonsistent machen. Wenn das stört, ist ein dedizierter "Schema-Reset" notwendig (alle Migrationen löschen, neue `0000_init.sql` aus aktuellem Schema generieren, DB neu aufbauen). -### Arbeitsregel für neue Aufgaben - -Pfade in Antworten immer ohne `nf-hub/`-Präfix - das Monorepo liegt im Repo-Root: - -```text -apps/admin -packages/api -packages/db -``` - -Keine Naturfreunde-Funktionalität wiederbeleben. Wenn eine Altlast aus der obigen Liste auftaucht: höchstens kurz erwähnen, dann im aktuellen Hellth-Hub-Code weiterarbeiten. Cleanup nur nach ausdrücklicher Benutzerfreigabe. +Keine Naturfreunde-Funktionalität wiederbeleben. Wenn eine Altlast auftaucht: höchstens kurz erwähnen, dann im aktuellen Hellth-Hub-Code weiterarbeiten. Cleanup nur nach ausdrücklicher Benutzerfreigabe.