HTML, CSS y JavaScript nativos. Sin dependencias de producción. Requiere Node.js 22+ para las herramientas locales.
npm run dev genera el sitio y sirve http://127.0.0.1:4173. En PowerShell, usar npm.cmd si la política bloquea npm.ps1. Después de editar contenido, ejecutar npm run build y recargar el navegador. No necesita instalar paquetes.
npm run build genera dist/ y sincroniza las tarjetas en index.html. npm run lint comprueba la sintaxis JavaScript. npm test valida datos, recursos, rutas y descarga del CV. Netlify usa netlify.toml; Docker genera y sirve el mismo dist.
index.html: presentación, sobre mí, tecnologías, formación y contacto.data/projects.json: única fuente de proyectos. Editar o añadir un objeto y ejecutar el build. No editar manualmente el bloque PROJECTS del HTML.- Campos de cada proyecto:
idúnico,name,category,description,problem,contribution,technologies,image,imageAlt,demo,github. Los últimos cuatro admiten null (imageAlt es obligatorio si existe imagen). Enlaces HTTPS; no se muestran botones sin URL. Sin imagen se muestra una composición tipográfica. El campo opcionalvisual: "network"usa el diagrama ilustrativo de redes, reservado para el proyecto de DDoS. certificados.html: certificados originales con ampliación accesible; los originales PNG se conservan.documents/Ivan_Cabrera_CV.pdf: copia exacta del CV facilitado. Reemplazar este archivo para actualizar la descarga.style.css: tokens, diseño compartido, responsive, impresión y movimiento reducido.app.js: ampliación progresiva de certificados con dialog nativo. El contenido, los proyectos, la navegación y el CV funcionan sin JavaScript.
Perfil amplio, sin atribuir empleos a los proyectos. Las herramientas provienen del repositorio y del CV; los intereses se presentan separados. Finanzas aparece como interés y práctica personal. No se agregan proyectos ni métricas ficticias. El español se conserva sin incorporar una dependencia de internacionalización.
El dominio canónico se conserva. Si cambia, actualizar canonical, Open Graph, robots y sitemap. Añadir repositorios de cada proyecto cuando se confirmen sus URLs. Las capturas proceden del portfolio original y podrían no reflejar las demos actuales. El CV mantiene su orientación Data/Fintech, independiente del portfolio.