Files
Primora/.env.example
T
Tomas Dvorak e25eb92339 feat: phase 4 integrations — connectors, rybbit analytics, webhooks
- core.integrations (migration 00005) with AES-256-GCM-encrypted
  credentials (PRIMORA_ENCRYPTION_KEY, hex/base64, dev fallback);
  has_credentials serialization only — secrets never leave the server
- /projects/:id/integrations list/create/delete/test; health check hits
  the stored base URL with a 5s timeout and records status
- Rybbit connector: GET …/integrations/:id/analytics proxies
  /api/organizations + /api/sites/* server-side into a normalized shape
- core.webhooks + core.webhook_deliveries; CRUD, deliveries, test, and
  POST …/deploy-markers. Events: issue.created (new fingerprint on
  ingest), deploy.marker, webhook.test. X-Primora-Signature HMAC-SHA256
  over the raw body; in-process dispatcher, 3 attempts, quadratic
  backoff, 10s timeout, pending-scan on boot
- HTTPS enforced for public targets; HTTP allowed for loopback/private/
  self-hosted sinks
- Integrations page (connectors + webhooks tabs, inline analytics,
  delivery log, secret-shown-once), demo-mode stubs
- 12 new primora_* MCP tools
- workspace 0.4.0

Authored By: TDvorak <[email protected]>
2026-09-16 18:47:31 +02:00

65 lines
1.7 KiB
Bash

NODE_ENV=development
POSTGRES_USER=primora
POSTGRES_PASSWORD=primora
POSTGRES_DB=primora
POSTGRES_HOST=postgres
POSTGRES_PORT=5432
DATABASE_URL=postgres://primora:primora@postgres:5432/primora?sslmode=disable
DRAGONFLY_HOST=dragonfly
DRAGONFLY_PORT=6379
DRAGONFLY_URL=redis://dragonfly:6379/0
USER_RATE_LIMIT_PER_MINUTE=240
API_KEY_RATE_LIMIT_PER_MINUTE=600
JWT_ISSUER=primora-auth
JWT_AUDIENCE=primora-api
JWT_SECRET=change-me-super-long-jwt-secret
JWT_TTL_SECONDS=900
# AES-256 key (32 bytes, hex or base64) encrypting integration credentials and
# webhook secrets at rest. Required in production; dev falls back to this value.
PRIMORA_ENCRYPTION_KEY=3031323334353637383961626364656630313233343536373839616263646566
AUTH_PORT=3001
AUTH_BASE_URL=http://localhost/auth
AUTH_INTERNAL_BASE_URL=http://auth:3001
BETTER_AUTH_SECRET=change-me-super-long-better-auth-secret
BETTER_AUTH_URL=http://localhost/auth
# Comma-separated emails promoted to auth admin on boot (Authentication → Users panel)
AUTH_ADMIN_EMAILS=
COOKIE_DOMAIN=localhost
FRONTEND_PORT=3000
VITE_APP_URL=http://localhost
VITE_AUTH_BASE_URL=http://localhost/auth
VITE_API_BASE_URL=http://localhost/api/v1
VITE_DEMO_MODE=false
BACKEND_PORT=8080
BACKEND_PUBLIC_URL=http://localhost/api/v1
BACKEND_INTERNAL_URL=http://backend:8080
BACKEND_STORAGE_ROOT=/data/storage
RESEND_API_KEY=
MAIL_FROM=Primora <[email protected]>
SMTP_HOST=mailpit
SMTP_PORT=1025
SMTP_USER=
SMTP_PASSWORD=
SMTP_SECURE=false
GITHUB_CLIENT_ID=
GITHUB_CLIENT_SECRET=
GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=
DISCORD_CLIENT_ID=
DISCORD_CLIENT_SECRET=
MICROSOFT_CLIENT_ID=
MICROSOFT_CLIENT_SECRET=
MICROSOFT_TENANT_ID=
NGINX_PORT=80
MAILPIT_HTTP_PORT=8025