← Volver a proyectos

Turismo

Web turística multilingüe con CMS, booking y SEO internacional

Plataforma web completa para PurpleBasqueTours, operador de experiencias y tours privados en el País Vasco. Problema: necesitaban una presencia online que gestionara tours, precios y contenido en varios idiomas sin depender de un desarrollador para cada cambio. Solución: Next.js 15 App Router con Sanity CMS headless como backend de contenido, routing internacionalizado por [locale] (EN/ES), integración de booking con Cal.com, formulario de contacto con validación Zod y envío por Resend, galerías de fotos con yet-another-react-lightbox, y monitoreo con Sentry + Vercel Analytics. Seguridad: CSP headers, HSTS, permisos restrictivos. Testing: Jest + Playwright E2E. Resultado: sitio autogestionable preparado para público internacional con infraestructura profesional.

Full-stack developer & arquitecta
Next.js 15Sanity CMSTypeScriptSCSSSEO internacionali18n

Métricas

  • AutogestionableContenido desde Sanity CMS: Tours, precios, fotos y textos multilingües editables sin tocar código
  • Booking integradoCal.com embebido: Sistema de reservas profesional con slots, confirmaciones y sin fricción para el usuario
  • EN + ESMultilingüe completo: Routing por locale, contenido traducido en Sanity y SEO por idioma

Decisiones clave

Contenido multilingüe gestionable por el cliente

El operador necesitaba controlar textos, tours y precios en inglés y español sin asistencia técnica.

Enfoque: Sanity CMS con schema de traducciones por campo, flujo de publicación con webhooks y scripts de validación automática.

Integración de booking sin fricción

El sistema de reservas debía sentirse parte del sitio, no un iframe externo.

Enfoque: Cal.com embed con React SDK, sincronización de estilos con el design system y CSP configurado para permitir el frame sin romper seguridad.

Calidad de código y despliegue confiable

Un sitio con CMS + booking + formularios necesita tests sólidos para no romper nada en cada cambio.

Enfoque: Jest para unitarios, Playwright para E2E, Sentry para errores en producción, Vercel Analytics para rendimiento, y CI con lint + typecheck + test + build.

Base técnica

Next.js 15 App Router + Sanity CMS headless. Routing i18n por [locale] (EN/ES). Componentes server-first con client islands para interactividad (booking, formularios, lightbox). CSP headers, HSTS, next/image con remotePatterns de Sanity CDN. Webhooks de Sanity para revalidación on-demand.

Aprendizajes aplicables

  • Arquitectura de contenido multilingüe con Sanity CMS y routing por locale en Next.js App Router
  • Integración de booking embebido (Cal.com) con diseño cohesivo y CSP restrictivo
  • Formularios server-side con React Hook Form + Zod + Resend
  • E2E testing con Playwright para flujos multilingües críticos (navegación, booking, contacto)
  • Security headers hardening (CSP, HSTS, COOP, CORP) en Next.js
Turismo | Ione | Full-stack Developer