Neues README im Root mit Zweck, Aufbau, Start, Prüfbefehlen, Betrieb und Projektstand (Issues #44, #43). Backend- und Frontend-README ersetzen die Framework-Vorlagen. CLAUDE.md: Ordnerstruktur und echte Arbeitsweise (main, gebündelt pushen, Rollout nur mit Freigabe). ARCHITECTURE §7/§8: Live-ConfigMap, ensure-secrets.sh, korrektes Admin-Seed-Verhalten. .env.example um BACKUP_MAX_IMPORT_BYTES und SEED_ADMIN_* ergänzt. Statuszeilen in Plänen Rückgrat, T3–T6 und Specs Fahrplan, T7. Refs #42 Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
33 lines
1.5 KiB
Markdown
33 lines
1.5 KiB
Markdown
# 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`](../README.md), Seitenstruktur: [`../ARCHITECTURE.md`](../ARCHITECTURE.md) Abschnitt 2.
|
||
|
||
## Einrichten
|
||
|
||
```bash
|
||
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`](AGENTS.md)).
|
||
|
||
## Prüfen
|
||
|
||
```bash
|
||
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.
|