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>
Deploy config:
- .do/app.yaml: build the Dockerfile directly from GitHub (deploy_on_push) instead
of a pre-built DOCR image; NEXT_PUBLIC_* set RUN_AND_BUILD_TIME with the
propertymanagement.network domain so they bake into the client bundle; add
custom domains block (apex + www); wire Sentry DSN (server + browser).
Included pending work from the audit-fixes branch:
- AI provider abstraction (OpenAI/Anthropic, admin-selectable; Anthropic default)
- Per-landlord e-signature (DocuSign OAuth + Dropbox Sign) + migration 0010
- Outbound webhooks / Zapier integration
- PayPal removal (Stripe-only billing)
- Storage hardening (fail-loud when Spaces unconfigured), security fixes
Verified: full production Docker build (same build-args as DO) passes clean.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>