PixPro
Plataforma inteligente de procesamiento de imágenes con IA, arquitectura basada en eventos y notificaciones en tiempo real.
Pure software architecture
Robust backend · No visual UI
Vista General del Proyecto
PixPro es una plataforma web que permite cargar imágenes (individuales o por lotes), aplicar mejoras y efectos mediante IA, y recibir actualizaciones en vivo. Desarrollado por el equipo PixarMinds bajo metodología Scrum con sprints de dos semanas, roles rotativos y ceremonias completas. Se realizó planificación técnica, spikes de investigación (MinIO, Gemini API), definición de DoR/DoD y convenciones de branching (GitHub Flow). La arquitectura es de microservicios desacoplados basada en eventos, usando Apache Kafka (seleccionado tras matriz de decisión frente a Redis Streams), WebSockets (Socket.io) para tiempo real, y CDN interno con MinIO. Backend: Node.js + Express + TypeScript implementando CQRS con Redis como caché (decoradores @cached, @invalidateCache). Autenticación con Keycloak (SSO, RBAC). Procesamiento IA con Ollama (YOLO, Stable Diffusion). Frontend: React SPA con Zustand, TanStack Query, PrimeReact y Socket.io-client. Despliegue con Docker Compose y GitLab CI/CD (rolling deployment). El equipo trabajó colaborativamente con daily stand-ups, reviews y retrospectivas, entregando un MVP funcional en 8 semanas.
Diseño de Arquitectura

Diagrama de Contexto: Usuarios interactúan con PixPro, que orquesta autenticación, procesamiento, almacenamiento y base de datos.

Diagrama de Contenedores: Frontend React, Backend API, Workers IA, Kafka, Redis, MinIO, Keycloak y MongoDB.
Módulos Core
Autenticación y Gestión de Usuarios con Keycloak
SSO y RBAC con Keycloak, registro, login, recuperación de contraseña. Backend valida tokens JWT, frontend protege rutas vía contexto. Integración con PostgreSQL.
Carga de Imágenes y Almacenamiento en CDN (MinIO)
Carga individual o por lotes con vista previa y progreso. Imágenes almacenadas en MinIO (API S3) con URLs firmadas. Adaptador IStoragePort permite intercambiar implementación fácilmente.
Procesamiento Asíncrono con Kafka y Ollama
Evento 'image-process' publicado en Kafka, consumido por workers Node.js que invocan Ollama (YOLO, Stable Diffusion). Resultados en 'image-processed' o 'image-processed-error'. Arquitectura desacoplada y escalable.
Notificaciones en Tiempo Real (WebSockets + Redis Pub/Sub)
Frontend conectado vía Socket.io a gateway que escucha topics de Kafka. Eventos enviados al cliente por salas (userId). Redis adaptador para escalar múltiples instancias del gateway.
Organización por Proyectos y Biblioteca Personal
Usuarios crean proyectos y asignan imágenes procesadas. Metadatos (título, categoría, parámetros). Backend usa CQRS con paginación, filtros y caché Redis.
Panel de Administración y Métricas de Rendimiento
Dashboard para administradores con KPIs: imágenes procesadas, tiempos, estado de colas, uso de caché. Datos agregados desde MongoDB y servidos vía REST protegida por roles.
Integración Continua y Despliegue (CI/CD) con Rolling Updates
Pipeline GitLab CI/CD con linting, tests, build Docker y despliegue automático. Rolling deployment (sin downtime) frente a Blue-Green por restricciones de recursos. Health checks garantizan estabilidad.