El sitio ESG México utiliza variables de entorno para tres propósitos distintos: conectar con el proyecto de Sanity CMS, autenticar el servidor SMTP de Gmail para el formulario de autoevaluación, y configurar el webhook de Vercel que dispara redeployments al publicar contenido. Esta página documenta cada variable con su formato esperado, dónde se usa en el código fuente y si es accesible desde el cliente o solo desde el servidor. El archivoDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/ivanespinosa/esg-mexico-sitio-web/llms.txt
Use this file to discover all available pages before exploring further.
.env.example en la raíz del repositorio es la fuente de verdad; copiar como .env y nunca versionar el .env con valores reales.
.env.example
1. Sanity CMS
Estas variables se usan ensrc/lib/sanity.ts para inicializar el cliente de Sanity y en src/components/SEO.astro para construir URLs de imagen del CDN.
PUBLIC_SANITY_PROJECT_ID
PUBLIC_SANITY_PROJECT_ID
| Campo | Valor |
|---|---|
| Tipo | String — ID alfanumérico de 8–9 caracteres |
| Ejemplo | abc12def |
| Requerida | Sí — el cliente Sanity falla sin este valor |
| Exposición | Pública (cliente + servidor) |
| Dónde obtenerla | sanity.io/manage → tu proyecto → API → Project ID |
src/lib/sanity.ts para inicializar el cliente:imageUrl() del mismo archivo para construir URLs del CDN de Sanity a partir de referencias de imagen:PUBLIC_SANITY_DATASET
PUBLIC_SANITY_DATASET
| Campo | Valor |
|---|---|
| Tipo | String — nombre del dataset en Sanity |
| Ejemplo | production |
| Requerida | No — el cliente usa "production" como fallback |
| Exposición | Pública (cliente + servidor) |
| Dónde obtenerla | sanity.io/manage → tu proyecto → Datasets |
production y staging), esta variable permite apuntar a uno diferente por entorno de Vercel. En el entorno de Preview de Vercel puedes setearla como staging para previsualizar contenido sin afectar producción.SANITY_STUDIO_PROJECT_ID y SANITY_STUDIO_DATASET
SANITY_STUDIO_PROJECT_ID y SANITY_STUDIO_DATASET
| Campo | Valor |
|---|---|
| Tipo | String |
| Ejemplo | abc12def / production |
| Requerida | Solo para el Studio (carpeta studio/) |
| Exposición | Studio — no se envían al sitio público |
| Archivo | studio/.env (separado del .env raíz) |
.env en la carpeta studio/. Se usan también en studio/vercel-webhook.mjs cuando se ejecuta manualmente para registrar el webhook:2. Email / SMTP
Usadas exclusivamente en el endpoint serverlesssrc/pages/api/autoevaluacion.ts (prerender = false). Nunca se incluyen en el bundle del cliente.
SMTP_USER
SMTP_USER
| Campo | Valor |
|---|---|
| Tipo | String — dirección de email completa |
| Ejemplo | buzon@esgmexico.net |
| Requerida | Sí — nodemailer falla sin autenticación |
| Exposición | Solo servidor (sin prefijo PUBLIC_) |
| Cuenta | Google Workspace — buzon@esgmexico.net |
from del email:SMTP_PASS
SMTP_PASS
| Campo | Valor |
|---|---|
| Tipo | String — contraseña de aplicación de Google (16 caracteres) |
| Ejemplo | abcd efgh ijkl mnop (Google la genera con espacios; removerlos) |
| Requerida | Sí |
| Exposición | Solo servidor (sin prefijo PUBLIC_) |
- Activar la verificación en 2 pasos en
buzon@esgmexico.net. - Ir a myaccount.google.com/apppasswords.
- Crear una contraseña de aplicación con nombre
ESG Mexico Sitio Web. - Google genera una clave de 16 caracteres. Copiarla sin espacios.
3. Vercel Deploy Hook
VERCEL_DEPLOY_HOOK_URL
VERCEL_DEPLOY_HOOK_URL
| Campo | Valor |
|---|---|
| Tipo | String — URL HTTPS |
| Ejemplo | https://api.vercel.com/v1/integrations/deploy/prj_xxx/yyy |
| Requerida | Solo para el script studio/vercel-webhook.mjs |
| Exposición | Solo servidor / scripts de administración |
| Dónde obtenerla | Vercel → proyecto → Settings → Git → Deploy Hooks |
studio/vercel-webhook.mjs. Una vez registrado el webhook en Sanity, esta variable solo se necesita si hay que re-registrar el webhook (ej. si se cambia el proyecto de Vercel).Tratar esta URL como un secreto: quien la conozca puede disparar un redeploy del sitio enviando un POST. No commitearla en el repositorio ni exponerla en variables
PUBLIC_.Uso de Astro.site en el componente SEO
El componente src/components/SEO.astro no usa directamente ninguna variable de entorno para construir URLs — en su lugar lee Astro.site, que Astro inyecta automáticamente desde el valor site de astro.config.mjs:
Si necesitas cambiar el dominio canónico del sitio, el único lugar donde debes hacerlo es
site en astro.config.mjs. Todos los canonicals, og:url y og:image del sitio se actualizarán automáticamente en el siguiente build. No hardcodees https://www.esgmexico.net en componentes individuales.Configuración en Vercel
Las variables de entorno deben setearse en el dashboard de Vercel antes del primer deploy. Vercel permite asignarlas por entorno (Production, Preview, Development):Abrir la configuración de variables
En el dashboard de Vercel: selecciona el proyecto → Settings → Environment Variables.
Agregar variables de producción
Agregar cada variable con su valor real. Para
SMTP_PASS, asegurarse de pegar la contraseña de aplicación sin espacios. Marcar el entorno como Production (y opcionalmente Preview si quieres que el endpoint de email funcione en previews de PR).| Variable | Entorno recomendado |
|---|---|
PUBLIC_SANITY_PROJECT_ID | Production + Preview + Development |
PUBLIC_SANITY_DATASET | Production (production) + Preview (staging opcional) |
SMTP_USER | Production |
SMTP_PASS | Production |
VERCEL_DEPLOY_HOOK_URL | No necesaria en Vercel (solo para el script local) |
