# 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.
