mirror of
https://github.com/koala73/worldmonitor.git
synced 2026-04-25 17:14:57 +02:00
* fix(contact): add dedicated enterprise contact endpoint with storage and email notifications The enterprise contact form was posting to /api/register-interest which only stored email for the waitlist. Name, organization, and message fields were silently dropped and no notification was sent. - Add api/contact.js endpoint with Turnstile, rate limiting, honeypot - Add Convex contactMessages table and submit mutation - Send notification email to sales@worldmonitor.app via Resend - Sanitize email subject (strip newlines, truncate length) - Fix cf-connecting-ip priority in register-interest.js IP detection * chore: add contact.js to legacy endpoint allowlist * fix(contact): harden Turnstile enforcement, surface email status, add tests - Turnstile rejects in production when TURNSTILE_SECRET_KEY is unset (only allows skip in development) - sendNotificationEmail returns boolean, response includes emailSent field - Log error (not warn) when RESEND_API_KEY is missing in production - Add 15 endpoint tests covering validation, Turnstile, notifications, Convex