# CHECKLIST: BIBLIA DE DESARROLLO WEB v.2026

## CAP 1: ARQUITECTURA Y STACK

### Elección de framework
- [ ] Sitio de contenido/catálogo/landing → Astro
- [ ] Plataforma con login/dashboard/SaaS → Next.js
- [ ] Nunca CMS monolítico (WordPress) salvo justificación

### Infraestructura headless
- [ ] Frontend separado del backend
- [ ] Contenido gestionable vía CMS headless (Sanity/Strapi/Contentful) o Content Collections
- [ ] API consumible desde múltiples canales (web, app, WhatsApp)

---

## CAP 2: SEO 3.0

### Semántica HTML5
- [ ] Un solo `<h1>` por página con keyword transaccional
- [ ] Jerarquía H2 → H3 estricta, nunca saltar niveles
- [ ] Todo el contenido principal dentro de `<main>`
- [ ] Bloques independientes en `<article>` (blog posts)
- [ ] Agrupaciones lógicas en `<section>`
- [ ] Párrafos cortos (máx 4 líneas)
- [ ] Uso de `<strong>` para entidades/conceptos clave

### Schema Markup JSON-LD
- [ ] `Organization` en todas las páginas (nombre, dirección, logo, redes)
- [ ] `LocalBusiness` si aplica (dirección física)
- [ ] `Product` en cada página de producto
- [ ] `FAQPage` en páginas con preguntas frecuentes
- [ ] `Article` en cada blog post (autor, fecha, imagen)
- [ ] Script JSON-LD en el `<head>`

### Meta tags
- [ ] Title único por página (50-60 chars) con keyword
- [ ] Meta description única (150-160 chars) con CTA
- [ ] Canonical URL en todas las páginas
- [ ] Hreflang para cada idioma
- [ ] Open Graph tags (og:title, og:description, og:image, og:url)
- [ ] Twitter Card (summary_large_image)
- [ ] Imagen social optimizada (1200x630)

### Sitemap y robots
- [ ] Sitemap XML generado automáticamente
- [ ] Robots.txt con reglas de crawl
- [ ] Crawl-delay configurado

### Programmatic SEO
- [ ] Plantilla base de landing page
- [ ] Base de datos de keywords (producto × mercado × intención)
- [ ] Generación automática de rutas desde datos
- [ ] Contenido diferenciado por página (no duplicado)
- [ ] URLs limpias y descriptivas
- [ ] Internal linking entre landing pages y contenido principal

---

## CAP 3: ANALÍTICA Y TRACKING

### Google Tag Manager
- [ ] Contenedor GTM creado
- [ ] Script GTM en `<head>` (alto como sea posible)
- [ ] Noscript en `<body>`
- [ ] GA4 configurado como tag dentro de GTM
- [ ] Todas las integraciones (pixels, tags) vía GTM, nunca directo en código

### Eventos obligatorios
- [ ] `scroll_depth` (25%, 50%, 75%, 90%)
- [ ] `click_whatsapp`
- [ ] `click_phone` (tel:)
- [ ] `click_email` (mailto:)
- [ ] `click_cta` (botones principales)
- [ ] `form_start` (primer campo tocado)
- [ ] `form_submit` (envío exitoso)
- [ ] `form_abandon` (empezó pero no envió)
- [ ] `chat_open`
- [ ] `chat_message_sent`
- [ ] `video_start`
- [ ] `video_progress_50`
- [ ] `video_complete`
- [ ] `download_leadmagnet`

### Tracking propio (Supabase)
- [ ] Tabla `visitors` (país, ciudad, dispositivo, UTM, idioma)
- [ ] Tabla `sessions` (duración, páginas vistas, entry/exit page, bounce)
- [ ] Tabla `page_views` (URL, título, tiempo en página)
- [ ] Tabla `events` (tipo, categoría, metadata)
- [ ] Tabla `leads` (datos de contacto, fuente, UTM, estado)
- [ ] Tabla `chat_messages` (historial completo)
- [ ] Tabla `landing_performance` (stats agregados por landing)
- [ ] Geolocalización de visitantes
- [ ] Detección EU para GDPR (hashear IP en Europa)
- [ ] Script frontend ligero (vanilla JS, no librerías)
- [ ] Envío dual: Supabase + GTM dataLayer

### Server-Side Tagging (fase 2)
- [ ] GTM Server Container en Cloud Run o similar
- [ ] Bypass de adblockers
- [ ] Dominio propio para tracking (analytics.tudominio.com)

### Consent Mode V2
- [ ] Banner de cookies con detección por región
- [ ] EU → consentimiento bloqueante (opt-in)
- [ ] California → opción "Do Not Sell"
- [ ] Latam → banner informativo
- [ ] GA4 Consent Mode activado (pings anónimos si rechaza)

