- Update root layout with full Open Graph, Twitter Card, and SEO metadata
- Add OG image screenshot (1200x630) of the landing page hero
- Create layout.tsx with page-specific metadata for each marketing page
(welcome, features index, 8 feature detail pages, pricing)
- Use Next.js title template ("%s | Echo") for consistent page titles
- Add NEXT_PUBLIC_SITE_URL to .env.example for metadataBase config
Made-with: Cursor
41 lines
1.9 KiB
Text
41 lines
1.9 KiB
Text
# ─── Database (Supabase pooled connection) ────────────────────
|
|
DATABASE_URL="postgresql://postgres.<ref>:<password>@aws-0-us-east-1.pooler.supabase.com:6543/postgres"
|
|
|
|
# ─── Object Storage (Supabase Storage, S3-compatible) ─────────
|
|
STORAGE_ENDPOINT="https://<ref>.supabase.co/storage/v1/s3"
|
|
STORAGE_REGION="us-east-1"
|
|
STORAGE_ACCESS_KEY=""
|
|
STORAGE_SECRET_KEY=""
|
|
STORAGE_BUCKET="echos-ocr"
|
|
|
|
# ─── Upstash QStash (job queue) ───────────────────────────────
|
|
QSTASH_TOKEN=""
|
|
QSTASH_CURRENT_SIGNING_KEY=""
|
|
QSTASH_NEXT_SIGNING_KEY=""
|
|
|
|
# ─── Vercel AI Gateway ────────────────────────────────────────
|
|
AI_GATEWAY_API_KEY=""
|
|
|
|
# ─── Auth.js (required — generate with: npx auth secret) ─────
|
|
AUTH_SECRET=""
|
|
AUTH_URL="https://echoocr.yourdomain.com"
|
|
|
|
# ─── OIDC SSO (optional) ──────────────────────────────────────
|
|
AUTHENTIK_ISSUER=""
|
|
AUTHENTIK_CLIENT_ID=""
|
|
AUTHENTIK_CLIENT_SECRET=""
|
|
|
|
# ─── Brevo transactional email ────────────────────────────────
|
|
BREVO_API_KEY=""
|
|
EMAIL_FROM_NAME="Echo OCR"
|
|
EMAIL_FROM_ADDRESS="mars@noreply.stillwell.cloud"
|
|
|
|
# ─── Vercel Cron Secret ────────────────────────────────────────
|
|
# Vercel auto-sets this on Pro. Used to authenticate cron job requests.
|
|
CRON_SECRET=""
|
|
|
|
# ─── Public site URL (used for OG metadata, canonical links) ─
|
|
NEXT_PUBLIC_SITE_URL="https://echoocr.com"
|
|
|
|
# ─── Environment indicator ────────────────────────────────────
|
|
NEXT_PUBLIC_ENV=""
|