- globals.css: Hell, Dunkel und Druck mit den Spec-Werten aus 4.2, Fokusring = --primary-ink, Verlaufs-Token entfernt. - Codemod scripts/codemod-t5-colors.mjs: text-primary/-warning auf -ink, Vordergrund nur auf voller Fläche, Auswahlrahmen dunkel; --check-Modus und Spec halten src sauber. - Kontrast-Wächter misst die echte globals.css (VALUES_SWITCHED), alle 21 Zeilen aus 4.4 in allen vier Sätzen; keine dark:-Klassen mehr in src. - Dunkel ist ohne Entwickler-Schalter wählbar, Standard bleibt Hell. - Review-Nacharbeit: Auswahl-Umrisse und aktueller Schritt in Vordergrund, deaktivierte Felder bg-muted, Avatar ohne Blend, Honig-Check-Rahmen über --input. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
ApiCore-Frontend
Next.js-Oberfläche von ApiCore (App Router, TypeScript, Tailwind, shadcn/ui, TanStack Query). Die App spricht nur über die API des Backends; sie hat keinen eigenen Datenbankzugriff. Überblick über das ganze Projekt: ../README.md, Seitenstruktur: ../ARCHITECTURE.md Abschnitt 2.
Einrichten
npm install
cp .env.example .env.local # API_URL, z. B. http://localhost:3001/api/v1
npm run dev # http://localhost:3000
API_URL ist eine Laufzeit-Variable: Im Cluster kommt sie aus der ConfigMap apicore-frontend-config, ein neuer Wert braucht keinen neuen Build.
Diese Next.js-Version (16) weicht von älteren ab; vor Änderungen die mitgelieferte Doku unter node_modules/next/dist/docs/ lesen (siehe AGENTS.md).
Prüfen
npm run lint
npm run typecheck # next typegen && tsc --noEmit
npm test # Vitest + React Testing Library
npm run build
Der Image-Build (Dockerfile) führt Lint, Typecheck und Tests aus und bricht bei Fehlern ab.
Offline
- Offline-Warteschlange in IndexedDB (
src/lib/offline/), Band „Offline – X Einträge warten“, Sync bei Wiederverbindung mit Idempotenz-Schlüssel. - Service Worker (
public/sw.js,public/sw-routes.js) mit App-Hülle und Offline-Seiten untersrc/app/(app)/offline/für den Kaltstart ohne Netz. - „Stand laden“ holt die Daten eines Stands auf das Gerät; Abmelden löscht Pakete und Caches. Tokens werden nie gespeichert.