Die SvelteKit-App liegt unter frontend/, das Backend unter backend/ als eigenständige PocketBase-Instanz mit Dockerfile, docker-compose und versioniertem Schema. - PocketBase-URL über PUBLIC_PB_URL konfigurierbar, Default bleibt die produktive Instanz https://api.stammtisch-hersbruck.de - Schema als Snapshot-Migration der sechs fachlichen Collections (users, teams, events, runs, riders, times), abgezogen von der produktiven Instanz. Verifiziert: ein Erststart gegen leere pb_data legt alle sechs an, Felder und API-Rules stimmen überein. - pb_data und pb_migrations als Bind-Mounts, damit Daten persistieren und im Admin-UI erzeugte Migrationen im Repo landen - Veraltete Dokumentation entfernt: pocketbase_schema.json nannte Collections (stages, results, organizers), die es nicht gibt Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
56 lines
2 KiB
Markdown
56 lines
2 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 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/`.
|