# Guía del webmaster ## Desarrollo local ```bash bash scripts/serve.sh ``` Genera los códigos QR de eventos e inicia Hugo en `http://localhost:1313`. ## Compilación de producción para Hostinger ```bash bash scripts/build-hostinger.sh ``` Instala dependencias, genera códigos QR, compila el sitio con Hugo, ejecuta Pagefind y deja el sitio listo para subir en `public/`. Sube el contenido de `public/` a `public_html` de Hostinger. El archivo `.htaccess` se incluye. ## Configuración Edita `hugo.toml`: - `baseURL` — debe coincidir con el dominio en vivo (`https://cachegrows.org/`) - `params.googleCalendarEmbed`, `googleCalendarIcs`, `googleCalendarSubscribe` - `params.newsletterFormAction` - `params.plausibleDomain` (analítica opcional) - Entradas de menú bajo `[menu.main]` ## Gestión de contenido Usa los arquetipos de Hugo: ```bash hugo new events/YYYY-MM-DD-slug.md hugo new partners/nombre-org.md hugo new news/YYYY-MM-DD-resumen.md ``` Ver `docs/CONTENT_GUIDE.md` para los campos del front matter. ## Tema y estilos - El tema está en `themes/cachegrows` - Colores: `assets/sass/_colors.sass` - Diseño: `assets/sass/_layout.sass` y `_sidebar.sass` (ahora estilos del encabezado) - Plantillas: `layouts/` (anulaciones del sitio) y `themes/cachegrows/layouts/` ## Búsqueda Pagefind indexa el sitio compilado. Ejecuta `npm run build` para regenerar. La página de búsqueda es `/search/`. ## Pruebas y control de calidad - **Pruebas unitarias** (calendario, helpers del póster, generación de YAML del formulario): ```bash npm test ``` - **Prueba de humo** (compilación + páginas clave + sintaxis JS): ```bash bash scripts/smoke-test.sh ``` - **QA del póster impreso** (verifica salida Letter y 2-up de media carta en un navegador real): ```bash npm i -g playwright && playwright install chromium hugo server -D -F & node scripts/poster-qa.js ``` - **Accesibilidad**: `npx pa11y-ci --config .pa11yci.json` contra un servidor local (`hugo server -D -F`), o usa el flujo *Audit* de GitHub Actions. Si Chromium no arranca en un entorno con sandbox, añade `--no-sandbox` (ya está en `pa11y.json`/`.pa11yci.json`). ## Formularios e integraciones - El formulario de boletín se envía a `params.newsletterFormAction` - Los enlaces de inscripción son por evento (`rsvpUrl`) - Los mapas se generan a partir de `location.address` - La incrustación del calendario y los enlaces ICS provienen de `hugo.toml` ## Códigos QR - QR del sitio: `static/images/qr-cachegrows.png` - Códigos QR de eventos: `static/images/qr-events/*.png` - Regenera con `scripts/make-event-qrs.sh` ## Copias de seguridad Todo el sitio está en Git. Respalda el repositorio y el calendario/hojas compartidos de Google por separado. ## Solución de problemas - Eventos faltantes: Hugo excluye contenido con fecha futura por defecto; `buildFuture = true` está configurado en `hugo.toml`. - Imágenes QR faltantes: ejecuta `bash scripts/make-event-qrs.sh`. - Estilos rotos: asegúrate de que Hugo extended y SASS compilen; revisa `layouts/_partials/styles.html`. - 404 en Hostinger: asegúrate de que `.htaccess` se haya subido y que `baseURL` sea correcto.