docs: README und Appwrite-Console-Anleitung an den Ist-Stand angleichen

Endpoint-Standard ${origin}/v1, echte Projekt-ID im Traefik-Header, Console-
Einstellungen als Soll-Stand statt Tatsache, Test-Befehle je mit Verzeichnis;
Projekt-ID nicht mehr "aircard", Auth-/Dienste-Schritte als optionale Härtung.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
ClaudeandClaude Opus 5.5 committed 2026-10-04 11:02:38 +00:00
1 parent 0c51689dfd
commit 436ea4f4a5
3 files changed
+38 -20

No files matched your search

+23 -10
View File
@@ -22,15 +22,29 @@ npm ci
npm run dev # Entwicklungsserver http://localhost:5173
```
Login und Speichern brauchen die Appwrite-Route. Der lokale Host wird nur dann erkannt, wenn die Web-Plattform `localhost` in der Appwrite-Console eingetragen ist (unter Projekt → Overview → Integrations → Platforms). Die Umgebungsvariablen `VITE_APPWRITE_ENDPOINT` und `VITE_APPWRITE_PROJECT_ID` müssen für die lokale Entwicklung verfügbar sein (Standard: `https://appwrite.webklar.com/v1` und `6ac2130a00289343d6d5`).
Login und Speichern brauchen die Appwrite-API. Ohne Einstellung gilt als Endpoint `${location.origin}/v1` (der Entwicklungsserver hat keinen Proxy dafür, es würde also der Vite-Server selbst gefragt). Für die lokale Entwicklung deshalb in `web/.env.local` (steht über `.env*` in `.gitignore`) den Endpoint setzen:
```sh
VITE_APPWRITE_ENDPOINT=https://appwrite.webklar.com/v1
```
Die Projekt-ID ist als Standard im Code hinterlegt (`6ac2130a00289343d6d5`, `VITE_APPWRITE_PROJECT_ID` überschreibt sie). Damit Appwrite den lokalen Host akzeptiert, muss die Web-Plattform `localhost` in der Appwrite-Console eingetragen sein (Projekt → Overview → Integrations → Platforms). Der Produktions-Build bekommt `VITE_APPWRITE_ENDPOINT=https://aircard-ios.org/v1` aus der Container-Umgebung (`deploy/compose-snippet.yml`).
## Tests
Im Frontend (`web/`):
```sh
cd web && npx vitest run # Unit-Tests (card/*, editor/*, account/*)
cd web
npx vitest run # Unit-Tests (card/*, editor/*, account/*, pages/*)
npx tsc --noEmit # TypeScript-Prüfung
node --test deploy/webhook-server.test.js # Webhook und Build-Logik
node --test web/scripts/appwrite-setup.test.mjs # Appwrite-Schema
```
Im Repo-Wurzelverzeichnis:
```sh
node --test deploy/webhook-server.test.js # Webhook-Server (deploy.sh wird dort durch einen Stub ersetzt)
node --test web/scripts/appwrite-setup.test.mjs # Appwrite-Schema-Skript
```
## Deploy
@@ -47,15 +61,14 @@ Starten nur mit:
docker compose up -d aircard-build aircard
```
Die Appwrite-API wird über `/home/webklar/apps/traefik/dynamic/aircard.yml` geroutet: Requests auf `aircard-ios.org/v1` mit Header `X-Appwrite-Project: aircard` gehen an den Appwrite-Container.
Die Appwrite-API wird über `/home/webklar/apps/traefik/dynamic/aircard.yml` geroutet (Vorlage: `deploy/traefik/aircard.yml`): Requests auf `aircard-ios.org/v1` mit Header `X-Appwrite-Project: 6ac2130a00289343d6d5` gehen an den Appwrite-Container. Ohne diesen Header antwortet der nginx der Seite mit 404.
## Appwrite
Projekt `aircard` auf `appwrite.webklar.com`:
- Projekt-ID (öffentlich): `6ac2130a00289343d6d5`
- Datenbank: `aircard`, Tabelle: `cards`, Bucket: `card-images`
- Auth: E-Mail + Passwort, Sitzungsdauer 30 Tage, max. 5 pro Nutzer, Nutzerlimit 2000
- Web-Plattformen: `aircard-ios.org`, `localhost`
Projekt „AirCard“ auf `appwrite.webklar.com`:
- Projekt-ID (öffentlich, von Appwrite generiert): `6ac2130a00289343d6d5`. Sie steht in `deploy/traefik/aircard.yml`, in `/home/webklar/apps/.env` (`AIRCARD_APPWRITE_PROJECT_ID`) und als Standard in `web/src/account/appwrite.ts`.
- Datenbank: `aircard`, Tabelle: `cards`, Bucket: `card-images` (das Skript unten legt sie an und prüft sie)
- Console-Einstellungen laut `docs/appwrite-console.md` (Soll-Stand, nicht maschinell geprüft; `--check` prüft nur das Schema): Auth mit E-Mail + Passwort, Sitzungsdauer 30 Tage, max. 5 Sitzungen pro Nutzer, Nutzerlimit 2000, Web-Plattformen `aircard-ios.org` und `localhost`. Schritte 3 und 4 dort (Auth-Härtung, Dienste abschalten) sind optional und am Live-Projekt unbestätigt.
**Schema prüfen:**
```sh