Voltar para o Blog
Vibe Coding35 / 40
  1. 01O que é vibe coding (e o que não é)
  2. 02De escrever código a dirigir a intenção
  3. 03O ciclo: contexto → plano → geração → revisão
  4. 04O arsenal: visão geral do nosso stack de IA
  5. 05Quando não usar vibe coding
  6. 06Da ideia ao protótipo em horas
  7. 07Claude para brainstorm de produto e PRD
  8. 08Claude Artifacts para mockups instantâneos
  9. 09Lovable: do prompt ao app funcional
  10. 10Google AI Studio: prototipando com Gemini
  11. 11Lovable × Claude × Google Studio: quando usar cada um
  12. 12Claude Code: o par de programação que conhece o monorepo
  13. 13Anatomia de um bom prompt de engenharia
  14. 14Plan mode: planejar antes de gerar
  15. 15Skills e slash commands (/investigate, /review, /ship)
  16. 16Refactors e migrations em massa
  17. 17Debugging com IA: do stack trace à causa raiz
  18. 18Supabase: a espinha dorsal de dados
  19. 19Modelagem com Drizzle ORM
  20. 20RLS na prática: a regra que não tem exceção
  21. 21Migrations SQL à mão e o drift DB↔Drizzle
  22. 22Auth com Google OAuth no Supabase
  23. 23Realtime, Storage e o resto do Supabase
  24. 24Trigger.dev: o piloto automático
  25. 25Seu primeiro job agendado
  26. 26Workflows com retry e observabilidade
  27. 27IA em background: resumos e narrativas
  28. 28Deploy do Trigger.dev e as pegadinhas
  29. 29Evolution API: WhatsApp como canal de produto
  30. 30Instância por usuário e gestão centralizada
  31. 31IA gerando resumos de conversa
  32. 32Boas práticas e armadilhas no WhatsApp
  33. 33Integrando APIs de terceiros com IA
  34. 34Anthropic SDK: Claude dentro do produto
  35. 35Resend: e-mail transacional que chega
  36. 36Google Analytics, Search Console e Ads
  37. 37Rate limit, retry, idempotência e secrets
  38. 38GitHub: CI/CD e AI Code Review como portão de qualidade
  39. 39Deploy no Google Cloud Run
  40. 40A cultura por trás do vibe coding (e o futuro)
Vibe CodingParte 35 de 40

Resend: e-mail transacional que chega

2 min de leitura
Compartilhar
Vibe Coding

E-mail parece resolvido — até você precisar que ele chegue de verdade, na caixa de entrada, não no spam. No ClubPetro o e-mail transacional roda no Resend. Este post mostra como integramos e por que e-mail é mais traiçoeiro do que parece.

O que é e-mail transacional

Não é newsletter. É o e-mail que o sistema dispara em resposta a algo: notificação, alerta, confirmação, resumo. Tem que ser confiável, rápido e chegar — porque o usuário conta com ele.

Por que Resend

Resend é uma API de e-mail pensada pra dev: integração simples, boa entregabilidade e DX limpa. No nosso stack ele é o componente de e-mail do pacote de mensageria (@repo/messaging), ativado por env (RESEND_API_KEY, RESEND_FROM_EMAIL, RESEND_FROM_NAME).

Onde vibe coding acelera (e onde não basta)

A IA monta rápido o cliente de envio e o template. O que não se resolve só com código:

Entregabilidade é configuração, não código

E-mail cair no spam quase nunca é bug de código — é DNS/reputação: SPF, DKIM, DMARC, domínio aquecido. A integração mais perfeita não salva um domínio mal configurado. Isso é setup de infra, não prompt.

Conteúdo importa pra chegar

Assunto espalhafatoso, excesso de link, imagem demais — gatilhos de spam. E-mail transacional bom é sóbrio e direto.

Os padrões da casa pra e-mail

  1. Secrets em env — chave do Resend nunca no código (#37).
  2. Resiliência — envio falha? Retry (e, em job, idempotência pra não mandar duplicado — Módulo 4).
  3. Abstração — o resto da app chama @repo/messaging, não o Resend direto. Trocar de provedor um dia não deve espalhar mudança pelo código.
  4. Degradação graciosa — Resend fora do ar não pode derrubar a ação principal do usuário. E-mail é importante, mas é efeito colateral, não o coração da transação.

A régua de notificação

E-mail é um canal entre vários (tem também WhatsApp, in-app). Qual evento vai por qual canal é decisão de produto — a gente tem inclusive uma matriz de notificações como fonte da verdade. Mandar e-mail demais treina o usuário a ignorar; o canal certo na hora certa é o que faz ele continuar abrindo.

⚠️ Armadilha #35: debugar "e-mail não chega" no código quando o problema é DNS/reputação do domínio. Antes de mexer na integração, confira SPF/DKIM/DMARC — é lá que mora 90% do "sumiu no spam".

Próximo da série: #36 — Google Analytics, Search Console e Ads.

Curtiu como a gente pensa?

É assim que trabalhamos todo dia.

Se esse jeito de pensar é o seu, vem construir com a gente — dá uma olhada nas vagas abertas.

Ver vagas