Skip to content

Implement 2026 Registration Page (attendee intake + consent + Sheets) #875

@DarshanCode2005

Description

@DarshanCode2005

Goal

Launch a 2026 registration page that collects attendee info before ticket activation, captures sponsor data-sharing consent (opt-in/opt-out), and writes submissions to a private Google Sheet for internal use. Ship early 2026 as part of the website revamp.

Background / Reference

  • Model the UX after the existing online conference CFP flow (multi-step form and API used in pages/venue/online/register + components/Form/Cfp/*).
  • Current sheets + email flow lives in pages/api/speakers/register (Google Sheets append + nodemailer).

Scope

  • New public page for 2026 registration (route TBD, e.g. /register/2026 or /venue/2026/register), linked from the main nav and the 2026 site shell.
  • Multi-step form patterned on the CFP steps to keep UX consistent.
  • Submit to a dedicated API route that writes to a private Google Sheet (service account).
  • Capture explicit sponsor data-sharing consent (checkbox must be off by default).
  • Store all submissions (including consent flag) in the Sheet; no public exposure.
  • Optional: send confirmation email on successful submission (reuse nodemailer pattern).

Form: proposed fields (can trim if design wants smaller)

  • Personal: Full name (required), Email (required), Company/Org, Role/Title.
  • Event context: Preferred city/edition (if applicable), Timezone, Attendance type (in-person/online), Dietary or accessibility needs (free text).
  • Communication: Opt-in to updates (checkbox).
  • Sponsor data sharing: Opt-in/opt-out (checkbox, defaults to false).
  • Free-text note (optional).

Implementation Plan

  • UI
    • Create new page component under pages/... (aligned with 2026 site IA) that renders a multi-step form similar to Paper (steps for Personal → Event → Consents/Notes → Review/Submit).
    • Use existing form components/patterns (Button, inputs, textarea styling, step counter) to match current design.
    • Add success state (confetti optional) and CTA back to main 2026 pages.
  • API
    • New handler under pages/api/registration/2026 (or similar). Pattern after pages/api/speakers/register.
    • Validate required fields server-side; reject if missing required consent default handling.
    • Append to a dedicated sheet tab (range name configurable).
  • Data store (Google Sheets)
    • Create a new sheet/tab for 2026 registrations.
    • Env vars: GOOGLE_SHEET_SERVICE_ACCOUNT (JSON), REGISTRATION_2026_SHEET_ID, REGISTRATION_2026_TAB (or range).
    • Columns: timestamp, name, email, company, role, city/edition, attendance type, timezone, dietary/accessibility, updates opt-in, sponsor-sharing opt-in, notes.
  • Email (optional but recommended)
    • Reuse nodemailer setup from speaker registration.
    • Template: confirmation of receipt + note that ticket activation will follow.
  • Privacy/consent
    • Consent checkbox unchecked by default; required to proceed? (product decision) ; at minimum, store the chosen value.
    • Add short privacy note linking to Code of Conduct / privacy policy.
  • Navigation
    • Add link to 2026 nav/venue navigation (and any hero CTA needed for early access).
  • State/UX
    • Inline validation + disabled submit while posting; toast on errors (reuse react-hot-toast pattern from CFP).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Status

    In Progress

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions