Infraestructura Cloud NutriAI
DevOpsKubernetesAICloudNode.jsReactTerraform

NutrAI - Plataforma de Nutricion Inteligente

Deployment Date

Resumen Ejecutivo

NutrAI es una plataforma de salud y nutricion que utiliza Inteligencia Artificial para generar planes de alimentacion personalizados, realizar seguimiento biometrico y ofrecer asesoria nutricional en tiempo real mediante un chat conversacional. El proyecto abarca desde la logica de dominio hasta el despliegue automatizado zero-downtime en un cluster Kubernetes sobre AWS, implementando un pipeline hibrido de CI/CD con GitLab CI + Jenkins + SonarQube.


Situacion

Las aplicaciones de nutricion existentes en el mercado ofrecen planes genericos que no se adaptan al perfil metabolico del usuario, o dependen de un unico proveedor de IA sin tolerancia a fallos. Ademas, la mayoria de proyectos academicos de desarrollo web carecen de un ciclo DevOps real: sin infraestructura como codigo, sin quality gates, sin despliegue orquestado. El reto era construir un producto funcional que demostrara competencia tanto en desarrollo de software como en ingenieria de infraestructura cloud.

Objetivo

Disenar e implementar una plataforma de nutricion inteligente con arquitectura limpia que integrara multiples proveedores de IA con fallback automatico, desplegada sobre infraestructura AWS completamente aprovisionada con Terraform y orquestada en Kubernetes, protegida por un pipeline de CI/CD hibrido que garantizara calidad de codigo y seguridad antes de cada despliegue a produccion.


Arquitectura y Desarrollo

Backend - Arquitectura Hexagonal (Node.js / Express)

El servidor sigue una Arquitectura Hexagonal estricta con separacion de capas:

Capa Contenido
Domain 4 entidades puras (User, Meal, Recipe, NutritionPlan) con logica de negocio embebida: calculo de IMC, BMR via Harris-Benedict, TDEE, macronutrientes
Application 19 casos de uso organizados en 5 modulos: auth (register, login, forgot/reset password), user (profile CRUD, admin roles, bloqueo), meal (CRUD de comidas), recipe (CRUD de recetas), nutrition (generacion de planes IA, chat conversacional)
Infrastructure Adaptadores de DB (MongoDB/Mongoose), 3 adaptadores de IA polimorficos (OpenAI, Gemini, Ollama), controladores HTTP (Express), middlewares de seguridad (JWT, Helmet, rate limiting, sanitizacion NoSQL, validacion Joi)
Container Inyeccion de dependencias manual que ensambla repositorios, adaptadores y casos de uso

Sistema de IA Multi-Proveedor

El componente diferenciador del proyecto es la capa de IA con polimorfismo de adaptadores:

  • OpenAI (GPT) - Proveedor por defecto para maxima precision
  • Google Gemini (gemini-1.5-flash) - Alternativa de alta velocidad
  • Ollama (gemma3, llama3.1, qwen2.5) - Soporte local y cloud para privacidad total

Cada adaptador implementa la misma interfaz y se inyecta en los casos de uso via el contenedor de DI. Si el proveedor cloud falla, el sistema conmuta automaticamente a un motor de nutricion local basado en formulas cientificas (Harris-Benedict), garantizando 100% de disponibilidad.

API REST - 18 Endpoints Protegidos

Grupo Endpoints Seguridad
Auth register, login, forgot-password, reset-password Rate limiting estricto, validacion Joi
User get/update profile JWT obligatorio
Admin listar usuarios, cambiar rol, bloquear usuario JWT + middleware requireAdmin
Meals CRUD completo (add, list, update, delete) JWT obligatorio
Recipes CRUD (add, list, delete) JWT obligatorio
Plans get plan, generate plan (via IA) JWT obligatorio
AI Chat chat conversacional con contexto nutricional JWT + rate limiting especifico para IA
Health health check Publico

Frontend - SPA (React 19 + Vite + Tailwind CSS)

La interfaz es una Single Page Application con 15 vistas funcionales:

  • Landing Page publica con presentacion del producto
  • Dashboard con resumen de macros, hidratacion y perfil medico
  • Registro de comidas con CRUD interactivo
  • Plan nutricional generado por IA con renderizado Markdown (react-markdown + remark-gfm)
  • Chat con IA - asistente conversacional nutricional contextualizado con el perfil del usuario
  • Estadisticas con graficas Recharts de seguimiento
  • Recetas personalizadas con gestion completa
  • Panel de administracion con control de usuarios, roles y bloqueo
  • Perfil y configuracion con datos biometricos
  • Flujo de recuperacion de contrasena con Nodemailer (Gmail/Outlook/SMTP)

Rutas protegidas con wrappers ProtectedRoute y AdminRoute basados en el contexto de autenticacion.


Infraestructura Cloud (AWS + Terraform)

Toda la infraestructura esta aprovisionada como codigo con Terraform (5 modulos independientes) en la region us-east-1:

Modulo Terraform Servicio AWS Proposito
vpc VPC, Subnets, NAT, Security Groups Red privada con CIDR 10.0.0.0/16, 2 AZs, subredes publicas/privadas
ecr Elastic Container Registry 2 repositorios Docker (backend-prod, frontend-prod) con escaneo automatico
eks Elastic Kubernetes Service Cluster K8s v1.30 multi-AZ con node groups gestionados
ec2-sonar EC2 Instancia dedicada para SonarQube
iam IAM Roles Roles de cluster, nodos y service accounts

Orquestacion Kubernetes

Los manifiestos K8s despliegan la aplicacion con:

  • Deployments separados para backend (Express) y frontend (Nginx Alpine)
  • HPA (Horizontal Pod Autoscaler) para escalado automatico
  • ALB Ingress Controller con enrutamiento basado en rutas (/api/* hacia backend, /* hacia frontend)
  • Secrets gestionados desde Terraform (MongoDB URI, JWT Secret, API Keys)
  • Dockerfiles multi-stage optimizados para produccion

Pipeline CI/CD Hibrido

El ciclo de vida de cada cambio esta protegido por un flujo de dos etapas:

GitLab CI (Integracion Continua - Validacion)

Stage Jobs
validate Linting backend (ESLint), linting frontend, validacion de Dockerfiles (Hadolint), validacion de Terraform
test Tests unitarios backend (Jest), tests unitarios frontend (Vitest) con reportes JUnit y cobertura
security Auditoria de dependencias (npm audit), escaneo de secretos (TruffleHog)
trigger Disparo automatico del pipeline Jenkins en ramas main/develop

Jenkins (Entrega Continua - Despliegue)

Stage Accion
Install npm ci en paralelo (backend + frontend)
Unit Tests Jest + Vitest con cobertura LCOV en paralelo
Integration Tests Supertest con MongoDB en memoria
SonarQube Analisis estatico en paralelo (backend + frontend) con quality gate estricto (min 80% cobertura)
Quality Gate waitForQualityGate abortPipeline: true - bloquea despliegue si no pasa
Build & Push ECR Docker build multi-stage + push a ECR (solo rama main)
Deploy to EKS Rolling update zero-downtime con auto-rollback en caso de fallo

Estrategia de Testing

Nivel Herramienta Alcance
Unitarios backend Jest Logica de negocio, entidades, casos de uso
Integracion backend Supertest + mongodb-memory-server Flujos completos de API con base de datos en memoria
Unitarios frontend Vitest + Testing Library Componentes React y logica de UI
E2E Playwright Flujos de autenticacion y nutricion completos
Calidad estatica SonarQube Deuda tecnica, code smells, vulnerabilidades
Seguridad TruffleHog + Hadolint + npm audit Secretos expuestos, Dockerfiles, dependencias

Stack Tecnologico

Capa Tecnologias
Backend Node.js 20, Express, Mongoose, JWT, Bcrypt, Helmet, Joi, Nodemailer
Frontend React 19, Vite, Tailwind CSS, React Router 7, Recharts, Lucide, react-markdown
Base de datos MongoDB (Atlas en produccion)
IA OpenAI API, Google Gemini API, Ollama (cloud + local)
Infraestructura AWS (VPC, EKS, ECR, EC2, ALB, NAT), Terraform 1.8+, Helm
CI/CD GitLab CI, Jenkins (Groovy), SonarQube
Contenedores Docker (multi-stage), Kubernetes, Nginx
Testing Jest, Vitest, Supertest, Playwright, Testing Library

Resultados

  • Plataforma funcional con 15 vistas, 18 endpoints y 3 proveedores de IA intercambiables
  • Arquitectura Hexagonal con 19 casos de uso y contenedor de inyeccion de dependencias manual
  • Fallback inteligente de IA: si el proveedor cloud falla, conmuta a motor local Harris-Benedict sin interrupcion
  • Infraestructura como codigo con 5 modulos Terraform que aprovisionan VPC, EKS, ECR, EC2 y IAM
  • Pipeline hibrido CI/CD con 7 stages en Jenkins y 4 stages en GitLab CI, incluyendo quality gate SonarQube
  • Despliegue zero-downtime en Kubernetes con auto-rollback automatico en caso de fallo
  • Costo estimado de produccion: ~$300/mes (optimizable con instancias Spot)
  • Seguridad en capas: JWT + Helmet + rate limiting + sanitizacion NoSQL + validacion Joi + TruffleHog + Hadolint

Classified Evidence

VISUAL REPORTS