Implementación de Colas para Activación de Cuentas
Octubre 2024 - Noviembre 2024
Este proyecto implementa un sistema de activación de cuentas basado en colas y microservicios, garantizando una experiencia de usuario optimizada. A continuación, se describen los módulos y funcionalidades implementadas y pendientes.
Funcionalidades Desarrolladas
API y Manejo de Datos
- Escritura en Firebase y Azure SQL:
- Al registrarse, los datos del usuario son almacenados en Firebase y Azure SQL para garantizar seguridad y accesibilidad.
- Generación de Mensajes en Azure Queue Storage:
- Cada registro envía un mensaje a la cola con la dirección de correo electrónico del usuario.
Azure Function App
- Lectura de Mensajes desde la Cola:
- La Function App monitorea la cola y procesa los mensajes de activación.
- Llamada al Endpoint de Generación de Código:
- La Function App solicita un código único al backend, asociado a cada usuario.
- Envío de Correo Electrónico con SendGrid:
- Utiliza SendGrid para enviar correos personalizados con el enlace de activación.
Pantalla de Activación
- Los usuarios pueden ingresar el código recibido por correo con mensajes claros en caso de errores o códigos expirados.
Redirección de Usuarios No Activados
- Redirigir al usuario a la pantalla de ingreso de código si intenta iniciar sesión sin activar su cuenta.
- Manejo de estados de cuenta para garantizar una experiencia fluida.
Gestión de Códigos Expirados
- Validaciones de Caducidad:
- Validar cuando un código ya no sea válido.
- Reinsertar automáticamente el correo electrónico en la cola para generar un nuevo código.
- Reintentos Automatizados:
- Permitir al usuario solicitar un nuevo código en caso de error.
Página de Inicio Creativa
- Mostrar un mensaje amigable con el tiempo transcurrido desde la activación
- Actualización dinámica del tiempo utilizando Next.js y React.
Validaciones Adicionales
- Implementar validaciones para garantizar:
- Formatos correctos de correo electrónico.
- Evitar múltiples solicitudes en un corto periodo de tiempo.
- Una interfaz intuitiva y accesible.
Consideraciones Técnicas
Terraform
- Configuración de la infraestructura en Azure para automatizar:
- Creación de bases de datos en Azure SQL.
- Configuración de Azure Queue Storage.
- Implementación de Function Apps y otros recursos necesarios.
Nuevas Funcionalidades
Implementación de GraphQL
-
Modelo de Datos:
- Se diseñó e implementó un modelo de datos utilizando la base de datos configurada en Azure.
-
Desarrollo del Servicio GraphQL:
- Se levantó un proyecto de GraphQL utilizando Node.js, Express y Apollo Server.
- Schema y Consultas:
- Se definieron los tipos de datos y consultas necesarias para interactuar con el modelo de datos. Incluyendo filtros, y agregaciónes.
- Resolvers:
- Los resolvers fueron modularizados en archivos separados para facilitar el mantenimiento y escalabilidad del proyecto.
-
Dockerización y Despliegue:
- El servicio fue desplegado en una nueva Web App en Azure, garantizando disponibilidad y escalabilidad.
-
Integración con Next.js:
- Al iniciar sesión, los usuarios acceden a la página principal, donde pueden visualizar los datos obtenidos mediante consultas GraphQL.
Codigo Fuente
Para explorar el código de este proyecto puedes acceder a los siguientes repositorios:
- Initium UI: Repositorio del frontend
- Initium API: Repositorio del backend
- Initium DB: Repositorio de la base de datos
- Initium Azure Function: Respositorio de la azure function app
- GraphQL API: Respositorio del backend con GraphQL
- Next
- Express
- Terraform