---

## CAP 4: GOBERNANZA DE CONTENIDO

### Sistema de edición
- [ ] Componentes modulares ("bloques") para el cliente
- [ ] Preview antes de publicar
- [ ] Roles de editor (quién puede publicar qué)

### Validación pre-publicación
- [ ] Verificar ortografía
- [ ] Title entre 50-60 caracteres
- [ ] Meta description entre 150-160 caracteres
- [ ] Todas las imágenes tienen alt text
- [ ] H1 presente y único

---

## CAP 5: PERFORMANCE (CORE WEB VITALS)

### Imágenes
- [ ] Formato AVIF como primera opción, WebP como fallback
- [ ] Cero JPG/PNG en producción
- [ ] Lazy loading en todo lo que no sea above the fold
- [ ] Eager loading solo en hero/logo/primera pantalla
- [ ] Redimensionamiento automático por dispositivo (srcset o CDN)
- [ ] Alt text descriptivo en todas las imágenes
- [ ] CDN de imágenes (Cloudinary/ImageKit) o procesamiento con Sharp

### Carga
- [ ] LCP < 2.5s
- [ ] FID/INP < 200ms
- [ ] CLS < 0.1
- [ ] TTFB < 800ms
- [ ] Compresión Brotli activada
- [ ] HTML minificado post-build
- [ ] CSS purgado (solo lo que se usa)
- [ ] JavaScript code-splitting
- [ ] Prefetch habilitado para navegación interna

### Fonts
- [ ] Preconnect a Google Fonts / font CDN
- [ ] `font-display: swap`
- [ ] Máximo 2-3 familias tipográficas
- [ ] Subsets solo del idioma necesario

---

## CAP 6: UX Y ANIMACIONES

### Navegación
- [ ] View Transitions API activada (transiciones suaves entre páginas)
- [ ] Smooth scroll (Lenis o similar)
- [ ] Prefetch en links de navegación

### Animaciones
- [ ] GSAP + ScrollTrigger para scroll animations
- [ ] Elementos se revelan progresivamente al scroll
- [ ] Micro-interacciones en botones (hover feedback < 100ms)
- [ ] Campos de formulario con transiciones de estado
- [ ] Nunca animaciones que bloqueen interacción
- [ ] `prefers-reduced-motion` respetado

### Feedback visual
- [ ] Todo elemento cliqueable tiene hover state
- [ ] Botones muestran estado loading al hacer clic
- [ ] Formularios muestran éxito/error claramente
- [ ] Skeleton loaders para contenido que tarda en cargar

---

## CAP 7: SEGURIDAD

### Headers de seguridad
- [ ] `Content-Security-Policy` (CSP)
- [ ] `X-Frame-Options: DENY` (anti-clickjacking)
- [ ] `X-Content-Type-Options: nosniff`
- [ ] `Referrer-Policy: strict-origin-when-cross-origin`
- [ ] `Strict-Transport-Security` (HSTS, forzar HTTPS)
- [ ] `Permissions-Policy` (cámara, micrófono, etc.)

### APIs
- [ ] Rate limiting por IP en todos los endpoints
- [ ] Validación de Content-Type
- [ ] Validación de campos requeridos
- [ ] Sanitización de inputs (prevenir XSS/injection)
- [ ] CORS configurado (solo dominios permitidos)
- [ ] Tokens rotativos para servicios externos
- [ ] Variables de entorno para keys (nunca en código)

### Infraestructura
- [ ] WAF (Cloudflare o similar)
- [ ] DDoS protection
- [ ] Backups automáticos diarios de BD
- [ ] SSL/TLS en todo el sitio
- [ ] Monitoreo de uptime

---

## EXTRAS

### llm.txt
- [ ] Archivo `llm.txt` en la raíz del sitio
- [ ] Descripción del negocio, productos, servicios
- [ ] Optimizado para respuestas de IAs (ChatGPT, Claude, Perplexity)

### Compliance legal
- [ ] Página de Política de Privacidad
- [ ] Página de Términos y Condiciones
- [ ] Página de Política de Cookies
- [ ] Checkbox de consentimiento en formularios
- [ ] Link de "eliminar mis datos"
- [ ] Opción de unsuscribe en emails

### Lead capture
- [ ] Lead magnet descargable
- [ ] Formulario de cotización con UTM tracking
- [ ] WhatsApp con tracking por página
- [ ] Chatbot con captura de datos
- [ ] Todos los leads guardados en Supabase + CRM

### Admin panel
- [ ] Dashboard de métricas principales
- [ ] Lista de leads con filtros
- [ ] Historial de conversaciones del chatbot
- [ ] Rendimiento por landing page
- [ ] Protegido con autenticación
