/* ==========================================
PAGE: HOME
========================================== */
const YOHANN_PHOTO = 'https://imagedelivery.net/mYdfeAeRRdkIXG5w7XJhtQ/97fad229-f325-4279-6532-23991dc31b00/public';
const YOHANN_PHOTO_2 = 'https://imagedelivery.net/mYdfeAeRRdkIXG5w7XJhtQ/988d9fec-1e73-46f9-c1b0-c1dfb935c200/public';
const YOHANN_PHOTO_PORTRAIT = 'https://imagedelivery.net/mYdfeAeRRdkIXG5w7XJhtQ/4879c721-5a9d-4add-08b6-e46b7a76d600/public';
const YOHANN_PHOTO_PORTRAIT_2 = 'https://imagedelivery.net/mYdfeAeRRdkIXG5w7XJhtQ/4e8a51d4-ba21-472d-6f29-2c28b73f6500/public';
const YOHANN_GALLERY = [
'https://imagedelivery.net/mYdfeAeRRdkIXG5w7XJhtQ/58070ce4-ea18-458e-4d0a-e543d5fd8300/public',
'https://imagedelivery.net/mYdfeAeRRdkIXG5w7XJhtQ/dbf22523-e205-49f0-4581-ea06278f7c00/public',
'https://imagedelivery.net/mYdfeAeRRdkIXG5w7XJhtQ/3b394f24-6378-4335-d0ae-6818e324a900/public',
'https://imagedelivery.net/mYdfeAeRRdkIXG5w7XJhtQ/d8635752-e287-4ab7-d55f-ac114b497500/public',
'https://imagedelivery.net/mYdfeAeRRdkIXG5w7XJhtQ/0645258b-5192-4b01-31c2-244fa49a0600/public',
'https://imagedelivery.net/mYdfeAeRRdkIXG5w7XJhtQ/aa2fe96a-6a40-4e1f-6c70-9b27eea26700/public',
'https://imagedelivery.net/mYdfeAeRRdkIXG5w7XJhtQ/71baab96-6161-4bd0-f48e-afecacca0c00/public',
'https://imagedelivery.net/mYdfeAeRRdkIXG5w7XJhtQ/aa6d17b4-334a-459c-6d5f-0a9a7d404600/public',
'https://imagedelivery.net/mYdfeAeRRdkIXG5w7XJhtQ/97fad229-f325-4279-6532-23991dc31b00/public',
'https://imagedelivery.net/mYdfeAeRRdkIXG5w7XJhtQ/988d9fec-1e73-46f9-c1b0-c1dfb935c200/public',
'https://imagedelivery.net/mYdfeAeRRdkIXG5w7XJhtQ/4879c721-5a9d-4add-08b6-e46b7a76d600/public',
'https://imagedelivery.net/mYdfeAeRRdkIXG5w7XJhtQ/4e8a51d4-ba21-472d-6f29-2c28b73f6500/public',
];
// ============== HERO MOTION (animated dashboard scene) ==============
const HeroMotion = () => {
const [t, setT] = React.useState(0);
const [isPhoneLayout, setIsPhoneLayout] = React.useState(() => (
typeof window !== 'undefined' && window.matchMedia('(max-width: 600px)').matches
));
React.useEffect(() => {
if (typeof window === 'undefined') return undefined;
const media = window.matchMedia('(max-width: 600px)');
const syncLayout = (event) => setIsPhoneLayout(event.matches);
setIsPhoneLayout(media.matches);
if (media.addEventListener) {
media.addEventListener('change', syncLayout);
return () => media.removeEventListener('change', syncLayout);
}
media.addListener(syncLayout);
return () => media.removeListener(syncLayout);
}, []);
React.useEffect(() => {
let raf;
const start = performance.now();
const tick = (now) => {
setT((now - start) / 1000);
raf = requestAnimationFrame(tick);
};
raf = requestAnimationFrame(tick);
return () => cancelAnimationFrame(raf);
}, []);
const wave = (offset = 0, amp = 6) => Math.sin(t * 0.8 + offset) * amp;
return (
{/* Animated chart card top-right */}
{!isPhoneLayout && (
Resultado da operação
+37%
de eficiência operacional
)}
{/* IA card mid-right */}
Decisões mais inteligentes
{/* Automação card top-left */}
{/* CRM card bottom-left */}
Campanhas e relacionamentos que convertem
{/* Dashboards card bottom-right */}
{!isPhoneLayout && (
Dados que viram resultado
)}
{/* Yohann photo card */}
{/* Center mini-dashboard (laptop-ish) */}
{/* Connecting orbital lines */}
{/* Floating dots */}
{[...Array(8)].map((_, i) => {
const angle = (i / 8) * Math.PI * 2 + t * 0.2;
const cx = 300 + Math.cos(angle) * 240;
const cy = 230 + Math.sin(angle) * 130;
return ;
})}
);
};
// ============== HOME PAGE ==============
const HomePage = ({ onNav }) => {
const [isMotionModalOpen, setIsMotionModalOpen] = React.useState(false);
const [isPhoneViewport, setIsPhoneViewport] = React.useState(() => (
typeof window !== 'undefined' && window.matchMedia('(max-width: 480px)').matches
));
React.useEffect(() => {
if (!isMotionModalOpen) return undefined;
const previousOverflow = document.body.style.overflow;
document.body.style.overflow = 'hidden';
const handleKeyDown = (event) => {
if (event.key === 'Escape') setIsMotionModalOpen(false);
};
window.addEventListener('keydown', handleKeyDown);
return () => {
document.body.style.overflow = previousOverflow;
window.removeEventListener('keydown', handleKeyDown);
};
}, [isMotionModalOpen]);
React.useEffect(() => {
if (typeof window === 'undefined') return undefined;
const media = window.matchMedia('(max-width: 480px)');
const syncViewport = (event) => setIsPhoneViewport(event.matches);
setIsPhoneViewport(media.matches);
if (media.addEventListener) {
media.addEventListener('change', syncViewport);
return () => media.removeEventListener('change', syncViewport);
}
media.addListener(syncViewport);
return () => media.removeListener(syncViewport);
}, []);
const motionModal = isMotionModalOpen && typeof document !== 'undefined'
? ReactDOM.createPortal(
setIsMotionModalOpen(false)}
style={{
position: 'fixed',
inset: 0,
zIndex: 9999,
background: 'rgba(6, 7, 10, 0.92)',
backdropFilter: 'blur(10px)',
WebkitBackdropFilter: 'blur(10px)',
display: 'flex',
alignItems: 'center',
justifyContent: 'center',
padding: '16px',
}}
>
event.stopPropagation()}
style={{
width: 'min(96vw, 1600px)',
height: 'min(92vh, 980px)',
display: 'flex',
flexDirection: 'column',
gap: '14px',
}}
>
setIsMotionModalOpen(false)}
aria-label="Fechar animação"
style={{
height: 46,
padding: '0 18px',
borderRadius: 999,
background: 'rgba(255,255,255,0.10)',
border: '1px solid rgba(255,255,255,0.16)',
color: '#F4F1EC',
fontSize: 14,
fontWeight: 600,
}}
>
Fechar
,
document.body
)
: null;
return (
{/* HERO */}
IA, automação e sistemas
Sistemas, automação e IA para transformar operação em execução real.
Eu ajudo empresas a construir ativos digitais, organizar a operação e aplicar IA com clareza para gerar eficiência, escala e resultados que se sustentam.
onNav('metodo')}>
Ver como funciona
onNav('contato')}>
Agendar conversa
Mais de 100 empresas atendidas com clareza, método e resultado.
{/* SOLUÇÕES */}
{[
{ icon: 'brain', title: 'IA aplicada', desc: 'Aplicação prática de IA para analisar, decidir e acelerar resultados.' },
{ icon: 'workflow', title: 'Automações', desc: 'Automatizar processos repetitivos e conectar ferramentas com lógica.' },
{ icon: 'box', title: 'Sistemas sob medida', desc: 'Desenvolvo sistemas que organizam a operação e geram previsibilidade.' },
{ icon: 'target', title: 'Estrutura comercial', desc: 'Organização de processos comerciais para previsibilidade e crescimento consistente.' },
].map((s, i) => (
))}
{/* MOTION SHOWCASE */}
setIsMotionModalOpen(true)}
style={{
margin: '0 auto',
padding: isPhoneViewport ? '10px 14px' : undefined,
fontSize: isPhoneViewport ? 12.5 : undefined,
gap: isPhoneViewport ? 7 : undefined,
}}
>
Visualizar em tela cheia
{/* POR QUE COMIGO */}
Por que comigo
Estratégia, tecnologia e execução em uma só direção.
Não trabalho com soluções soltas. Conecto cada decisão tecnológica a um objetivo de negócio claro, com método, transparência e foco no que gera resultado.
{[
['target','Visão estratégica','Cada projeto começa pelo "porquê" — alinhado ao objetivo de negócio.'],
['cog','Execução com método','Processo testado e iterativo, sem improviso e sem gargalos.'],
['chart-up','Resultados mensuráveis','Indicadores claros do início ao fim — sem caixa-preta.'],
['users','Parceria de longo prazo','Estou junto na evolução, não só na entrega.'],
].map(([ic, t, d]) => (
))}
onNav('sobre')}>
Conhecer minha história
{/* COMO TRABALHO (mirror) */}
Como trabalho
Tecnologia com propósito, decisões com clareza.
Cada entrega é pensada para gerar autonomia, escala e previsibilidade. Sem complexidade desnecessária — só o que realmente move o negócio.
{[
['zap','Velocidade com qualidade','Ciclos curtos de entrega, com testes e validação contínua.'],
['shield','Segurança como base','Boas práticas e dados protegidos em toda a operação.'],
['chart','Decisão por dados','Painéis e métricas claras para guiar cada próximo passo.'],
['cog','Operação que escala','Sistemas modulares que crescem junto com o negócio.'],
].map(([ic, t, d]) => (
))}
onNav('metodo')}>
Ver o método
{/* MÉTODO (dark) */}
{[
{ n: '01', icon: 'search', title: 'Diagnóstico', desc: 'Entendemos o contexto, os gargalos e as prioridades do negócio.', tag: 'Clareza sobre o real', bg: 'https://imagedelivery.net/mYdfeAeRRdkIXG5w7XJhtQ/f56afcba-a5a2-419e-7df3-90fbfd037700/public' },
{ n: '02', icon: 'doc', title: 'Arquitetura', desc: 'Desenhamos a solução, os fluxos e as integrações ideais para o cenário.', tag: 'Plano com direção', bg: 'https://imagedelivery.net/mYdfeAeRRdkIXG5w7XJhtQ/bc52e414-a2dc-414a-1654-f0e2e6ce5b00/public' },
{ n: '03', icon: 'zap', title: 'Implementação', desc: 'Construímos, integramos e automatizamos com foco em qualidade.', tag: 'Execução com método', bg: 'https://imagedelivery.net/mYdfeAeRRdkIXG5w7XJhtQ/ba4ef9d1-72df-4e91-5192-c1c565a84400/public' },
{ n: '04', icon: 'chart-up', title: 'Evolução', desc: 'Acompanhamos, medimos e evoluímos continuamente os resultados.', tag: 'Melhoria contínua', bg: 'https://imagedelivery.net/mYdfeAeRRdkIXG5w7XJhtQ/c1296df3-b38b-4486-ab01-3b95303f6300/public' },
].map((s, i) => (
{s.n}
{s.title}
{s.desc}
{s.tag}
))}
{/* PROJETOS */}
onNav('projeto-detalhe')}
/>
onNav('projetos')}
/>
{/* CTA dark */}
05 · Próximo passo
Vamos transformar sua operação emexecução real?
Me conte seu cenário e desafios. Vou mostrar caminhos práticos e claros para gerar resultado de verdade.
Conversa estratégica
Direção prática
Sem compromisso
Agende uma conversa
Uma conversa de 30 minutos pode mudar a direção do seu negócio.
onNav('contato')}>
Agendar conversa
window.open('https://wa.me/5562998550007', '_blank')}>
Falar no WhatsApp
{motionModal}
);
};
// Project card variants
const ProjectCard = ({ tags, title, desc, kind, onClick }) => {
return (
{tags.map(t => {t} )}
{title}
{desc}
{kind === 'funnel' &&
}
{kind === 'dashboard' &&
}
);
};
const FunnelMini = () => (
Resumo do funil
{[
{ label: 'Novos leads', val: 156, pct: 100, change: '+24%' },
{ label: 'Qualificação', val: 87, pct: 64, change: '+18%' },
{ label: 'Fechado ganho', val: 31, pct: 30, change: '+32%' },
].map((r, i) => (
{r.label}
{r.val}
{r.change}
))}
);
const DashboardMini = () => (
);
window.HomePage = HomePage;
window.ProjectCard = ProjectCard;
window.FunnelMini = FunnelMini;
window.DashboardMini = DashboardMini;
window.YOHANN_PHOTO = YOHANN_PHOTO;
window.YOHANN_PHOTO_2 = YOHANN_PHOTO_2;
window.YOHANN_PHOTO_PORTRAIT = YOHANN_PHOTO_PORTRAIT;
window.YOHANN_PHOTO_PORTRAIT_2 = YOHANN_PHOTO_PORTRAIT_2;
window.YOHANN_GALLERY = YOHANN_GALLERY;