Local Development
Voraussetzungen
- Node.js 24+ (im
.tool-versionsdes Repos gepinnt) - Python 3.12+ (für
packages/color-edit) - Firebase CLI 15.7.0 (
ASDF_FIREBASE_VERSION=15.7.0 firebase --version) gcloudauthentifiziert gegencpl-gen-ai-marketing(für ADC-basierten Vertex- / Firestore- / GCS-Zugriff)
Install
npm install
Backend
# Genkit Dev-UI mit Hot Reload (empfohlen)
npx nx dev server
# Plain Express Server auf :8080
npm start
Im Dev-Mode (NODE_ENV=development und USE_CLOUD_TASKS ungesetzt)
short-circuited pipeline-core/cloud-tasks.ts die Cloud-Tasks-API und
macht stattdessen direkte fetch-POSTs an die lokalen Stage Handler.
Keine Cloud-Tasks-Queue und kein OIDC-Handshake nötig.
Frontend
npx nx dev frontend
Vite-Dev-Server auf :5173 mit Proxy aufs Backend :8080 (Route-Map
siehe packages/frontend/vite.config.ts).
MCP Server
npx nx serve mcp-server # Express auf :8080
Für den lokalen OAuth-Flow ohne Google-Credentials einfach
MCP_ALLOW_INSECURE_OIDC=1 setzen. Das gilt ausschließlich wenn
NODE_ENV !== 'production'; in Production wird Insecure-Mode hart
abgelehnt.
Doku-Site
npx nx dev docs
Docusaurus-Dev-Server auf :3000, Hot Reload bei .md-Saves.
Lokal builden:
npx nx build docs
npx nx serve docs # served das gebaute dist/ auf :3000
Tests
# Alles (lint + test + type-check über alle Packages)
npx nx run-many -t build lint test type-check --parallel=1
# Einzelnes Package
npx nx test pipeline-core
npx nx test mcp-server
npx nx test color-edit
Tests für pipeline-core, mcp-server und server laufen gegen den
Firestore-Emulator (jeweils auf eigenem Port, um Kollisionen zu
vermeiden: 8085 / 8086 / 8087). nx.json setzt das Test-Target deshalb
auf parallel=false.
Praktische Env-Overrides
| Variable | Default | Wann |
|---|---|---|
FIRESTORE_DB_ID | (default) | Gegen eine andere Firestore-DB sprechen |
GCS_BUCKET_NAME | cpl-gen-ai-marketing-images | Einen persönlichen Sandbox-Bucket verwenden |
USE_CLOUD_TASKS | unset | Echte Cloud Tasks auch im Dev erzwingen |
MCP_ALLOW_INSECURE_OIDC | 0 | Google-ID-Token-Signaturcheck überspringen |