O problema
A One Mind Agency é uma agência criativa que precisava de um site bilíngue, em inglês e italiano, para mostrar seus trabalhos e conquistar novos clientes. A equipe queria publicar estudos de caso a partir de um painel conhecido, e cada contato tinha de cair em um funil de vendas, e não em uma caixa de entrada. A hospedagem era compartilhada: o Node podia rodar builds, mas não um servidor permanente.
O que eu construí
Construí três peças que convivem no mesmo domínio.
- Front-end estático em Next.js — páginas de home, trabalhos, estudo de caso individual, sobre e contato, exportadas como arquivos simples em /en/ e /it/. Rápidas de servir, sem nada para manter rodando.
- WordPress headless em /cms — um plugin sob medida registra o tipo de post Case Study e seus campos (cliente, ano, categoria, cor de destaque, resumo, créditos) e os expõe, com suas traduções, pela REST API. As páginas públicas do WordPress redirecionam para o site de verdade.
- Rebuilds automáticos — quando um editor salva um conteúdo, o WordPress levanta uma sinalização. Uma tarefa no servidor a detecta em cerca de 5 minutos, refaz o build do site e troca os arquivos, com uma trava para que dois builds nunca se sobreponham.
- Do formulário de contato ao CRM — uma pequena ponte em PHP transforma cada contato em um Lead no EspoCRM, com faixa de orçamento e idioma. A chave do CRM fica no servidor e nunca chega ao navegador.
- Proteção contra spam e abuso — um campo honeypot oculto, um envio a cada 30 segundos por endereço IP, uma lista de origens permitidas e validação rigorosa de todos os campos.
- Nenhuma imagem quebrada — se um estudo de caso aponta para um arquivo de imagem que não existe mais, a API não retorna nada e a página mostra um espaço colorido no lugar.
Com o que foi feito
Next.js 15 com exportação estática, React 19, Tailwind CSS, Framer Motion e Lenis. WordPress com ACF e Polylang. EspoCRM. PHP 8.2 e MariaDB 10.11 na Hetzner.
Por que foi feito assim
O servidor permite o Node apenas para builds, sem processos de longa duração. Por isso o site é gerado no momento do build e servido como arquivos estáticos, enquanto o WordPress e o CRM rodam no PHP que o servidor já tinha. Os editores continuam com um painel normal, e os visitantes recebem HTML puro.


