Implementación de un sistema de digest de changelog y suscripción por correo electrónico

Introducción

En el proyecto landing, se ha implementado un sistema automatizado para generar y enviar un resumen diario de los cambios (changelog) a los usuarios suscritos. Este sistema lee los commits de Git, genera contenido fácil de entender con Prism AI y lo envía por correo electrónico a los suscriptores a las 9 AM en su zona horaria.

Funcionalidades Implementadas

El nuevo sistema incluye las siguientes funcionalidades:

  1. Gestión de suscripciones por correo electrónico: Los usuarios pueden suscribirse para recibir notificaciones de cambios, boletines informativos y anuncios.
  2. Opciones de exclusión voluntaria (opt-out): Los usuarios pueden elegir qué tipos de correos electrónicos desean recibir (changelog, newsletter, anuncios).
  3. Soporte para múltiples proveedores de correo electrónico: El sistema es compatible con Mailgun y SendGrid.
  4. Notificaciones de anuncios por correo electrónico: Se envían notificaciones por correo electrónico cuando se publican nuevos anuncios.
  5. Flujo de cancelación de suscripción mediante URL firmada: Los usuarios pueden cancelar su suscripción a través de una URL firmada para mayor seguridad.
  6. Traducciones: El sistema está traducido a 10 idiomas.

Componentes Clave

El sistema se basa en varios componentes y patrones de diseño para lograr su funcionalidad:

  • Lectura de Commits de Git: Se utilizan comandos de Git para obtener los commits más recientes.
  • Generación de Contenido con IA: Prism AI se integra para transformar los mensajes de commit en contenido más legible y amigable para el usuario.
  • Sistema de Colas: Para gestionar el envío masivo de correos electrónicos, se implementa un sistema de colas basado en Redis para evitar sobrecargar el servidor.
  • Tareas Programadas: Se configuran tareas programadas (scheduled tasks) para ejecutar el proceso de generación y envío del changelog diariamente.

Ejemplo de Configuración de Tarea Programada

En Laravel, esto se puede lograr utilizando el scheduler:

// app/Console/Kernel.php

protected function schedule(Schedule $schedule)
{
    $schedule->command('changelog:generate')
             ->dailyAt('9:00');
}

Este código programa la ejecución del comando changelog:generate todos los días a las 9:00 AM. El comando changelog:generate se encargaría de orquestar la lectura de commits, la generación del contenido y el envío de correos electrónicos.

Envío de Correos Electrónicos

Para el envío de correos electrónicos, se utiliza la clase Mail de Laravel, que facilita la integración con diferentes proveedores como Mailgun y SendGrid. A continuación, se muestra un ejemplo de cómo enviar un correo electrónico:

use Illuminate\Support\Facades\Mail;
use App\Mail\ChangelogDigest;

Mail::to($user->email)->send(new ChangelogDigest($changelogContent));

Este código envía un correo electrónico al usuario con el contenido del changelog. La clase ChangelogDigest es un Mailable que define la estructura del correo electrónico.

Próximos Pasos

Considera implementar un sistema similar de notificaciones automatizadas en tu propio proyecto. Identifica las actualizaciones o cambios importantes que tus usuarios necesitan conocer y automatiza el proceso de comunicación a través de correos electrónicos o notificaciones push.

Implementación de un sistema de digest de changelog y suscripción por correo electrónico
GERARDO RUIZ

GERARDO RUIZ

Author

Share: