neireva-contact/README.md

1.3 KiB

neireva-contact

Temporary conference lead-capture form for contact.neireva.com. Writes to the marketing_leads table in the Neireva dev Supabase project. Decommission after the conference; keep the table + data.

Run locally

npm install
cp .env.example .env.local   # fill in SUPABASE_SERVICE_ROLE_KEY
npm run dev                   # http://localhost:3000

Submit a test entry, then confirm a row appears: select * from marketing_leads order by created_at desc limit 1;

Environment variables (set in Coolify, never committed)

Var Notes
SUPABASE_URL https://jgyibweqcygoirfwofyp.supabase.co (dev)
SUPABASE_SERVICE_ROLE_KEY Server-side only. Do not prefix NEXT_PUBLIC_.

Notes

  • Consent wording lives in lib/consent.ts and is stored server-side on insert, so the saved consent_text always matches what was displayed. Bump CONSENT_VERSION if you change the wording.
  • Honeypot + in-memory rate limit (5/IP/hour). The limiter is per-instance — fine for a single Coolify container; would need Redis if scaled out.
  • The page is set to noindex (temporary). To switch the UI to French, translate the labels in components/ContactForm.tsx and the copy in app/page.tsx; the consent text in lib/consent.ts is intentionally left as supplied.