Files
ApiCore/ApiCore-Frontend
Nick SzaunigandClaude Opus 5.5 45274f4301
Backend Image / build-and-push (push) Successful in 7m57s
Frontend Image / build-and-push (push) Successful in 18m33s
Manifests / validate (push) Successful in 23s
feat: Beute-Editor mit Ziehen und Ablegen in 3D (Beute L4, Task 18)
- Teile aus der Palette in die Szene ziehen: Stapel öffnet sich, erlaubte
  Plätze leuchten, Vorschau rastet ein; erlaubte Plätze per
  applyHiveOps auf einer Kopie (gleiche Regeln wie der Server)
- Vorhandene Teile verschieben, auf „Entfernen“ ziehen; Einsätze aus
  offenen Zargen ziehen, dünne Teile mit Mindest-Trefferhöhe
- Drücken auf ein Teil dreht das Modell nie (Prüfung erst beim Dreh-
  Beginn, passend zur Ereignisfolge von R3F); Abbruch mit Esc, Fenster-
  wechsel oder Maus ohne Taste
- Zoom 0,6–2,5 per Knöpfen (Fokus bleibt an den Grenzen), Rad und Pinch
- Verdunster verschieben fragt nicht mehr nach Behandlungsende;
  Ansage „… verschoben“; gemeinsame Helfer fresh-part und feeder-slots
- Neuzeichnen nur bei Zeigerbewegung, geteilte Materialien

Gates: Frontend lint, typecheck, 2804 Tests, build; 3D-Chunk 292 kB gzip.
Review (Opus) und Browserprüfung Maus/Touch.

Refs #21

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
2026-10-16 10:03:43 +02:00
..
2026-08-27 08:32:47 +02:00

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 unter src/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.