Repository navigation
Expand file tree
/
Copy pathenv.example
More file actions
74 lines (61 loc) · 2.78 KB
/
Copy pathenv.example
File metadata and controls
74 lines (61 loc) · 2.78 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# Database
POSTGRES_URL=postgresql://dev_user:dev_password@localhost:5434/postgres_dev
# Authentication - Better Auth
# Generate key using https://www.better-auth.com/docs/installation
BETTER_AUTH_SECRET=
BETTER_AUTH_URL="http://localhost:3000"
# AI Integration via OpenRouter (Optional - for chat functionality)
# Get your API key from: https://openrouter.ai/settings/keys
# View available models at: https://openrouter.ai/models
OPENROUTER_API_KEY=
OPENROUTER_MODEL="openai/gpt-5-mini"
# Optional - for vector search only
OPENAI_EMBEDDING_MODEL="text-embedding-3-large"
# App URL (for production deployments)
NEXT_PUBLIC_APP_URL="http://localhost:3000"
# Email (password reset)
# Resend is used for password reset emails: https://resend.com
# In development, missing RESEND_API_KEY logs the email to the console.
# In production, RESEND_API_KEY is required.
RESEND_API_KEY=
EMAIL_FROM="Quotation Logistique <noreply@votre-domaine.com>"
# Error monitoring - Sentry (Optional)
# Get your DSN from: https://sentry.io/settings/projects/
NEXT_PUBLIC_SENTRY_DSN=
# For sourcemap uploads (optional)
SENTRY_AUTH_TOKEN=
SENTRY_ORG=
SENTRY_PROJECT=
# File storage (optional - if app required file uploads)
BLOB_READ_WRITE_TOKEN=
# Polar payment processing
# Get these from: https://sandbox.polar.sh/dashboard (sandbox) or https://polar.sh/dashboard (production)
POLAR_WEBHOOK_SECRET=polar_
POLAR_ACCESS_TOKEN=polar_
# Multi-tenant SaaS (Epic 7)
# Owner contact shown in reminder/expiry emails and to suspended tenants.
# Both read by buildOwnerContact(); OWNER_EMAIL falls back to EMAIL_FROM if unset.
OWNER_WHATSAPP="+227 XX XX XX XX"
OWNER_EMAIL="contact@maigatechlab.com"
# Apex domain for subdomain tenant resolution. REQUIRED in production.
# On localhost, tenant URLs are built as http://{slug}.localhost:3000 instead
# (buildTenantUrl in src/lib/tenants/tenant-config.ts) — APEX_DOMAIN is ignored.
APEX_DOMAIN="quotation.com"
# Dev mode: simulate subdomains via x-test-tenant-slug header (1=on, empty=off)
# Usage: curl -H "x-test-tenant-slug: acme" http://localhost:3000/dashboard
SUBDOMAIN_DEV_MODE=
# Secret pour authentifier les invocations du cron Vercel (/api/cron/*).
# Vercel envoie "Authorization: Bearer <CRON_SECRET>". Générer avec : openssl rand -hex 32
CRON_SECRET=
# Le cron d'expiration calcule les jours en UTC (calendarDaysBetween + formatDateFR).
# Le runtime DOIT tourner en UTC (Vercel = UTC par défaut). Si self-hosted, exporter TZ=UTC.
# TZ=UTC
# Neon Postgres — Backup & PITR (Story 6-6)
# Required for automated restore tests (GitHub Actions workflow)
# Dashboard Neon → Settings → General for PROJECT_ID
# Dashboard Neon → Account → API Keys for API_KEY
# Scale plan minimum required for 30-day PITR retention (§15.4)
NEON_PROJECT_ID=
NEON_API_KEY=
NEON_STAGING_BRANCH=
DATABASE_URL_STAGING=