Plan Your Visit landing page for visit.waterschurch.org

Next.js 16 static export + PHP 8 API for cPanel/Apache hosting.

- Location-aware campus finder (IP estimate, optional precise location, ZIP search)
- Three-step Plan Your Visit form with separate email/SMS consent
- PHP API: validation, anti-spam, rate limiting, SQLite lead store,
  Mailchimp and Sinch Engage adapters, idempotent retries via cron
- Attribution capture (utm_*, gclid/gbraid/wbraid, fbclid, ttclid, twclid) and
  consent-aware analytics hooks
- Vitest and PHP test suites, cPanel deployment script and docs

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
Waters Church
2026-09-22 13:22:26 -04:00
co-authored by Claude Fable 5.1
commit 78cd0cc550
109 changed files with 16861 additions and 0 deletions
+46
View File
@@ -0,0 +1,46 @@
{
"name": "visit-waterschurch",
"version": "1.0.0",
"private": true,
"description": "Plan Your Visit landing page for Waters Church (visit.waterschurch.org)",
"scripts": {
"dev": "next dev",
"dev:api": "php -S 127.0.0.1:8080 -t public",
"build": "node scripts/optimize-images.mjs && next build && node scripts/postbuild.mjs",
"start": "npx serve out",
"lint": "eslint .",
"typecheck": "tsc --noEmit",
"test": "vitest run",
"test:watch": "vitest",
"test:php": "php tests/php/run.php",
"images": "node scripts/optimize-images.mjs",
"package": "node scripts/package.mjs"
},
"dependencies": {
"libphonenumber-js": "^1.13.13",
"next": "^16.3.5",
"react": "^19.3.0",
"react-dom": "^19.3.0",
"zod": "^4.6.5"
},
"devDependencies": {
"@tailwindcss/postcss": "^4.3.3",
"@testing-library/jest-dom": "^6.6.3",
"@testing-library/react": "^16.3.3",
"@testing-library/user-event": "^14.6.7",
"@types/node": "^26.6.2",
"@types/react": "^19.3.0",
"@types/react-dom": "^19.3.0",
"@vitejs/plugin-react": "^6.1.1",
"eslint": "^9.39.5",
"eslint-config-next": "^16.3.5",
"jsdom": "^30.1.1",
"sharp": "^0.35.4",
"tailwindcss": "^4.3.3",
"typescript": "^5.9.3",
"vitest": "^5.0.1"
},
"engines": {
"node": ">=20"
}
}