Descripción de proyecto
Desarrollé y mejoré una aplicación web en la nube llamada “Generador de Reportes”, diseñada para crear
reportes CSV basados en datos de la PokeAPI. La aplicación cuenta con una arquitectura moderna y desacoplada,
integrando tecnologías frontend, backend y servicios en la nube de Azure. Mi rol consistió en extender las
funcionalidades del sistema, garantizando su correcto despliegue y operatividad en Azure.
Arquitectura y Tecnologías Clave
Frontend: Next.js (React) para una interfaz interactiva y receptiva.
Backend: API RESTful construida con FastAPI (Python) y desplegada en Azure App Service.
Procesamiento Asíncrono: Azure Functions (Python) con Queue Trigger para manejar tareas en segundo plano.
Almacenamiento: Azure Blob Storage (archivos CSV) y Azure Queue Storage (mensajes).
Base de Datos: Azure SQL Database para gestionar los reportes y metadatos.
Infraestructura como Código (IaC): Terraform para automatizar el despliegue de recursos en Azure.
API Externa: Integración con PokeAPI para obtener datos de Pokémon.
Funcionalidades Implementadas
Eliminación Completa de Reportes
Frontend: Añadí un botón de eliminación con confirmación modal en la tabla de reportes, conectado a un nuevo endpoint en la API.
Backend: Implementé un endpoint DELETE /api/report/{report_id} que elimina registros de la base de datos y los archivos CSV asociados en Blob Storage, manejando errores como registros no encontrados o fallos en la eliminación.
Enriquecimiento de Reportes con Detalles de Pokémon
Worker (Azure Function): Modifiqué el proceso para realizar llamadas adicionales a la PokeAPI, extrayendo estadísticas base
(HP, Ataque, Defensa, etc.) y habilidades de cada Pokémon.
CSV: Amplié el DataFrame (Pandas) para incluir nuevas columnas con estos datos, optimizando la representación de listas .
Muestreo Aleatorio en Reportes
Frontend: Integré un campo de entrada numérica en el formulario para limitar el número de registros en el reporte.
Backend: Extendí el endpoint de creación para aceptar el parámetro sample_size y almacenarlo en la base de datos.
Worker: Implementé lógica con random.sample() para seleccionar registros aleatorios antes de generar el CSV, manteniendo la
integridad de los datos.
Habilidades desarrolladas
Desarrollo fullstack con Next.js y FastAPI.
Integración de servicios en la nube (Azure Functions, Blob Storage, SQL Database).
Manejo de datos asíncronos y procesamiento en segundo plano.
Automatización de infraestructura con Terraform.
Resolución de problemas complejos en entornos distribuidos.