chore: sync in-progress work across marketing, admin, API and tests

Snapshot of uncommitted work that had accumulated in the tree alongside
the Turnstile changes:

- marketing pages, SEO helpers (lib/seo.ts, lib/marketing/) and
  structured data
- admin billing actions and a per-user portfolio view, plus an admin
  error boundary
- rate limiting (lib/rate-limit.ts) applied across the /api/v1 surface
- CSP and proxy adjustments, accounting/webhook lib updates
- Playwright config and an e2e/unit test suite
- next bumped to ^16.3.4 with the lockfile regenerated
- generated AGENTS.md / CLAUDE.md

Authored by other sessions working in this tree; committed here so the
Turnstile work could be pushed without leaving the tree dirty.
Typecheck passes.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Leon Serfaty
2026-09-05 16:27:16 -04:00
co-authored by Claude Opus 5
parent 8f90347659
commit 1d02598786
71 changed files with 3641 additions and 819 deletions
+7 -4
View File
@@ -11,7 +11,10 @@
"db:generate": "drizzle-kit generate",
"db:migrate": "drizzle-kit migrate",
"db:push": "drizzle-kit push",
"db:studio": "drizzle-kit studio"
"db:studio": "drizzle-kit studio",
"test": "playwright test --project=unit",
"test:unit": "playwright test --project=unit",
"test:e2e": "playwright test --project=e2e"
},
"dependencies": {
"@anthropic-ai/sdk": "^0.110.0",
@@ -25,7 +28,7 @@
"@radix-ui/react-switch": "^1.2.6",
"@sentry/nextjs": "^10.63.0",
"@types/papaparse": "^5.5.2",
"better-auth": "^1.6.20",
"better-auth": "^1.7.2",
"clsx": "^2.1.1",
"date-fns": "^4.1.0",
"dotenv": "^17.4.2",
@@ -34,7 +37,7 @@
"jspdf": "^4.2.1",
"leaflet": "^1.9.4",
"lucide-react": "^1.7.0",
"next": "16.2.2",
"next": "^16.3.4",
"nodemailer": "^9.0.3",
"openai": "^6.33.0",
"papaparse": "^5.5.3",
@@ -58,7 +61,7 @@
"@types/react-dom": "^19",
"drizzle-kit": "^0.31.10",
"eslint": "^9",
"eslint-config-next": "16.2.2",
"eslint-config-next": "^16.3.4",
"tailwindcss": "^4",
"typescript": "^5"
}