---
name: project-08-07-tech-stack
description: Tech-Stack der Würth-KI-Demo — Tauri-Desktop-App (Rust-Backend + Vue-Frontend) auf SQLite
metadata:
  type: project
---

Entscheidung: **Tauri-Desktop-App** statt separatem Web-Backend. Der Rust-Kern ist das Backend.

**Why:** Die LLM-Aufrufe brauchen den Claude-API-Key, der nicht in den Browser darf. Ohne Backend ginge nur SQLite-per-WASM (sql.js) + Vorberechnung — dann fällt der überzeugende Live-LLM-Teil weg oder der Key liegt offen. Tauri hält Key, SQLite und LLM-Calls im Rust-Kern, liefert eine Binary ohne Deploy — ideal für eine Vorführung.

**How to apply:**
- Frontend: Vue im Tauri-Webview (Vite + Vue, `create-tauri-app`).
- Rust-Backend als Tauri-Commands (über `invoke()` vom Frontend):
  - `chat(frage)` → Kontext aus SQLite bauen, Claude-API via `reqwest` rufen, Antwort zurück; Key bleibt in Rust (.env/Tauri-Config).
  - `query_orders`, `cross_sell(modul_id)`, `customer_segments` → feste SQL-Abfragen via `rusqlite`.
- Rust-Deps: `rusqlite`, `reqwest`, `serde`, `tokio`.
- Daten: veredelte SQLite-Datei als Tauri-Resource gebündelt.
- Veredelungs-Pipeline bleibt getrennt (Python), erzeugt nur die `.db`.
- Voraussetzung lokal: Rust-Toolchain + Node.
- App-Code soll in eigenes Projekt unter `~/projects/08-07` (analog Limbach: `~/claude-projects/08-07` = Memory/Steuerung, `~/projects/08-07` = Code).

Claude-Modelle (Stand 2026): Opus 4.8 `claude-opus-4-8`, Sonnet 4.6 `claude-sonnet-4-6`, Haiku 4.5 `claude-haiku-4-5-20251001`, Fable 5 `claude-fable-5`.
