feat: embed Chatwoot live-chat widget (destek.sase.tr)
Site-wide live-chat widget served from the self-hosted Chatwoot at destek.sase.tr, with verified user identity and vehicle context. - apps/web: lib/chatwoot.ts loads the SDK lazily (mirrors the PostHog init pattern), init in main.tsx, identify logged-in users in __root via a server-computed HMAC, and attach the viewed vehicle (VIN/brand/ model) as contact custom attributes on the vehicle detail page. - apps/api: GET /api/chatwoot/identity (AuthGuard-protected) returns HMAC-SHA256(user.id) so the widget can use verified identity. - env: VITE_CHATWOOT_BASE_URL + VITE_CHATWOOT_WEBSITE_TOKEN (build-time, wired through docker-compose.coolify.yml build args + Dockerfile ARG) and CHATWOOT_HMAC_TOKEN (api runtime). All optional — widget and endpoint no-op when unset. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -8,6 +8,8 @@ services:
|
||||
- VITE_FARO_COLLECTOR_URL=${VITE_FARO_COLLECTOR_URL:-}
|
||||
- VITE_POSTHOG_KEY=${VITE_POSTHOG_KEY:-}
|
||||
- VITE_META_PIXEL_ID=${VITE_META_PIXEL_ID:-}
|
||||
- VITE_CHATWOOT_BASE_URL=${VITE_CHATWOOT_BASE_URL:-}
|
||||
- VITE_CHATWOOT_WEBSITE_TOKEN=${VITE_CHATWOOT_WEBSITE_TOKEN:-}
|
||||
environment:
|
||||
- NODE_ENV=production
|
||||
- PORT=4000
|
||||
@@ -64,6 +66,8 @@ services:
|
||||
- OTEL_SERVICE_NAME=${OTEL_SERVICE_NAME:-sase-api}
|
||||
- OTEL_TRACE_SAMPLE_RATE=${OTEL_TRACE_SAMPLE_RATE:-1.0}
|
||||
- ML_PREDICTION_ENABLED=${ML_PREDICTION_ENABLED:-false}
|
||||
# Chatwoot live-chat widget — HMAC secret for verified user identity
|
||||
- CHATWOOT_HMAC_TOKEN=${CHATWOOT_HMAC_TOKEN:-}
|
||||
depends_on:
|
||||
sase-redis:
|
||||
condition: service_healthy
|
||||
|
||||
Reference in New Issue
Block a user