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.
36 lines
1.4 KiB
TypeScript
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}
|
|
/>
|
|
);
|
|
}
|