# 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 blosser Neustart des Containers genügt nicht. `PB_TYPEGEN_URL` und `PB_SUPERUSER_TOKEN` gelten getrennt davon für die Typgenerierung und die Scripts unter `scripts/`. ## Scripts Die Dateien unter `scripts/` sind Einmal-Werkzeuge gegen eine PocketBase-Instanz und laufen über `tsx`. Sie lesen ihre Zugangsdaten aus `.env`. > **Achtung, veralteter Stand:** `seed-test-data.ts` (`npm run seed`), > `migrate-schema.ts` und `migrate-teams.ts` stammen aus einer früheren > Schema-Generation. `seed-test-data.ts` schreibt in die Collections `stages` > und `results`, die es im aktuellen Schema **nicht mehr gibt** — der Aufruf > schlägt fehl. Vor einer Verwendung müssen die Scripts auf das aktuelle Schema > (`users`, `teams`, `events`, `runs`, `riders`, `times`) angepasst werden. Das maßgebliche Schema liegt als Migration in `../backend/pb_migrations/`.