# Anweisungen für Claude Dieses Dokument wird in **jede** Claude-Session automatisch geladen. Es ist die kürzeste Form: Was du wissen musst und was du tun/lassen sollst. Details stehen in [ARCHITECTURE.md](ARCHITECTURE.md) — **lies sie, bevor du nicht-triviale Änderungen machst.** --- ## Was das Projekt ist **RAPPORT** — Tauri 2.x Desktop-App für Architekturbüros. React 19 (kein TypeScript), minimaler Rust-Backend (System-Tray + Updater, keine Tauri-Commands). Solo-Dev: Karim. Daten leben in `localStorage` unter Key `studio_data_v1`. macOS Apple Silicon ist die primäre Plattform. Architektur in einem Satz: **App.jsx hält den gesamten State, übergibt ihn an lazy-geladene Views als Props, persistiert synchron in localStorage. Rust macht nur Tray + Update.** → Vollständige Karte: [ARCHITECTURE.md](ARCHITECTURE.md) --- ## Befehle ```bash npm run dev # Vite-Server auf http://localhost:3000 npx tauri dev # Native App-Window mit HMR (für UI-Verifikation) npm run lint # ESLint npm run build # Frontend-Build (dist/) npx tauri build # Vollständiges App-Bundle ./scripts/release.sh # Release-Build mit Signatur — NUR auf explizite Anweisung ``` Es gibt **keine Tests**, keine CI, keinen Pre-Commit-Hook. Korrektheit ist Augenmaß. --- ## Sprache - **Antworte auf Deutsch.** Karim arbeitet auf Deutsch. - **UI-Strings im Code: Deutsch** ("Zeiterfassung", "Buchhaltung", "Beenden"). - **Code-Identifier: Englisch** (`setView`, `currentUser`, `isQuitting`). --- ## Vor jeder Änderung — die drei Reflexe 1. **Wenn es um Daten/State geht** → schau in [App.jsx](src/App.jsx) (Top-Level-State, Migrations, `save()`, `update()`). Kein Zustand existiert ausserhalb davon. 2. **Wenn es um Logik geht** (Kalkulation, Format, Hash, QR-Bill) → schau in [utils.js](src/utils.js). Dort sind isolierte Funktionen — wahrscheinlich gibt es schon eine. 3. **Wenn es um das Datenmodell geht** → schau in [constants.js](src/constants.js) (`defaultData` ist die Shape-Referenz). --- ## Tu — Konventionen die hier gelten - **Inline-Styles** (`style={{}}`) sind etabliert. Keine Tailwind-Vorschläge, keine CSS-Module einführen, ohne dass Karim das initiiert. - **Globale Klassen** (`.btn`, `.card`, `.pill`, `.modal`, `.filter-bar`) sind in [App.jsx](src/App.jsx)'s `