npm run generate-pocketbase-types liest das Collections-Array jetzt direkt aus backend/pb_migrations/ (scripts/schema-to-json.mjs) und speist es über pocketbase-typegen --json ein. Keine laufende Instanz, kein Token, kein Netzwerkzugriff mehr nötig. Damit stammen Schema und Typen aus derselben versionierten Quelle und können nicht auseinanderlaufen. Vorher zeigten sie auf eine Remote-Instanz, deren Stand niemand garantieren konnte — nach dem Neu-Deployment lieferte sie prompt Typen ohne die fachlichen Collections. frontend/.env enthält dadurch nur noch PUBLIC_PB_URL. PB_TYPEGEN_URL und PB_TYPEGEN_TOKEN entfallen (letztere wurde ohnehin nirgends gelesen), PB_SUPERUSER_TOKEN wird nicht mehr gebraucht. Die Datei enthält damit kein Geheimnis mehr. Verifiziert: ohne .env, ohne Token und ohne laufende Instanz entstehen alle sechs Collections, svelte-check meldet 0 Fehler und 0 Warnungen. Die System-Collections (_superusers, _mfas, ...) fehlen in den Typen, weil sie bewusst nicht in der Migration stehen. Die Anwendung verwendet sie nicht. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
61 lines
2.1 KiB
Markdown
61 lines
2.1 KiB
Markdown
# stammtisch-hersbruck.de — Frontend
|
|
|
|
SvelteKit-5-Anwendung (Svelte 5 Runes, Tailwind 4) für Zeitnahme und Verwaltung.
|
|
|
|
## Einrichten
|
|
|
|
`.env` aus der Vorlage anlegen und ausfüllen — `.env.example` beschreibt jede
|
|
Variable:
|
|
|
|
cp .env.example .env
|
|
npm ci
|
|
npm run dev
|
|
|
|
Die App läuft dann auf http://stammtisch-hersbruck.de.localhost:31337
|
|
|
|
## Befehle
|
|
|
|
| Befehl | Zweck |
|
|
|---|---|
|
|
| `npm run dev` | Development-Server (Port 31337, strict) |
|
|
| `npm run build` | Produktions-Build |
|
|
| `npm run preview` | Produktions-Build lokal ansehen |
|
|
| `npm run check` | Typprüfung (svelte-check) |
|
|
| `npm run check:watch` | Typprüfung im Watch-Modus |
|
|
| `npm run generate-pocketbase-types` | `src/lib/types.d.ts` aus dem PocketBase-Schema erzeugen |
|
|
|
|
## Welche PocketBase-Instanz?
|
|
|
|
`PUBLIC_PB_URL` in `.env` entscheidet, wohin das Frontend spricht:
|
|
|
|
| Wert | Instanz |
|
|
|---|---|
|
|
| `https://api.stammtisch-hersbruck.de` | produktiv (Default) |
|
|
| `http://127.0.0.1:8090` | lokales Backend aus `../backend` |
|
|
|
|
Die Variable wird von SvelteKit zur **Buildzeit** eingesetzt
|
|
(`$env/static/public`). Ein Wechsel der Instanz erfordert deshalb einen
|
|
Neustart des Dev-Servers bzw. einen neuen Build — ein bloßer Neustart des
|
|
Containers genügt nicht.
|
|
|
|
Es ist die einzige Variable in `.env`; ein Token wird nicht mehr gebraucht.
|
|
|
|
## Typen
|
|
|
|
Das maßgebliche Schema liegt als Migration in `../backend/pb_migrations/`.
|
|
Daraus entstehen auch die TypeScript-Typen:
|
|
|
|
npm run generate-pocketbase-types
|
|
|
|
Das Script liest das Collections-Array aus der Migration
|
|
(`scripts/schema-to-json.mjs`) und erzeugt daraus `src/lib/types.d.ts`. Es
|
|
braucht **keine laufende Instanz, keinen Token und keinen Netzwerkzugriff** —
|
|
Schema und Typen kommen aus derselben versionierten Quelle und können deshalb
|
|
nicht auseinanderlaufen.
|
|
|
|
Nach jeder Schema-Änderung in `../backend/pb_migrations/` einmal ausführen und
|
|
die aktualisierte `types.d.ts` mitcommitten.
|
|
|
|
> Die System-Collections (`_superusers`, `_mfas`, …) stehen bewusst nicht in
|
|
> der Migration und fehlen deshalb in den Typen. Die Anwendung verwendet sie
|
|
> nicht.
|