import type { Metadata, Viewport } from "next"; import { Geist_Mono, Syne } from "next/font/google"; import localFont from "next/font/local"; import type { ReactNode } from "react"; import GoogleAnalytics from "./components/GoogleAnalytics"; import CinematicOverlays from "./components/cinematic/CinematicOverlays"; import { RouteTransition } from "./components/RouteTransition"; import { AnimationProvider } from "./providers/AnimationProvider"; import { SmoothScrollProvider } from "./providers/SmoothScrollProvider"; import "./globals.css"; const siteUrl = "https://evandro.dev.br"; const seoTitle = "Engenharia de Software, Next.js, Tauri, Rust e Consultoria Tecnica | Evandro Fonseca Junior"; const seoDescription = "Consultoria e engenharia de software para Next.js, Tauri, Rust, IoT e sistemas criticos. Arquitetura de software e integracoes hardware + software para empresas que precisam de estabilidade e escala."; const syne = Syne({ subsets: ["latin"], weight: ["400", "500", "600", "700", "800"], display: "swap", variable: "--font-syne", }); const geistMono = Geist_Mono({ subsets: ["latin"], weight: ["400", "500", "600"], display: "swap", variable: "--font-geist-mono", }); const monumentExtended = localFont({ src: [ { path: "../public/fonts/MonumentExtended-Regular.otf", weight: "400", style: "normal", }, { path: "../public/fonts/MonumentExtended-Ultrabold.otf", weight: "800", style: "normal", }, ], display: "swap", variable: "--font-monument-extended", }); export const metadata: Metadata = { title: seoTitle, description: seoDescription, keywords: [ "engenharia de software", "engenheiro de software", "consultoria tecnica", "consultoria next.js", "next.js", "tauri", "rust", "arquitetura de software", "sistemas criticos", "integracao hardware software", "iot", "software para iot", "engenharia full-stack", "aplicacoes de alta performance", ], authors: [{ name: "Evandro Fonseca Junior" }], creator: "Evandro Fonseca Junior", publisher: "Evandro Fonseca Junior", applicationName: "Evandro.dev.br", category: "Technology", metadataBase: new URL(siteUrl), alternates: { canonical: "/", }, formatDetection: { email: false, address: false, telephone: false, }, openGraph: { title: seoTitle, description: seoDescription, url: siteUrl, siteName: "Evandro.dev.br", locale: "pt_BR", type: "website", images: [ { url: "/opengraph-image", width: 1200, height: 630, alt: "Evandro Fonseca Junior | Engenharia de Software, Next.js, Tauri e Rust", }, ], }, twitter: { card: "summary_large_image", title: seoTitle, description: seoDescription, creator: "@evandrodevbr", images: ["/opengraph-image"], }, robots: { index: true, follow: true, googleBot: { index: true, follow: true, "max-video-preview": -1, "max-image-preview": "large", "max-snippet": -1, }, }, }; export const viewport: Viewport = { themeColor: "#000000", width: "device-width", initialScale: 1, maximumScale: 5, }; interface RootLayoutProps { children: ReactNode; } export default function RootLayout({ children }: Readonly) { const jsonLd = { "@context": "https://schema.org", "@graph": [ { "@type": "WebSite", "@id": `${siteUrl}/#website`, url: siteUrl, name: "Evandro.dev.br", inLanguage: "pt-BR", description: seoDescription, }, { "@type": "Person", "@id": `${siteUrl}/#person`, name: "Evandro Fonseca Junior", alternateName: ["Evandro.dev", "evandrodevbr"], jobTitle: "Engenheiro de Software Full-Stack", description: seoDescription, url: siteUrl, image: `${siteUrl}/opengraph-image`, sameAs: [ "https://github.com/evandrodevbr", "https://www.linkedin.com/in/evandro-fonseca-junior-0969aa1b0/", "https://www.instagram.com/evandrodevbr/", ], worksFor: { "@type": "Organization", name: "Consultoria Independente", }, homeLocation: { "@type": "Place", name: "Garuva, Santa Catarina, Brasil", }, knowsAbout: [ "Engenharia de Software", "Next.js", "Tauri", "Rust", "Arquitetura de Software", "Sistemas Criticos", "Integracao hardware e software", "IoT", "TypeScript", "Cloud Computing", ], }, { "@type": "ProfessionalService", "@id": `${siteUrl}/#services`, name: "Evandro Fonseca Junior | Engenharia de Software e Consultoria Tecnica", url: siteUrl, description: "Servico de engenharia de software, arquitetura de software, integracoes criticas e consultoria tecnica para Next.js, Tauri, Rust, IoT e produtos conectados.", areaServed: [ { "@type": "Country", name: "Brasil", }, { "@type": "Place", name: "Remote worldwide", }, ], provider: { "@id": `${siteUrl}/#person`, }, serviceType: [ "Engenharia de Software", "Consultoria Tecnica", "Arquitetura de Software", "Integracao hardware + software", "Desenvolvimento Next.js", "Desenvolvimento Tauri", "Desenvolvimento Rust", "IoT", "Sistemas Criticos", ], hasOfferCatalog: { "@type": "OfferCatalog", name: "Modelos de contratacao", itemListElement: [ { "@type": "Offer", itemOffered: { "@type": "Service", name: "Auditoria e diagnostico tecnico", }, }, { "@type": "Offer", itemOffered: { "@type": "Service", name: "Ciclos de engenharia", }, }, { "@type": "Offer", itemOffered: { "@type": "Service", name: "Fractional Tech Lead", }, }, ], }, }, ], }; return ( {/* Blocking script: creates immediate black overlay BEFORE any paint. This prevents the flash of real content before React hydrates and PageIntro mounts. PageIntro removes the #__loading-blocker div. */}