Skip to content

feat: add durable SMTP transactional mail subsystem - #47

Merged
baba-dev merged 129 commits into
mainfrom
feat/transactional-mail
Sep 24, 2026
Merged

baba-dev merged 129 commits into
mainfrom
feat/transactional-mail

Conversation

@baba-dev

Copy link
Copy Markdown
Owner

Summary

  • adds a first-class @aiwa/mail subsystem
  • uses durable MariaDB outbox rows with BullMQ worker dispatch
  • enforces separate sender identities:
  • replaces auth verification webhook delivery with durable queued mail
  • sends team-member-added and billing confirmation/rejection/reversal security mail
  • adds SMTP failure classification, bounded retries, idempotency keys, and post-send redaction of sensitive bodies
  • adds Prisma migration, environment validation, and mail package tests

Reliability model

Business/auth actions persist mail before delivery. Redis and SMTP are dispatch mechanisms rather than the source of truth, so transient outages do not lose queued mail.

Deployment

Configure the SMTP variables documented in .env.example, apply migrations, then restart web and worker services.

Follow-up within this PR

CI findings will be fixed before merge; routine generation/report event wiring can be expanded on top of the included routine-mail API without changing the transport architecture.

baba-dev and others added 28 commits September 24, 2026 14:06
@baba-dev
baba-dev merged commit 422525b into main Sep 24, 2026
1 check passed
@baba-dev
baba-dev deleted the feat/transactional-mail branch September 24, 2026 12:17
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.

1 participant