From a32e4de2acd73f34beb11bdf996db207ff04f5cc Mon Sep 17 00:00:00 2001 From: Jennie Robinson Faber Date: Sat, 4 Apr 2026 12:40:15 +0100 Subject: [PATCH] feat: wire welcome email for new member creation --- server/api/members/create.post.js | 10 +++++++-- server/utils/resend.js | 35 +++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+), 2 deletions(-) diff --git a/server/api/members/create.post.js b/server/api/members/create.post.js index d413741..fd965ea 100644 --- a/server/api/members/create.post.js +++ b/server/api/members/create.post.js @@ -4,6 +4,7 @@ import { connectDB } from '../../utils/mongoose.js' import { getSlackService } from '../../utils/slack.ts' import { validateBody } from '../../utils/validateBody.js' import { memberCreateSchema } from '../../utils/schemas.js' +import { sendWelcomeEmail } from '../../utils/resend.js' // Simple payment check function to avoid import issues const requiresPayment = (contributionValue) => contributionValue !== '0' @@ -98,8 +99,13 @@ export default defineEventHandler(async (event) => { // Payment processing will be added here } - // TODO: Send welcome email - + // Send welcome email (non-blocking) + try { + await sendWelcomeEmail(member) + } catch (emailError) { + console.error('Failed to send welcome email:', emailError) + } + return { success: true, member: { diff --git a/server/utils/resend.js b/server/utils/resend.js index 181013e..45f85a2 100644 --- a/server/utils/resend.js +++ b/server/utils/resend.js @@ -255,3 +255,38 @@ ${eventList}`, return { success: false, error }; } } + +/** + * Send welcome email to new member + */ +export async function sendWelcomeEmail(member) { + const baseUrl = process.env.BASE_URL || "https://ghostguild.org"; + + try { + const { data, error } = await resend.emails.send({ + from: "Ghost Guild ", + to: [member.email], + subject: "Welcome to Ghost Guild", + text: `Hi ${member.name}, + +Welcome to Ghost Guild! You're now part of the ${member.circle} circle. + +Sign in to your dashboard: +${baseUrl}/member/dashboard + +If you have questions, reach out on Slack or reply to this email. + +— Ghost Guild`, + }); + + if (error) { + console.error("Failed to send welcome email:", error); + return { success: false, error }; + } + + return { success: true, data }; + } catch (error) { + console.error("Error sending welcome email:", error); + return { success: false, error }; + } +}