Skip to content

Judge email invites#406

Open
ReehalS wants to merge 5 commits intomainfrom
397-judge-email-invites
Open

Judge email invites#406
ReehalS wants to merge 5 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
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

2 participants