Skip to content

[HIGH] Implement email notification service integration (SendGrid or AWS SES) #30

Description

@kilodesodiq-arch

Engineering Gap

sendReceiptViaEmail in app/backend/src/claims/claims.service.ts line 642 is a TODO stub. The method logs but never sends email. Core receipt-sharing feature non-functional.

Codebase Evidence

  • app/backend/src/claims/claims.service.ts lines 637-651: sendReceiptViaEmail logs with "[EMAIL STUB]" prefix, TODO comment references SendGrid/AWS SES
  • app/backend/src/notifications/notifications.processor.ts: BullMQ processor exists with concurrency config, ready for email jobs
  • No email provider SDK in package.json dependencies
  • app/backend/src/notifications/notifications.module.ts: Module infrastructure exists

Risk Profile

Current Risk

Receipt sharing feature non-functional. Users requesting email receipts receive nothing.

Business Impact

Broken user trust. Inability to deliver proof-of-claim. Non-compliance with humanitarian accountability standards.

Remediation Strategy

Integrate SendGrid (free tier for dev) or AWS SES. Add provider SDK. Create EmailService in notifications module. Wire into BullMQ processor for async delivery. Add email-specific Prometheus metrics.

Success Conditions

  • Email provider integrated with SDK
  • Async delivery via existing BullMQ processor
  • Env var configuration for credentials
  • Graceful failure with retry
  • Email metrics in observability

Change Surface

Files: claims/claims.service.ts, new notifications/email/email.service.ts, notifications/notifications.module.ts, package.json

Security Review

Email provider API keys must be stored via env vars. Must not log email addresses or receipt content in production.

Completion Checklist

  • Implementation completed
  • Peer reviewed
  • Tests passing
  • Security review completed
  • Ready for merge

Metadata

Metadata

Assignees

No one assigned

    Labels

    featurehelp wantedExtra attention is neededhighHigh severity issues

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions