Files
gw-svelte/deploy.env.template
adminandClaude Opus 4.8 0e88e7bdac v4.0.5
Component architecture
- Reorganise src/lib/components into pages/, sections/, ui/ subdirectories and
  update all imports across routes and tests.

Owner admin dashboard (+2k lines)
- Scheduled welcome-pack emails: durable queue with cancel/reschedule and a
  background sender loop (SCHEDULED_CHECK_INTERVAL_SECONDS, default 60s).
- Custom welcome-pack subject line, preview recipients, and client BCC.
- Add-client, edit client profile, and reset-onboarding flows.
- "View as client" onboarding preview (owner impersonation, dry-run submit).
- Tabbed owner welcome route (/owner/welcome/[[tab]]).

MYOB integration
- New mail_api/myob.py: create new clients as MYOB AccountRight customer
  contacts. Disabled until all MYOB_* env vars are set (no-op otherwise).

Onboarding
- New "Does your dog resource guard?" Yes/No question in the Behaviour step.
- Persist vetAddress, flea/tick, and pet-insurance fields server-side.

Misc
- vite config, new hooks.ts, responsive CSS tweaks, deploy/docker config,
  mail-api README and start-dev.ps1.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 21:51:29 +12:00

59 lines
2.4 KiB
Bash

APP_VERSION=4.0.1
TZ=Pacific/Auckland
POSTGRES_DB=goodwalk
POSTGRES_USER=goodwalk
POSTGRES_PASSWORD=gw_Pg_7Jm9!Qx4#Ld2@Vr8
POSTGRES_PASSWORD_URLENCODED=gw_Pg_7Jm9%21Qx4%23Ld2%40Vr8
RESEND_API_KEY=re_hcDByLp8_HEBW93wDirr7o9g16FgCeYNF
OWNER_EMAIL=info@goodwalk.co.nz
SECONDARY_CP_EMAIL=mattcohen0@gmail.com
SECONDARY_CP_EMAILS=
OWNER_BCC=mattcohen0@gmail.com
CLIENT_BCC=mattcohen0@gmail.com
FROM_EMAIL=GoodWalk <info@goodwalk.co.nz>
REPLY_TO=info@goodwalk.co.nz
MAIL_API_DATA_DIR=/app/data
ENABLE_GENERAL_ENQUIRIES=false
PUBLIC_ENABLE_MOBILE_CTA_BUTTON=false
PUBLIC_ENABLE_ENHANCED_CONTENT_IMAGES=false
# Server-side GA4 (ad-block-resistant fallback). See docs/server-side-analytics.md.
# GA4_MEASUREMENT_ID matches the ID in src/app.html.
# GA4_API_SECRET: GA4 admin → Data Streams → web stream → Measurement Protocol API secrets → Create.
# Leave blank to disable the forwarder (endpoint still accepts requests but skips the GA4 call).
GA4_MEASUREMENT_ID=G-K7TLSFJVP1
GA4_API_SECRET=
FORM_MIN_SECONDS=4
FORM_MAX_SECONDS=7200
RATE_LIMIT_WINDOW_SECONDS=900
RATE_LIMIT_MAX_PER_IP=5
RATE_LIMIT_MAX_PER_EMAIL=3
RATE_LIMIT_MIN_INTERVAL_SECONDS=20
EMAIL_SEND_TIMEOUT_SECONDS=20
# Shared secret for the post-deploy form smoke tests. The deploy script reads
# this from the live remote .env and presents it via X-Deploy-Smoke; the
# mail-api short-circuits matching requests before email/db side effects.
# Rotate with: node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"
DEPLOY_SMOKE_SECRET=ed7261d3d7a5ac0a51e0cfb2bf4e2bd4009503605d2963d3ee766b7e885e76eb
# MYOB integration — optional. When all of MYOB_API_KEY / MYOB_API_SECRET /
# MYOB_REFRESH_TOKEN / MYOB_COMPANY_FILE_URI are set, the "Also create this
# client in MYOB" checkbox in the control panel's Add-client modal creates the
# client as a customer contact in MYOB AccountRight. Leave blank to disable.
# MYOB_API_KEY=
# MYOB_API_SECRET=
# MYOB_REFRESH_TOKEN=
# MYOB_COMPANY_FILE_URI=https://api.myob.com/accountright/<company-file-guid>
# MYOB_CF_USERNAME=Administrator
# MYOB_CF_PASSWORD=
# Security hardening — sensible defaults are in mail_api/config.py.
# Override only if the public domains change or you need to allow extra origins.
# CORS_ALLOWED_ORIGINS=https://goodwalk.co.nz,https://www.goodwalk.co.nz,https://clients.goodwalk.co.nz,https://cp.goodwalk.co.nz
# TRUSTED_HOSTS=goodwalk.co.nz,www.goodwalk.co.nz,clients.goodwalk.co.nz,cp.goodwalk.co.nz,localhost,127.0.0.1
# MAX_REQUEST_BODY_BYTES=2097152