v0 Team-Template einrichten (einmalig + pro Center)
Ziel: Neues Center-Website-Projekt in wenigen Minuten — ohne jedes Mal Dashboard-URL, Revalidate-Secret und Register-Route neu zu kopieren. Fail-safe: Falscher Token oder falscher Slug wird vom Cockpit abgelehnt.
Übersicht
| Ebene | Was | Wie oft |
|---|---|---|
| Vercel Team | Shared Environment Variables | Einmal (habt ihr schon) |
| v0 Team | Golden Project → Team-Template | Einmal pflegen |
| Vercel Projekt | COCKPIT_REGISTER_TOKEN + COCKPIT_CENTER_SLUG | Pro Center |
Shared Env (Team, alle Projekte):
| Variable | Beispiel |
|---|---|
COCKPIT_DASHBOARD_URL | https://dashboard.cockpit-os.de |
REVALIDATION_SECRET | wie im Cockpit |
COCKPIT_FRONTEND_CHANNEL | website |
Pro Projekt (nur diese zwei — Rest kommt vom Team):
| Variable | Woher |
|---|---|
COCKPIT_REGISTER_TOKEN | Cockpit → Website-Management → Frontend-Kanäle (v0) → Token erzeugen |
COCKPIT_CENTER_SLUG | Center-Slug im Cockpit (z. B. allen-center-trier) — muss zum Token passen |
Schritt 1 — Golden Project (Referenz-Projekt)
Ein v0/Vercel-Projekt, das alles enthält, was jedes Center braucht:
-
Route
app/api/cockpit-register/route.ts(aus Monorepo:apps/center-website/app/api/cockpit-register/route.ts) -
Route
app/api/revalidate/route.ts(für Auto-Update nach Publish) -
Skript
scripts/cockpit-register-after-deploy.mjs(ausapps/center-website/scripts/…) -
In
package.json:"prebuild": "node scripts/generate-fallback-json.mjs",
"postbuild": "node scripts/cockpit-register-after-deploy.mjs"generate-fallback-json.mjs: Cockpit-API →public/fallback/shops.jsonusw. (siehe Instruction Cockpit E). -
v0-Instructions (Cockpit API, MCP) wie in v0-Website A–Z
Golden Project einmal auf Production deployen und testen:
curl -X POST "https://<golden>.vercel.app/api/cockpit-register"
Erwartung: JSON mit success: true (wenn Test-Token + Test-Slug gesetzt sind).
Schritt 2 — v0 Team-Template anlegen
In v0 (Team-Workspace):
- Golden Project öffnen (fertiges Layout + Routes + postbuild).
- Menü ⋯ / Project settings → Publish / Save as team template (Bezeichnung in v0 kann leicht abweichen).
- Name z. B.
Cockpit Center Website (Standard). - Speichern — ab jetzt: New project → From team template.
Wichtig: Template-Updates wirken nur auf neue Projekte aus dem Template, nicht automatisch auf alte Deployments. Golden Project pflegen und bei größeren Änderungen Template neu veröffentlichen.
Schritt 3 — Neues Center (Checkliste)
-
Cockpit: Center anlegen, Slug notieren.
-
v0: Neues Projekt aus Team-Template.
-
Vercel: Projekt verknüpfen (GitHub
sawmuedevo. ä.) — Shared Env verlinken (siehe unten). -
Vercel Projekt → Environment Variables (nur projektbezogen):
NEXT_PUBLIC_DASHBOARD_URL=https://dashboard.cockpit-os.de
COCKPIT_REGISTER_TOKEN=frt_…
COCKPIT_CENTER_SLUG=<slug-aus-cockpit>In v0 Instructions steht das in Teil A, Teil C, Teil J.
-
Production deploy —
postbuildmeldet die URL ans Cockpit. -
Cockpit → Frontend-Kanäle (v0): Verbindung testen; Redaktion arbeitet weiter nur in v0.
Bestehende Vercel-Projekte (nachträglich)
Shared Env aus dem Team gilt nicht automatisch für alte Projekte.
- Vercel → Projekt → Settings → Environment Variables
- Link Shared Environment Variables →
COCKPIT_DASHBOARD_URL,REVALIDATION_SECRET,COCKPIT_FRONTEND_CHANNELanhaken - Projekt-Env prüfen:
COCKPIT_REGISTER_TOKEN,COCKPIT_CENTER_SLUG,NEXT_PUBLIC_DASHBOARD_URLgesetzt? - Doppelte
COCKPIT_DASHBOARD_URL/REVALIDATION_SECRETauf Projektebene entfernen (sonst überschreiben sie Shared) - Production redeploy
- v0: Instructions Teil A / C / J aus der Doku neu kopieren (Env-Aufteilung)
Signage/Companion: Wenn Kanal ≠ website, COCKPIT_FRONTEND_CHANNEL projektbezogen setzen (überschreibt Shared).
Fail-safe (was schiefgehen kann)
| Fehler | Ursache | Fix |
|---|---|---|
COCKPIT_CENTER_SLUG fehlt | Slug nicht in Vercel | Slug aus Cockpit eintragen |
| Token gehört zu „X“, nicht zu „Y“ | Slug passt nicht zum Token-Center | Slug oder Token korrigieren |
Ungültiger Register-Token | Token rotiert / falsch | Neuen Token erzeugen, in Vercel setzen, redeploy |
| Register OK, Revalidate fehlt | Route/Secret | revalidate-Route + REVALIDATION_SECRET (Team Shared verlinkt) |
| API/Register trotz Shared „fehlt“ | Shared nicht verlinkt oder kein Redeploy | Link Shared + redeploy; Projekt-Token/Slug prüfen |
Token und Slug werden zusammen geprüft — ein Token von Center A kann nicht versehentlich Center B überschreiben.
Redaktion (kein IT-Stress)
Nach Schritt 3: In v0 bauen, Inhalte per MCP ins Cockpit. Live schalten: im v0-Chat z. B. „Website fertig, live schalten“ (MCP publish_website_live) — siehe Go-Live.
Siehe auch
Nutzungsstatistik: Seitenaufrufe werden anonymisiert erfasst. Im Umami-Dashboard nach diesem Pfad filtern: /content-creator-handbuch/v0-team-template-einrichtung