Files
portifolio-evandrodevbr/app/page.tsx
T
Evandro Fonseca Junior 10f170abf4 feat(home): posicionamento com prova, menu sem recarregar e WhatsApp em todo o site
H1 'Sites e sistemas que trazem pedidos pelo WhatsApp e tiram sua operação da planilha.'; HeroWork maior com a SEV; menu Cases, Serviços, Como trabalho, Sobre e IA com next/link e pré-carregamento no hover; menu do celular em tela cheia; WhatsApp flutuante e no rodapé com a mensagem da rota; rodapé em todas as páginas; FAQ da home; /ia como oferta de revisão de app feito com IA; formulário com noscript, validação do mailto e plano B do pop-up; cartões sem foco indevido; sem a fonte Monument.
2026-10-14 14:15:25 -03:00

36 lines
1.4 KiB
TypeScript

import type { Metadata } from "next";
import { portfolio } from "@/lib/portfolio-data";
import { loadFeaturedProjects } from "@/lib/portfolio-data.server";
import { clientNames, isClientProject, testimonials } from "@/lib/proof";
import { serviceHubLinks } from "@/lib/site-content";
import CinematicHome from "./components/cinematic/CinematicHome";
/**
* O título da home é o `title.default` de app/layout.tsx ("Sites e sistemas em Joinville e SC | Evandro.dev.br"):
* o template do layout não se aplica à página do mesmo segmento, então não há `title` aqui.
* O canônico fica nesta página, e não no layout, para a página 404 não herdá-lo.
*/
export const metadata: Metadata = {
alternates: { canonical: "/" },
};
/** Anos de experiência vêm do próprio texto do portfólio ("5 anos de experiência"); sem o trecho, o número some. */
function yearsOfExperience() {
const match = portfolio.personal.summary.match(/(\d+)\s+anos de experi/i);
return match ? Number(match[1]) : undefined;
}
export default async function Home() {
// A home mostra só trabalho de cliente; protótipos e projetos pessoais ficam em /cases.
const projects = (await loadFeaturedProjects()).filter(isClientProject);
return (
<CinematicHome
heroStats={{ years: yearsOfExperience() }}
clients={clientNames}
projects={projects}
testimonials={testimonials}
serviceLinks={serviceHubLinks}
/>
);
}