Zum Hauptinhalt springen

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

EbeneWasWie oft
Vercel TeamShared Environment VariablesEinmal (habt ihr schon)
v0 TeamGolden Project → Team-TemplateEinmal pflegen
Vercel ProjektEnv siehe untenDedicated: Token + Slug pro Projekt · Shared: siehe Abschnitt Multi-Center
Recast (optional)Deploy-Dateien aus deployment-templates/v0-recast/ + Server-.envPro Center (statt Vercel)

Shared Env (Team, alle Projekte — nur Vercel):

VariableBeispiel
COCKPIT_DASHBOARD_URLhttps://dashboard.cockpit-os.de
REVALIDATION_SECRETwie im Cockpit
COCKPIT_FRONTEND_CHANNELwebsite

Pro Projekt (nur diese zwei — Rest kommt vom Team):

VariableDedicated (1 Center/Projekt)Shared Multi-Center (1 Projekt, viele Domains)
COCKPIT_REGISTER_TOKENJa — im ProjektNein — nur MCP/Go-Live pro Center
COCKPIT_CENTER_SLUGJa — muss zum Token passenNein in Production — optional DEFAULT_CENTER_SLUG nur Preview
COCKPIT_VERCEL_PROJECT_MODEdedicatedshared
DEFAULT_CENTER_SLUGoptionalJa — Preview auf *.vercel.app
EXPECTED_WEBSITE_TEMPLATEoptionalempfohlen

Dedicated — Woher:

VariableWoher
COCKPIT_REGISTER_TOKENCockpit → Frontend-Kanäle (v0) → Token erzeugen
COCKPIT_CENTER_SLUGCenter-Slug im Cockpit — muss zum Token passen

Shared Multi-Center (MEC / ILG / … — ein Layout, ~60 Domains)

  1. Ein v0-Projekt + ein Vercel-Projekt; alle Domains unter Vercel → Domains.
  2. Projekt-Env: COCKPIT_VERCEL_PROJECT_MODE=shared, NEXT_PUBLIC_DASHBOARD_URL, Team Shared (REVALIDATION_SECRET, …), DEFAULT_CENTER_SLUG für Preview.
  3. Nicht pro Center COCKPIT_REGISTER_TOKEN in dieselbe Projekt-Env legen.
  4. Neues Center: Domain in Vercel + Cockpit Center anlegen + Go-Live — Register-Token nur für MCP cockpit_register_frontend_deployment mit Production-Origin dieser Domain.
  5. postbuild cockpit-register-after-deploy.mjs überspringt Register bei shared (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:

  1. Route app/api/cockpit-register/route.ts (aus Monorepo: apps/center-website/app/api/cockpit-register/route.ts)

  2. Route app/api/revalidate/route.ts (für Auto-Update nach Publish)

  3. Skript scripts/cockpit-register-after-deploy.mjs (aus apps/center-website/scripts/…)

  4. 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.json usw. (siehe Instruction Cockpit E).

  5. 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):

  1. Golden Project öffnen (fertiges Layout + Routes + postbuild).
  2. Menü / Project settingsPublish / Save as team template (Bezeichnung in v0 kann leicht abweichen).
  3. Name z. B. Cockpit Center Website (Standard).
  4. 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)

  1. Cockpit: Center anlegen, Slug notieren.

  2. v0: Neues Projekt aus Team-Template.

  3. Vercel: Projekt verknüpfen (GitHub sawmuedev o. ä.) — Shared Env verlinken (siehe unten).

  4. 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.

  5. Production deploypostbuild meldet die URL ans Cockpit.

  6. 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):

  1. v0 + GitHub wie oben — kein Vercel-Projekt nötig
  2. Deploy-Paket einmalig aus deployment-templates/v0-recast/ ins Center-Repo kopieren
  3. Recast-Server: docker-compose.yml + .env (siehe .env.example im Paket)
  4. 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.

  1. Vercel → ProjektSettingsEnvironment Variables
  2. Link Shared Environment VariablesCOCKPIT_DASHBOARD_URL, REVALIDATION_SECRET, COCKPIT_FRONTEND_CHANNEL anhaken
  3. Projekt-Env prüfen: COCKPIT_REGISTER_TOKEN, COCKPIT_CENTER_SLUG, NEXT_PUBLIC_DASHBOARD_URL gesetzt?
  4. Doppelte COCKPIT_DASHBOARD_URL / REVALIDATION_SECRET auf Projektebene entfernen (sonst überschreiben sie Shared)
  5. Production redeploy
  6. 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)

FehlerUrsacheFix
COCKPIT_CENTER_SLUG fehltSlug nicht in VercelSlug aus Cockpit eintragen
Token gehört zu „X“, nicht zu „Y“Slug passt nicht zum Token-CenterSlug oder Token korrigieren
Ungültiger Register-TokenToken rotiert / falschNeuen Token erzeugen, in Vercel setzen, redeploy
Register OK, Revalidate fehltRoute/Secretrevalidate-Route + REVALIDATION_SECRET (Team Shared verlinkt)
API/Register trotz Shared „fehlt“Shared nicht verlinkt oder kein RedeployLink 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