El comportamiento del servidor Next.js de Transporte Tijuana se controla íntegramente desdeDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/danitocsc/transporte-unrc-web-public/llms.txt
Use this file to discover all available pages before exploring further.
web/next.config.ts. Este archivo define cuatro aspectos clave: el modo de salida del build, los orígenes permitidos durante el desarrollo, la redirección de la ruta raíz y las cabeceras de seguridad HTTP aplicadas a todos los endpoints. A continuación se documenta cada sección en detalle.
Archivo completo
output: 'standalone'
.next/standalone con todo lo necesario para ejecutar el servidor en producción:
- Un archivo
server.jsque arranca el servidor HTTP de Node.js directamente (sin necesitarnext startni el paquetenextinstalado en el entorno final) - Todas las dependencias de
node_modulesrequeridas en tiempo de ejecución, copiadas y resueltas - Sin código de desarrollo, utilidades de build ni fuentes TypeScript
runner simplemente copia .next/standalone, .next/static y public/ — sin ejecutar npm install — resultando en una imagen final considerablemente más pequeña.
En producción con Vercel, esta opción no tiene efecto negativo: Vercel la respeta pero utiliza su propia infraestructura serverless para servir las páginas, ignorando el
server.js generado.allowedDevOrigins
next dev). Los orígenes configurados son:
| Origen | Descripción |
|---|---|
localhost:3000 | Acceso local estándar desde el mismo equipo |
127.0.0.1:3000 | Dirección de loopback IPv4 explícita |
100.81.77.128:3000 | Acceso desde la red Tailscale del desarrollador |
192.168.100.7:3000 | Acceso desde la LAN local del desarrollador |
100.81.77.128 | Mismo nodo Tailscale sin puerto explícito |
192.168.100.7 | Mismo nodo LAN sin puerto explícito |
Esta configuración solo afecta al servidor de desarrollo. En producción (Vercel o Docker con
NODE_ENV=production) esta lista no tiene ningún efecto y no amplía la superficie de ataque.Redirects
/) a la página principal de contenido (/mapa-demanda). Se usa permanent: false (HTTP 302) en lugar de una redirección permanente (HTTP 301) para que los navegadores y proxies no cacheen el destino de forma indefinida, lo que facilita cambiar la ruta de destino en el futuro sin problemas de caché.
Rutas disponibles
| Ruta | Descripción |
|---|---|
/ | Redirige a /mapa-demanda |
/mapa-demanda | Mapa público e interactivo de paradas y rutas |
/informe | Reporte completo de la demanda y propuesta de movilidad |
/api/health | Healthcheck del servidor |
Cabeceras de seguridad
source: "/(.*)" hace que las cabeceras se apliquen a absolutamente todas las rutas del sitio, incluidas las rutas de API. Las cuatro cabeceras configuradas son:
| Cabecera | Valor | Propósito |
|---|---|---|
X-Frame-Options | DENY | Impide que la página sea embebida en un <iframe> desde cualquier origen, previniendo ataques de clickjacking |
X-Content-Type-Options | nosniff | Prohíbe que el navegador intente inferir el tipo MIME de una respuesta ignorando el Content-Type declarado |
Referrer-Policy | strict-origin-when-cross-origin | Envía la URL completa como referrer en peticiones al mismo origen, pero solo el origen (sin path ni query) en peticiones cross-origin; no envía nada en peticiones de HTTPS a HTTP |
Permissions-Policy | geolocation=(self) | Restringe el acceso a la API de Geolocalización del navegador únicamente al propio origen del sitio, bloqueándola en iframes de terceros |