Site trilíngue e captura de leads
Site estático trilíngue em Next.js, com captura de leads ainda no ar.

Corrigi o design recebido para a página inicial e implementei o site estático em Next.js. Criei do zero as páginas legais, o 404 personalizado e as rotas PT/EN/ES, além do serviço de captura com Google Sheets e Mailgun, que segue respondendo até hoje.
- Função
- Design Engineer — fixed the supplied homepage design, then coded it; authored the legal, 404 and localized routes outright
- Período
- ago. de 2025 – set. de 2025
- Stack
- TypeScriptTailwindFigma
- Evidência
- Design + código
- Código
- Stack de produto
- Arquivo de design
O site institucional da própria agência, desenvolvido como uma aplicação estática em Next.js 14 trilíngue, conectada a um microsserviço resiliente de captura de leads em Node e Express hospedado no Render. Criado para transformar um design inconstruível de página inicial em código de produção, redigir do zero as superfícies legais e rotas localizadas e manter um pipeline redundante de captação que segue ativo e executável até hoje.
Projeto interno da agência Spaceapps; o proprietário, a agência pagadora e o cliente eram a mesma entidade, de modo que este trabalho não é contabilizado no total de projetos de clientes. A direção visual da página inicial foi desenhada pelo Thiago, líder técnico. Minha atuação cobriu todo o ciclo de design engineering: remediar o layout inconstruível no Figma, programar as onze seções em Next.js, redigir três páginas legais e o 404 personalizado sem qualquer referência visual prévia e construir o pipeline de captura de leads.
Remediação de layout e autoria de superfícies não desenhadas
O projeto da Spaceapps representa a terceira ocorrência documentada do padrão de remediação de arquivos de design neste acervo (após AllPrice e Gestrif). Mais uma vez, o layout da página inicial continha problemas estruturais que inviabilizavam uma implementação responsiva direta. Realizei uma revisão completa no Figma para introduzir auto-layout, determinar o comportamento em diferentes viewports e unificar a escala de tokens antes de codificar.
Além disso, a Spaceapps é o único projeto do portfólio onde assumi a autoria integral de telas de produção sem nenhum suporte de design. A agência necessitava de conformidade jurídica e suporte a idiomas, mas não havia arquivo de Figma além da página inicial. Redigi, estruturei e estilizei do zero três páginas legais em português totalizando 731 linhas (Termos de Uso, Política de Privacidade e Cookies), criei a página de erro 404 personalizada e estruturei a árvore de rotas localizadas diretamente em código.
Em um projeto cujo design visual principal pertencia a outra pessoa, assumi a autoria das páginas legais, de erro e de rotas localizadas. Este é o ponto de equilíbrio honesto do Engenheiro de Design: respeitar o projeto principal e ter autonomia técnica para conceber as superfícies complementares.
- 11
- seções autorais programadas (1.961 linhas)
- 731 linhas
- de texto legal autoral em 3 páginas
- 3 idiomas
- i18n por rota (PT, EN-US, ES-AR)
- HTTP 200
- resposta ao vivo no /health no Render
Arquitetura front-end: Next.js 14 App Router e i18n por rotas
Diferente do AllPrice e do Gestrif (que eram SPAs em Vite), a Spaceapps é uma aplicação genuína em Next.js 14 App Router distribuída como exportação estática (output: 'export'). Construído com React 18, TypeScript, Tailwind CSS, componentes Radix e react-hook-form com validação em Zod, o front-end organiza 1.961 linhas de código em onze componentes de seção:
- Cabeçalho com navegação mobile responsiva em gaveta e seletor de idiomas.
- Seção Hero destacando o posicionamento da agência e chamada principal para contato.
- Banner contínuo (marquee) e grade de logos de clientes atendidos.
- Seções Missão, Sobre Nós e Equipe apresentando os profissionais e a cultura da empresa.
- Seções de Checklist e Depoimentos organizando a prova social da agência.
- Formulário de contato com validação em tempo real via react-hook-form e esquemas Zod.
- Rodapé com links legais, canais de contato e dados institucionais.
Para atender à exigência da agência de suportar inglês e espanhol sem duplicar a árvore de componentes, desenvolvi uma arquitetura de internacionalização baseada na rota da URL. Um hook tipado useTranslations() consulta usePathname() para identificar o idioma ativo (pt padrão, /en-us, /es-ar), consumindo chaves tipadas em três módulos de tradução estruturalmente idênticos de 162 linhas cada.
Pipeline de captura: Redundância no Google Sheets e Mailgun
Em vez de recorrer a webhooks genéricos ou ferramentas de terceiros desprotegidas, construí um microsserviço dedicado de 300 linhas em Express (server/server.js) hospedado no Render. Projetado para máxima tolerância a falhas, o serviço opera com:
- Redundância com Duas Planilhas — Autentica-se com Conta de Serviço do Google e grava cada lead simultaneamente em uma planilha principal e uma secundária em blocos try/catch isolados, impedindo que a indisponibilidade de uma afete a outra.
- Autorrecuperação de Destinos — A função ensureSheetExists() detecta e cria a aba 'Contatos Site Space' caso ela não exista, enquanto createHeadersIfNeeded() insere a linha de cabeçalhos em planilhas recém-criadas.
- Notificação Imediata por Mailgun — Dispara alertas estruturados por e-mail para a equipe interna a cada novo contato, com rota de diagnóstico /email-test.
- Telemetria de Saúde — Disponibiliza um endpoint público GET /health que reporta se o Mailgun e o Google Sheets estão devidamente conectados e operacionais.
Evidência viva: O endpoint que sobreviveu ao próprio domínio
A infraestrutura web nem sempre é perene, mas códigos bem implantados na nuvem resistem ao tempo. Quando a Spaceapps encerrou suas atividades, o domínio spaceapps.com.br expirou e deixou de responder (NXDOMAIN). Entretanto, o microsserviço Express no Render continua operacional. Qualquer pessoa pode consultar https://api-site-space.onrender.com/health e receber imediatamente um HTTP 200 comprovando as integrações ativas. É o único artefato de execução independente de todo o acervo do portfólio.
O que isto não é
- Não é um projeto de cliente externo. A Spaceapps era a própria agência; empresa pagadora e cliente eram a mesma entidade, logo não entra na contagem comercial.
- Não é a minha criação do design da home. A direção visual da página inicial foi criada pelo Thiago; revisei o layout e programei a interface.
- Não é um back-end corporativo genérico. É um microsserviço focado em captura e notificação de leads. O arquivo app/api/contact/route.ts tem 0 bytes e não funciona em exportação estática; o serviço real é o Express.
- Não utiliza Supabase, Bubble ou n8n. Versões antigas do README citavam essas tecnologias equivocadamente; o código não contém nenhuma delas.
- Não é uma estratégia de localização autoral. A decisão por três idiomas veio da agência; minha contribuição foi a arquitetura técnica baseada em rotas.
- Não é comprovável pelo Wayback Machine no domínio original. As capturas de spaceapps.com.br terminaram em março de 2025, antes deste site ser lançado; esses registros mostram uma versão anterior.
- Não é um repositório pronto para CI Linux. O script de limpeza usa um arquivo PowerShell específico de Windows e falha em ambientes Linux.
- Não possui métricas comerciais verificadas. Nenhum dado analítico de conversão foi retido antes do encerramento da agência.
O valor da engenharia de design integral
A Spaceapps ilustra a extensão do papel de um engenheiro de design. Diante da necessidade de lançar a presença institucional de uma agência, o trabalho ultrapassou a simples conversão de telas em HTML. Exigiu destravar designs inconstruíveis, conceber do zero páginas institucionais e estruturas de idiomas, arquitetar componentes modulares e erguer uma infraestrutura resiliente de captação de leads. O resultado sobreviveu à própria empresa que o encomendou.
Evidência
O site entrou no ar em setembro de 2025 e serviu como a presença digital da Spaceapps até o encerramento da agência. Embora o domínio spaceapps.com.br tenha expirado e hoje retorne NXDOMAIN, o build estático está preservado em mirror próprio (spaceapps.juanpablosilva.com.br) e arquivado no Wayback Machine. O microsserviço de captura no Render (api-site-space.onrender.com/health) permanece ativo e responde HTTP 200 até hoje, sobrevivendo ao front-end, à agência e ao próprio registro do domínio.