Ezy Mailer Flow é um projeto que utiliza o Temporal.io para gerenciar o fluxo de envio de emails em lotes, garantindo confiabilidade e escalabilidade no processo.
Este projeto é capaz de:
- Receber o nome de uma template de email via rota.
- Consultar os emails de clientes armazenados.
- Gerenciar o envio dos emails em lotes, utilizando Temporal.io para orquestração.
📦ezy-mailer-flow/
├── 📂 src/
│ ├── 📂 workflows/ # Workflows gerenciados pelo Temporal
│ ├── 📂activities/ # Atividades que realizam operações externas (e.g., envio de email)
│ ├── 📂 routes/ # Definições de rotas da API
│ ├── 📂 services/ # Serviços para consulta de dados e lógica de negócio
│ ├── 📂 templates/ # Diretório contendo templates de email
│ └── index.ts # Arquivo principal para inicialização do servidor
├── package.json # Configurações do projeto e dependências
└── README.md # Documentação do projeto
- Endpoint:
POST /send
- Parâmetros:
templateName
(string): Nome do template de email a ser utilizado.
- Descrição: Consulta os emails dos clientes no banco de dados e dispara os emails utilizando workflows do Temporal.io.
- O Temporal.io gerencia as seguintes etapas:
- Consulta dos clientes no banco de dados.
- Divisão dos emails em lotes.
- Envio dos emails para cada lote, garantindo que falhas sejam tratadas e reprocessadas, se necessário.
Os templates de email estão localizados no diretório src/templates/
e são utilizados para personalizar as mensagens enviadas.
-
Clone este repositório:
git clone https://github.com/GabrielCSTR/ezy-mailer-flow.git cd ezy-mailer-flow
-
Instale as dependências:
npm install
-
Configure as variáveis de ambiente no arquivo
.env
:# MAIL CONFIG MAIL_DRIVER= MAIL_HOST= MAIL_PORT= MAIL_SECURE= MAIL_USER= MAIL_PASSWORD= MAIL_FROM=
-
Inicie o servidor Temporal:
- Certifique-se de ter o Temporal Server configurado e em execução.
- Inicie o projeto:
npm run start:dev
curl -X POST http://localhost:3000/email-campaign/start \
-H "Content-Type: application/json" \
-d '{"templateName": "confirmation"}'
{
"status": "success",
"message": "Emails are being sent in batches."
}
Sinta-se à vontade para abrir issues ou enviar pull requests para melhorar este projeto!
Not required but if you want... then by all means gib me ur cash please 💰 🔫
Made with 💖 and JavaScript!
Este projeto está licenciado sob a MIT License.