Summary
Add Mailjet as the transactional email provider for sending system emails (welcome, password reset, notifications) from the Go backend.
Scope
Backend (Go)
Email templates
- Store templates as Go
text/template or html/template files under internal/infrastructure/email/templates/
- Render templates server-side before sending — no external template hosting required at this stage
Acceptance criteria
Dependencies
Summary
Add Mailjet as the transactional email provider for sending system emails (welcome, password reset, notifications) from the Go backend.
Scope
Backend (Go)
github.com/mailjet/mailjet-apiv3-go/v4) or send via Mailjet SMTP using Go'snet/smtpEmailSenderinterface inusecase/and implement it ininfrastructure/email/mailjet/server.gousingMAILJET_API_KEYandMAILJET_SECRET_KEYenv varsSendWelcomeEmail) as a reference — natural trigger point from QStash jobs (feat: integrate Asynq + Redis Streams for background jobs and event-driven messaging #18) or Firebase Auth sign-up (feat: add Firebase Authentication across all app layers #15)FROM_EMAILandFROM_NAMEenv var for the sender identityEmail templates
text/templateorhtml/templatefiles underinternal/infrastructure/email/templates/Acceptance criteria
SendWelcomeEmailfunction works end-to-end in a local integration test (or against Mailjet sandbox)MAILJET_API_KEY,MAILJET_SECRET_KEY,FROM_EMAIL, andFROM_NAMEadded tobackend/.env.examplewith placeholders and commentsEmailSenderinterface is unit-tested with a mock; integration test hits the real Mailjet sandbox APIbackend/docs/email.mdcovering the interface, template pattern, and env var setupDependencies