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 | Env siehe unten | Dedicated: Token + Slug pro Projekt · Shared: siehe Abschnitt Multi-Center |
| Recast (optional) | Deploy-Dateien aus deployment-templates/v0-recast/ + Server-.env | Pro Center (statt Vercel) |
Shared Env (Team, alle Projekte — nur Vercel):
| 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 | Dedicated (1 Center/Projekt) | Shared Multi-Center (1 Projekt, viele Domains) |
|---|---|---|
COCKPIT_REGISTER_TOKEN | Ja — im Projekt | Nein — nur MCP/Go-Live pro Center |
COCKPIT_CENTER_SLUG | Ja — muss zum Token passen | Nein in Production — optional DEFAULT_CENTER_SLUG nur Preview |
COCKPIT_VERCEL_PROJECT_MODE | dedicated | shared |
DEFAULT_CENTER_SLUG | optional | Ja — Preview auf *.vercel.app |
EXPECTED_WEBSITE_TEMPLATE | optional | empfohlen |
Dedicated — Woher:
| Variable | Woher |
|---|---|
COCKPIT_REGISTER_TOKEN | Cockpit → Frontend-Kanäle (v0) → Token erzeugen |
COCKPIT_CENTER_SLUG | Center-Slug im Cockpit — muss zum Token passen |
Shared Multi-Center (MEC / ILG / … — ein Layout, ~60 Domains)
- Ein v0-Projekt + ein Vercel-Projekt; alle Domains unter Vercel → Domains.
- Projekt-Env:
COCKPIT_VERCEL_PROJECT_MODE=shared,NEXT_PUBLIC_DASHBOARD_URL, Team Shared (REVALIDATION_SECRET, …),DEFAULT_CENTER_SLUGfür Preview. - Nicht pro Center
COCKPIT_REGISTER_TOKENin dieselbe Projekt-Env legen. - Neues Center: Domain in Vercel + Cockpit Center anlegen + Go-Live — Register-Token nur für MCP
cockpit_register_frontend_deploymentmit Production-Origin dieser Domain. - postbuild
cockpit-register-after-deploy.mjsüberspringt Register beishared(kein Build-Fehler ohne Slug).
v0 soll Env prüfen: siehe Prompt in Cockpit Frontend-Kanäle → Technik („An v0 senden“) oder Instruction Teil G (ENV-AUDIT).
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.deCOCKPIT_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.
Alternative: Recast statt Vercel
Wenn das Center auf dem Recast-Root-Server laufen soll (Partner-Hosting):
- v0 + GitHub wie oben — kein Vercel-Projekt nötig
- Deploy-Paket einmalig aus
deployment-templates/v0-recast/ins Center-Repo kopieren - Recast-Server:
docker-compose.yml+.env(siehe.env.exampleim Paket) - Env auf dem Server statt Vercel:
COCKPIT_DEPLOY_ORIGIN=https://www.<center-domain>COCKPIT_REGISTER_TOKEN,COCKPIT_CENTER_SLUG,REVALIDATION_SECRET
Details: v0 auf Recast (Docker)
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