dx-base's three commits from research-gallery-plugin-studio (the runtime loader, check:origins and its lint pass) apply here unchanged: the code is byte-identical to that branch. What differs is what the two settings point at on this route. The Research Gallery is the research site the team's dx-maps container serves, and the maps load from the container's published tree, which the research subdomain serves at /dx-maps (the Studio's host serves the same tree at /cdn/dx-maps; both send CORS). The comments, .env.example and DX-MAPS-GALLERY.md now say so, with this route's laptop values (research.localhost:4615, as compose.laptop.yaml already sets). DX-MAPS-GALLERY.md's "Run it" said no .env is needed for /research. That stopped being true when the default maps host was removed, so it now names the one setting the maps need. check:origins: 15 problems on research-gallery-subdomain before, PASS (306 files) after.
106 lines
4.9 KiB
Text
106 lines
4.9 KiB
Text
APP_TITLE=My App
|
|
DATABASE_URL=postgresql://user:password@localhost:5432/dbname
|
|
NODE_ENV=development
|
|
NUXT_PUBLIC_SITE_URL=http://localhost:3000
|
|
|
|
JWT_SECRET=your-super-secret-jwt-key-change-this
|
|
|
|
# SendGrid (transactional email: invites, password resets, verification).
|
|
# Sends through the v3 JSON API. The From address in SMTP_FROM must be on a
|
|
# domain authenticated in the SendGrid account.
|
|
SENDGRID_API_KEY=your-sendgrid-api-key
|
|
# Optional API host override; defaults to api.sendgrid.com (use api.eu.sendgrid.com for EU)
|
|
SENDGRID_HOST=
|
|
SMTP_FROM=noreply@yourdomain.com
|
|
SMTP_FROM_NAME=My App
|
|
|
|
S3_ENDPOINT=https://s3.us-west-004.backblazeb2.com
|
|
S3_REGION=us-west-004
|
|
S3_ACCESS_KEY_ID=your-access-key-id
|
|
S3_SECRET_ACCESS_KEY=your-secret-access-key
|
|
S3_BUCKET_NAME=your-bucket-name
|
|
# Optional: only required if you call uploadToS3(..., 'public') or getPublicUrl()
|
|
# Set to the custom domain attached to your bucket (e.g. Cloudflare R2 custom domain)
|
|
S3_PUBLIC_BASE_URL=https://cdn.example.com
|
|
|
|
# Prayer Tools integration
|
|
NUXT_PRAY_BASE_URL=https://pray.doxa.life
|
|
NUXT_PUBLIC_PRAY_BASE_URL=https://pray.doxa.life
|
|
FORM_API_KEY=your-form-api-key
|
|
|
|
# DOXA Prayer App store listings (app promo section on /pray and the research
|
|
# people group pages). Leave MOBILE_APP_APPLE_ID empty to hide the App Store
|
|
# badge until the iOS app is live.
|
|
MOBILE_APP_APPLE_ID=
|
|
MOBILE_APP_ANDROID_PACKAGE=life.doxa.pray
|
|
|
|
# Mapbox (used by the prayer map on /pray)
|
|
NUXT_PUBLIC_MAPBOX_TOKEN=your-mapbox-public-token
|
|
|
|
# The subdomain branch's two addresses, per deployment. Both are REQUIRED, and both are read by the
|
|
# server at REQUEST time (server/utils/dx-runtime.ts). They are never baked into a build, so one build
|
|
# serves any deployment. Changing them needs a restart, not a rebuild. There is no default host: when
|
|
# one is unset, the pages that need it say which setting is missing.
|
|
#
|
|
# The Research Gallery: the research site on its own subdomain, served by the team's dx-maps container.
|
|
# The menu's Research item, every in-page gallery link and the /regions index go here (through this
|
|
# site's /research-gallery).
|
|
# VPS: NUXT_PUBLIC_RESEARCH_GALLERY_URL=https://research.<host>/
|
|
# laptop: NUXT_PUBLIC_RESEARCH_GALLERY_URL=http://research.localhost:4615/
|
|
NUXT_PUBLIC_RESEARCH_GALLERY_URL=
|
|
#
|
|
# The dx-maps tree this site's maps load from: the container's published tree, which the research
|
|
# subdomain serves at /dx-maps. It must send Access-Control-Allow-Origin for the tree (the container
|
|
# does). The Studio's own host serves the same tree at /cdn/dx-maps.
|
|
# VPS: NUXT_PUBLIC_DX_MAPS_BASE=https://research.<host>/dx-maps
|
|
# laptop: NUXT_PUBLIC_DX_MAPS_BASE=http://research.localhost:4615/dx-maps
|
|
NUXT_PUBLIC_DX_MAPS_BASE=
|
|
|
|
# Cloudflare Turnstile
|
|
NUXT_TURNSTILE_SITE_KEY=your-turnstile-site-key
|
|
NUXT_TURNSTILE_SECRET_KEY=your-turnstile-secret-key
|
|
|
|
# Statinator analytics (self-hosted tracking-server)
|
|
# Project must exist on the tracking-server with this site's hostname in allowed_domains.
|
|
# Set NUXT_PUBLIC_STATINATOR_ENABLED=false (or unset) to disable tracking entirely.
|
|
NUXT_PUBLIC_STATINATOR_URL=https://statinator.doxa.life
|
|
NUXT_PUBLIC_STATINATOR_PROJECT_ID=doxa
|
|
NUXT_PUBLIC_STATINATOR_ENABLED=true
|
|
# Cookie domain for the shared visitor ID (links activity across doxa.life and pray.doxa.life).
|
|
# Set to empty in dev to make the cookie host-only.
|
|
NUXT_PUBLIC_STATINATOR_COOKIE_DOMAIN=.doxa.life
|
|
|
|
# OpenRouter (used by the CMS "Auto-translate" workflow on /admin/pages/:id
|
|
# and the translate_text / translate_page MCP tools)
|
|
OPENROUTER_API_KEY=your-openrouter-api-key
|
|
# Optional model override. Admins can also set it at /admin/settings, which wins
|
|
# over this. Defaults to anthropic/claude-opus-5 when both are unset.
|
|
TRANSLATION_MODEL=
|
|
|
|
# Cloudflare cache purge on deploy (server/plugins/cloudflare-purge.ts).
|
|
# On container boot the edge cache is purged so stale prerendered HTML can't
|
|
# reference content-hashed assets the new deploy replaced. Leave both blank to
|
|
# disable (e.g. in dev). Token: My Profile → API Tokens → Custom Token with
|
|
# Zone → Cache Purge for the doxa.life zone. Zone ID: zone Overview page.
|
|
CF_API_TOKEN=
|
|
CF_ZONE_ID=
|
|
|
|
# OAuth 2.1 server
|
|
# Issuer is derived from NUXT_PUBLIC_SITE_URL; resource is `${siteUrl}/mcp`.
|
|
# Generate with: openssl rand -hex 32
|
|
OAUTH_CONSENT_COOKIE_SECRET=replace-me-at-least-32-bytes-of-random-hex-or-base64
|
|
OAUTH_ALLOW_DCR=false
|
|
# Path to the OAuth Nuxt layer (extends). Optional — leave blank to skip.
|
|
# Local dev typically points at a sibling checkout (e.g. ../../base-code/layers/oauth);
|
|
# prod can use a github: shorthand or a pinned path.
|
|
OAUTH_LAYER_PATH=
|
|
|
|
# MCP server layer (extends; depends on the OAuth layer).
|
|
# Path to the MCP Nuxt layer. Leave blank to skip the MCP transport.
|
|
MCP_LAYER_PATH=
|
|
# MCP server identity advertised in the `initialize` response.
|
|
MCP_SERVER_NAME=marketing-rebuild
|
|
MCP_SERVER_VERSION=1.0.0
|
|
|
|
# The map engine for every map: maplibre (keyless, the default) or mapbox (needs NUXT_PUBLIC_MAPBOX_TOKEN).
|
|
# NUXT_PUBLIC_MAP_PROVIDER=maplibre
|