Skip to content

feat: add 2026 registration flow with Google Sheets storage and confirmation email#891

Open
DarshanCode2005 wants to merge 65 commits intoasyncapi:masterfrom
DarshanCode2005:master
Open

feat: add 2026 registration flow with Google Sheets storage and confirmation email#891
DarshanCode2005 wants to merge 65 commits intoasyncapi:masterfrom
DarshanCode2005:master

Conversation

@DarshanCode2005
Copy link
Contributor

@DarshanCode2005 DarshanCode2005 commented Dec 23, 2025

Closes: #875

This PR introduces the Conference 2026 attendee registration flow, including backend persistence and frontend UX updates.

What’s included

  • New 2026 registration API (/api/registration/2026)

    • Validates required fields (name, email)
    • Appends submissions to a private Google Sheet using a service account
    • Captures explicit consent flags (updates opt-in, sponsor data sharing)
    • Sends a confirmation email after successful submission (non-blocking)
  • Google Sheets helper abstraction for safe append-only writes

  • Environment-based configuration for sheet ID and tab

  • Frontend form improvements:

    • Fixed button alignment and layout across steps
    • Styled Back action consistently (gray, non-primary)
    • Removed invalid anchor usage to comply with Next.js Link behavior

Why

  • Enables early collection of attendee data before ticket activation
  • Ensures consent is captured and stored explicitly
  • Keeps all submissions private and accessible only to the org team
  • Aligns UX and implementation with the existing CFP flow

Notes

  • Google Sheets access is restricted to a service account (Editor)
  • Email failures do not block successful registrations
  • .env.local and credentials are intentionally excluded from version control

Complete video of the flow: https://drive.google.com/file/d/11vWbNWZ0o3IFvmUiOKxSC1u-xg10dUzo/view?usp=sharing

@netlify
Copy link

netlify bot commented Dec 23, 2025

Deploy Preview for peaceful-ramanujan-288045 ready!

Name Link
🔨 Latest commit 3968777
🔍 Latest deploy log https://app.netlify.com/projects/peaceful-ramanujan-288045/deploys/69948000cbf5e4000826ca55
😎 Deploy Preview https://deploy-preview-891--peaceful-ramanujan-288045.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

Copy link

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Welcome to AsyncAPI. Thanks a lot for creating your first pull request. Please check out our contributors guide useful for opening a pull request.
Keep in mind there are also other channels you can use to interact with AsyncAPI community. For more details check out this issue.

@DarshanCode2005 DarshanCode2005 changed the title Add 2026 registration flow with Google Sheets storage and confirmation email feat: add 2026 registration flow with Google Sheets storage and confirmation email Dec 23, 2025
Copy link
Member

@AceTheCreator AceTheCreator left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey @DarshanCode2005 👋🏽

Thanks for the contribution! Could you add a location dropdown that lists all conference locations for users to select from?

Once that’s in, I’ll review the PR 🙏🏽

@DarshanCode2005
Copy link
Contributor Author

@AceTheCreator I’ve added the location dropdown menu. Could you please take a look and let me know if it looks good to you?

@DarshanCode2005
Copy link
Contributor Author

DarshanCode2005 commented Feb 5, 2026

Updated the types: 348cdb0

I have extended CfpForm with registration fields and remove redundant any usage

@TenzDelek
Copy link
Member

TenzDelek commented Feb 6, 2026

React Hook Form + Zod.

Both seem like relatively large packages , especially Zod. I’ll let @AceTheCreator decide whether we want to include those external dependencies or not.

@DarshanCode2005
Copy link
Contributor Author

Okay Sir.

@DarshanCode2005
Copy link
Contributor Author

Hi @TenzDelek Sir, I’ve been learning more about accessibility best practices and noticed some opportunities to improve the registration workflow. I’d like to enhance it by adding appropriate ARIA labels and using more semantic HTML, so screen readers and assistive technologies can support users more effectively.
I believe improving accessibility is both our responsibility and also reflects positively on the organization and its inclusiveness. Please let me know if I should proceed with these improvements.

@TenzDelek
Copy link
Member

Hi @TenzDelek Sir, I’ve been learning more about accessibility best practices and noticed some opportunities to improve the registration workflow. I’d like to enhance it by adding appropriate ARIA labels and using more semantic HTML, so screen readers and assistive technologies can support users more effectively. I believe improving accessibility is both our responsibility and also reflects positively on the organization and its inclusiveness. Please let me know if I should proceed with these improvements.

sure go ahead with the ARIA labels

@DarshanCode2005
Copy link
Contributor Author

Hi @TenzDelek Sir, I’ve implemented several accessibility improvements across the registration workflow, including proper semantic structure, focus management, ARIA attributes, validation feedback, and screen reader announcements. I’ll continue reviewing the workflow to identify any additional improvements and will also perform more thorough testing to evaluate the WCAG rating and ensure full accessibility coverage. Please let me know if you’d like me to prioritize any specific areas. Thanks!

@DarshanCode2005
Copy link
Contributor Author

@TenzDelek Sir, I haven’t implemented automated tests for the registration flow yet. Should I go ahead and create Cypress tests for it? I’m planning to cover the main user flow along with accessibility and validation scenarios.

publish = ".next"

[build.environment]
NODE_VERSION = "16.13.2"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

revert this change

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I actually resolved the CI by changing this NODE_VERSION.

<Registration2026 />
</main>

{/* Footer is rendered globally in pages/_app.tsx; avoid duplicate here */}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

remove comment

Copy link
Member

@TenzDelek TenzDelek left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@DarshanCode2005 can you look into the conflict. ping me once it is resolved.

@DarshanCode2005
Copy link
Contributor Author

Sure sir I will look into the conflicts. And let you know.

@DarshanCode2005
Copy link
Contributor Author

I have done the changes told by you sir. Merge conflict , I have accepted the axios version bump, but I have kept the googleapis, because otherwise this current registration flow will break.

@AceTheCreator
Copy link
Member

@TenzDelek how we doing on this PR?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

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

5 participants