Landing page estática para Mahitek 3D Lab MX. Sitio sin build obligatorio, con catálogo y promos cargadas desde JSON, y mejoras visuales progresivas vía ESM.
npm ci
npm run devValidación local (requerida antes de cerrar un ticket):
npm run validateindex.htmlEntrada principal del sitio.assets/css/styles.cssCSS principal del landing.assets/css/modules/animations.cssUtilidades de animación cargadas en el HTML.assets/js/app.jsEntry point en ESM (orquestador de módulos y render).assets/js/modules/*Módulos ESM por sistema (catálogo, promos, FAQ, navbar, newsletter, etc.).data/*.jsonDatos de catálogo, promos, FAQ y redes.assets/data/brand.jsonMarca, tagline y redes (prioridad sobredata/social.json).admin/Panel estático para administrar campañas del Worker.qr/Landing de redirección con UTM/GA4.workers/mahiteklab-api/API serverless (Cloudflare Workers + D1) usada por el sitio y el admin.scripts/Validaciones, build depublic/y utilidades.docs/Documentación técnica y backlog.
assets/js/app.jsorquesta el runtime modular y carga datos desdedata/*.jsonyassets/data/brand.json.- Los módulos en
assets/js/modules/encapsulan sistemas individuales (render, UI, seguridad, validaciones). assets/js/modules/validation.jsaplica validaciones de esquema por módulo (catálogo, promos, FAQ, brand, newsletter).assets/js/modules/health-report.jsregistra health checks y reporta en consola cuando hay alertas (o en modo debug).assets/js/modules/system-checks.jsejecuta verificaciones ligeras de DOM y dependencias críticas.
data/products.json (catálogo):
- Campos usados por el runtime:
id,nombre,categoría,precio_mxn,precio_rango_mxn,imagen,material,descripcion,incluye,variantes,sugerencias,estado,tags. imagenpuede ser URL o emoji; si está vacía se usa placeholder.
data/promos.json (promos activas):
- Campos claves:
id,titulo,subtitulo,precio_regularoprecio_especial,icono,desde,hasta,estado.
data/faq.json (preguntas frecuentes):
- Campos usados:
q,a,categoría,destacada.
data/social.json (redes):
- Usado solo si
assets/data/brand.jsonno trae el bloquesocial.
assets/data/brand.json (marca):
brand_name,tagline,location,social,contact.
scripts/build-public.jsgenerapublic/para GitHub Pages e incluyeadmin/yqr/.public/es generado y está en.gitignore.- CI corre
npm run validateynpm run validate:public.
Para el análisis archivo por archivo y lista de archivos desconectados, ver:
docs/INVENTARIO_CONEXIONES.md
MIT (ver package.json).