-
-
Notifications
You must be signed in to change notification settings - Fork 206
Open
Description
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/2026or/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 toPaper(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.
- Create new page component under
- API
- New handler under
pages/api/registration/2026(or similar). Pattern afterpages/api/speakers/register. - Validate required fields server-side; reject if missing required consent default handling.
- Append to a dedicated sheet tab (range name configurable).
- New handler under
- 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-toastpattern from CFP).
- Inline validation + disabled submit while posting; toast on errors (reuse
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels
Type
Projects
Status
In Progress