stammtisch-hersbruck/frontend/src/routes/+layout.svelte
Daniel Michelberger 1061a8b9ad chore: Repo-Struktur mit frontend/ und backend/ aufsetzen
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>
2026-08-06 13:16:43 +02:00

35 lines
887 B
Svelte

<script lang="ts">
import '../app.css'
import favicon from '$lib/assets/favicon.svg'
import {ModeWatcher} from "mode-watcher"
import {api, auth} from '$lib/stores/pocketbase.svelte'
import ConfirmDialog from '$lib/components/ConfirmDialog.svelte'
import {onMount} from 'svelte'
let {children} = $props()
let ready = $state(false)
onMount(async () => {
try {
await auth.load(document.cookie)
if (api.authStore.isValid) {
auth.user = api.authStore.record
await auth.refresh()
}
} catch (e) {
// ungültiger/abgelaufener Cookie → unauthentifiziert weiter
}
ready = true
})
</script>
<svelte:head>
<link href={favicon} rel="icon"/>
</svelte:head>
<ModeWatcher/>
{#if ready}
{@render children?.()}
<ConfirmDialog/>
{/if}