# AGENTS.typescript.md — Next.js Konventionen ## Architektur - `app/.../page.tsx`: Minimale Seiten-Komposition (≤250 LOC) - `app/.../actions.ts`: Server Actions - `app/.../queries.ts`: Data Loading - `app/.../_components/`: View-Teile (Colocation) - `app/.../_hooks/`: Seiten-spezifische Hooks (Colocation) - `types/` oder `types/*.ts`: Domain-spezifische Types - `schemas/`: Zod/Validierungs-Schemas - `lib/`: Shared Utilities ## Regeln 1. page.tsx duenn halten (≤250 LOC) 2. Grosse Seiten frueh in Sections/Components splitten 3. KEINE einzelne types.ts als Catch-All 4. types.ts UND types/ Shadowing vermeiden (eines waehlen!) 5. Server/Client Module-Grenzen explizit halten 6. Pure Helpers und schmale Props bevorzugen 7. API-Client Types getrennt von handgeschriebenen Domain Types ## Colocation Pattern (bevorzugt) ``` app/(admin)/ai/rag/ page.tsx ← duenn, komponiert nur _components/ SearchPanel.tsx ResultsTable.tsx FilterBar.tsx _hooks/ useRagSearch.ts actions.ts ← Server Actions queries.ts ← Data Fetching ``` ## Split-Trigger - page.tsx ueberschreitet 250-350 LOC - types.ts ueberschreitet 200-300 LOC - Form-Logik, Server Actions und Rendering in einer Datei - Mehrere unabhaengig testbare Sections vorhanden - Imports werden broechig ## Verifikation ```bash npx tsc --noEmit npm run lint npm run build ``` > `npm run build` ist PFLICHT — `tsc` allein reicht nicht.