{"ok":true,"livenessOk":true,"status":"alive","timestamp":"2026-05-17T18:37:42.366Z","eventSlug":"bierball-4-0-berlin","environment":{"vercel":true,"vercelEnv":"production","nodeEnv":"production","runtimeLabel":"Vercel Production","appUrlConfigured":true},"persistence":{"mode":"postgres_snapshot","label":"Postgres · Tabelle event_snapshots (ein JSON-Snapshot pro Event)","warning":null,"primaryEventSlug":"bierball-4-0-berlin","lastSnapshotUpdatedAt":"2026-05-11T12:58:47.825Z","snapshotPossiblyStale":true,"resetHint":"Admin-Reset ersetzt den Primary-Event-Snapshot in Postgres. Für eine leere Preview-DB: pnpm db:push && pnpm db:seed."},"database":{"connectivity":"ok","configured":true,"persistenceUsesPostgres":true,"note":"Postgres antwortet."},"auth":{"secretStrength":"ok","usesDevFallback":false,"strictRuntime":true},"media":{"mode":"supabase_uploads","uploadsImplemented":true,"bucketSet":true},"branding":{"placeholderFields":[],"allResolved":true},"partners":{"linkPlaceholderLabels":[],"allPublicLinksResolved":true},"setupTruth":{"databaseUrlSet":true,"nextPublicAppUrlSet":true,"vercelUrlPresent":true,"bierballEventSlugSet":true,"nextPublicEventSlugSet":true,"qrEventSlug":"bierball-4-0-berlin","eventSlugMismatch":false,"eventSlugIncomplete":false,"eventSlugSource":"BIERBALL_EVENT_SLUG","runtimeMode":"vercel_production","strictRuntime":true},"organizerGuide":{"shareablePreviewUrl":true,"strictRuntime":true,"localDevOnly":false,"persistenceExplainedDe":"Mit DATABASE_URL: ein JSON-Snapshot pro Event in Postgres (Tabelle event_snapshots). Jede speichernde Admin-Aktion aktualisiert genau diesen Stand — nicht den Code und nicht .env.","demoVsPreviewDe":"Strikte Runtime (Vercel o. Ä.): previewReady = wahr heißt nur: technische previewBlockers sind leer (DB, Secret, Origin, Branding-Platzhalter, …). Demo-Snapshot, Legal-Texte und Nutzer:innen-Vertrauen sind weiterhin Orga-Sache — nicht aus Health ableitbar.","mustFixForPreviewDe":[],"shouldReadWarningsDe":[],"snapshotPossiblyStale":true,"staleHintDe":"Snapshot-Zeitstempel > ca. 45 Min. — prüfen, ob eine andere Maschine, andere DB oder kein Deploy denselben Stand nutzt.","brandingStillPlaceholder":[],"partnerLinksStillPlaceholder":[],"resetExplainedDe":"Admin-Reset ersetzt den Primary-Event-Snapshot in Postgres. Für eine leere Preview-DB: pnpm db:push && pnpm db:seed.","mediaExplainedDe":"Supabase Storage aktiv: Upload, Austausch und Löschung laufen jetzt serverseitig mit gespeicherten Objektpfaden.","envDependenciesDe":[{"variable":"DATABASE_URL","wennLeer":"Lokaler JSON-Store (.bierball/demo-store.json). Auf Vercel ohne DB kein zuverlässiger gemeinsamer Stand — Preview-Blocker.","wennGesetzt":"Postgres-Persistenz; db:push/db:seed gegen genau diese URI ausführen."},{"variable":"AUTH_SECRET","wennLeer":"Nur lokal: Dev-Fallback möglich. Auf Vercel/Production: unsicher bzw. Login blockiert — Preview-Blocker.","wennGesetzt":"Sessions und Rate-Limits production-tauglich (≥32 Zeichen)."},{"variable":"NEXT_PUBLIC_APP_URL","wennLeer":"Fallback: localhost lokal; auf Vercel oft https://$VERCEL_URL. Custom Domain: explizit setzen.","wennGesetzt":"metadataBase, QR und absolute Links nutzen diese Origin."},{"variable":"BIERBALL_EVENT_SLUG + NEXT_PUBLIC_EVENT_SLUG","wennLeer":"Fallback-Slug im Code — für echtes Event beide gleich setzen.","wennGesetzt":"Server- und Client-Slug müssen übereinstimmen (QR/Event-Zeile)."},{"variable":"NEXT_PUBLIC_SUPABASE_URL, SUPABASE_SERVICE_ROLE_KEY, BIERBALL_MEDIA_BUCKET","wennLeer":"Uploads deaktiviert — nur externe Bild-URLs im Snapshot (funktional ok).","wennGesetzt":"Vollständig (URL + Service Role + Bucket) = serverseitige Uploads; teilweise = strict Runtime blockiert. Public/Anon-Key nur zusätzlich setzen, wenn Browser-Supabase-Clients genutzt werden."}],"adminSettingsDe":"Öffentliche Texte, Branding (WhatsApp/Instagram), Sponsoren, Turnierparameter, Feature-Flags: alles Admin → Settings — landet im selben Snapshot wie Teams/Matches (nie nur im Git)."},"readiness":{"runtimeReady":true,"runtimeBlockers":[],"previewReady":true,"previewBlockers":[],"warnings":[],"semantics":{"ok":"liveness: process responds; with DATABASE_URL also DB reachable","runtimeReady":"no runtimeBlockers (e.g. broken DB ping, half Supabase media on strict host)","previewReady":"no previewBlockers on strict runtime — technical gates for sharing the Preview URL passed; demo seed content and legal text may still need Organizer edits (Admin → Settings / Users)","demoContentUnchanged":"Seed logins @demo.bierball.invalid and placeholder branding may remain until Organizer edits Admin → Settings"}}}