El problema
One Mind Agency es una agencia creativa que necesitaba un sitio bilingüe, en inglés e italiano, para mostrar su trabajo y conseguir nuevos clientes. El equipo quería publicar casos de estudio desde un panel de administración conocido, y cada consulta tenía que entrar en un embudo de ventas, no en una bandeja de entrada. El alojamiento era compartido: Node podía ejecutar builds, pero no un servidor permanente.
Lo que construí
Construí tres piezas que conviven en un mismo dominio.
- Front end estático en Next.js — portada, trabajos, caso de estudio individual, quiénes somos y contacto, exportados como archivos planos bajo /en/ y /it/. Rápidos de servir y sin nada que mantener en marcha.
- WordPress headless bajo /cms — un plugin a medida registra el tipo de contenido Case Study y sus campos (cliente, año, categoría, color de acento, resumen, créditos) y los expone, con sus traducciones, a través de la REST API. Las páginas públicas de WordPress redirigen al sitio real.
- Reconstrucciones automáticas — cuando un editor guarda contenido, WordPress activa una señal. Un proceso del servidor la detecta en unos 5 minutos, reconstruye el sitio y sustituye los archivos, con un bloqueo para que dos builds nunca se solapen.
- Del formulario de contacto al CRM — un pequeño puente en PHP convierte cada consulta en un Lead de EspoCRM, con rango de presupuesto e idioma. La clave del CRM se queda en el servidor y nunca llega al navegador.
- Protección contra spam y abusos — un campo trampa oculto (honeypot), una solicitud cada 30 segundos por dirección IP, una lista de orígenes permitidos y una validación estricta de cada campo.
- Sin imágenes rotas — si un caso de estudio apunta a un archivo de imagen que ya no existe, la API no devuelve nada y la página muestra en su lugar un marcador de color.
Con qué está hecho
Next.js 15 con exportación estática, React 19, Tailwind CSS, Framer Motion y Lenis. WordPress con ACF y Polylang. EspoCRM. PHP 8.2 y MariaDB 10.11 en Hetzner.
Por qué se hizo así
El servidor solo permite Node para los builds, sin procesos de larga duración. Por eso el sitio se genera en el build y se sirve como archivos estáticos, mientras WordPress y el CRM funcionan con el PHP que el servidor ya tenía. Los editores conservan un panel de administración normal y los visitantes reciben HTML sencillo.


