Slices
The email slice sends transactional email through Resend.
No surface requires it, because an email provider is a recurring cost and a
choice the app makes, so it is asked for by name:
It adds no dependency. src/lib/email/send.ts calls Resend's REST API over
global fetch, the same way billing calls Stripe.
Last updated October 23, 2026- Organization invitations. With the orgs slice (the dashboard brings it in), inviting someone emails them the link. The invite dialog says "Invitation sent" and still shows the link to copy. A retried request sends once: the invitation id is the Resend idempotency key.
- Create a Resend account and verify your sending domain.
- Set RESEND_API_KEY (an API key with sending access) and EMAIL_FROM (for example Acme <hello@acme.com>, on the verified domain).
- Host smtp.resend.com, port 465
- Username resend, password your RESEND_API_KEY
- Sender email: the EMAIL_FROM address
Edit this page on GitHub