Skip to content

Judge email invites#406

Merged
michelleyeoh merged 8 commits intomainfrom
397-judge-email-invites
Mar 3, 2026
Merged

Judge email invites#406
michelleyeoh merged 8 commits intomainfrom
397-judge-email-invites

Conversation

@ReehalS
Copy link
Member

@ReehalS ReehalS commented Feb 26, 2026

Judge Email invites

The Template and template image pending change sometime in the future.
Infrastructure for parsing and sending for mentors is set up already.
Will work on that once merged.

Tested with 5 emails sent in ~2-3 seconds overall, estimate 1 batch of 10 emails sent to be ~3.5 seconds.

Template and template image pending change
@ReehalS ReehalS linked an issue Feb 26, 2026 that may be closed by this pull request
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This pull request implements an email invitation system for judges to join the HackDavis 2026 Hub. It replaces the previous invite-link page with a comprehensive invitation system that supports both single and bulk judge invitations via CSV upload, utilizing nodemailer with connection pooling for efficient email delivery.

Changes:

  • Added type definitions for judge invite data structures and response types
  • Implemented single and bulk judge invitation forms with CSV parsing and preview functionality
  • Created email transporter configuration with connection pooling and HMAC-signed invite link generation
  • Replaced the generic invite-link page with a dedicated invite-judges interface

Reviewed changes

Copilot reviewed 12 out of 13 changed files in this pull request and generated 7 comments.

Show a summary per file
File Description
app/_types/emails.ts Defines TypeScript interfaces for judge invitation data, results, and responses
app/(pages)/admin/page.tsx Updates admin navigation to point to new invite-judges route
app/(pages)/admin/invite-link/page.tsx Removes old generic invite link page component
app/(pages)/admin/invite-link/invite.module.scss Removes old invite page styles
app/(pages)/admin/invite-judges/page.tsx New page with single and bulk judge invitation forms
app/(pages)/admin/_components/JudgeInvites/JudgeSingleInviteForm.tsx Form component for sending individual judge invitations
app/(pages)/admin/_components/JudgeInvites/JudgeBulkInviteForm.tsx Form component with CSV upload, preview, and batch sending
app/(api)/_actions/emails/transporter.ts Configures nodemailer transporter with connection pooling
app/(api)/_actions/emails/sendSingleJudgeHubInvite.ts Server action to create and send single judge invitation
app/(api)/_actions/emails/sendBulkJudgeHubInvites.ts Server action for batched sending with concurrency control
app/(api)/_actions/emails/parseInviteCSV.ts Server-side CSV parser with validation using csv-parse and zod
app/(api)/_actions/emails/emailFormats/2026JudgeHubInviteTemplate.ts HTML email template for 2026 judge invitations

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@ReehalS
Copy link
Member Author

ReehalS commented Feb 26, 2026

The emails sent right now will not contain viewable headers/footers since the image for them isn't deployed yet. Once this is on prod/staging it will start working as intended.

@ReehalS ReehalS requested a review from michelleyeoh February 26, 2026 09:11
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 13 out of 15 changed files in this pull request and generated 7 comments.

Comments suppressed due to low confidence (1)

app/(pages)/admin/invite-hackers/page.tsx:7

  • The default export function is named InviteJudgesPage, but this route is /admin/invite-hackers. This mismatch makes stack traces and React DevTools confusing and is easy to copy/paste incorrectly later. Rename the component to something like InviteHackersPage (or another name matching the route).

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Copy link
Contributor

@michelleyeoh michelleyeoh left a comment

Choose a reason for hiding this comment

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

Kept most code the same, relocated old invite ui to invite-hackers.
Please follow the template next time & create as many consts as necessary.
Please add a csv test file for parseInviteCSV in the next mentor pr.

@michelleyeoh michelleyeoh merged commit eb7fa5c into main Mar 3, 2026
2 checks passed
@michelleyeoh michelleyeoh deleted the 397-judge-email-invites branch March 3, 2026 03:40
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.

Judge email invites

3 participants