- Introduced DrawLine component for drawing animations. - Added LazyRevealImage component for lazy loading images with reveal animations. - Implemented TextDiffuseReveal for animated text reveals with staggered effects. - Created TopProgressBar for a dynamic loading indicator. - Added PointCloud mock for testing animations. - Developed useReducedMotion hook to handle user preferences for reduced motion. - Centralized animation configurations in config.ts for easier management. - Defined animation variants in variants.ts for consistent animation effects. - Established AnimationProvider to supply global animation settings. - Created tests for AnimationProvider and useReducedMotion hook. - Added SVG assets for branding and UI elements. - Documented frontend review plan and hero circuit board animation plan.
149 lines
4.1 KiB
TypeScript
149 lines
4.1 KiB
TypeScript
import type { Metadata, Viewport } from "next";
|
|
import type { ReactNode } from "react";
|
|
import GoogleAnalytics from "./components/GoogleAnalytics";
|
|
import { RouteTransition } from "./components/RouteTransition";
|
|
import { SmoothScrollProvider } from "./providers/SmoothScrollProvider";
|
|
import { AnimationProvider } from "./providers/AnimationProvider";
|
|
import "./globals.css";
|
|
|
|
export const metadata: Metadata = {
|
|
title:
|
|
"Evandro Fonseca Junior | Engenheiro de Software (Next.js, Tauri & Rust)",
|
|
description:
|
|
"Engenheiro Full-Stack especializado em aplicacoes de alta performance e sistemas criticos. Desenvolvimento com Next.js, React, Tauri e arquitetura escalavel.",
|
|
keywords: [
|
|
"engenheiro full-stack",
|
|
"engenheiro de software",
|
|
"Next.js",
|
|
"React",
|
|
"Tauri",
|
|
"Rust",
|
|
"Python",
|
|
"TypeScript",
|
|
"PostgreSQL",
|
|
"MySQL",
|
|
"cloud computing",
|
|
"IoT",
|
|
"automacao",
|
|
"arquitetura de software",
|
|
"sistemas escalaveis",
|
|
"high performance",
|
|
],
|
|
authors: [{ name: "Evandro Fonseca Junior" }],
|
|
creator: "Evandro Fonseca Junior",
|
|
publisher: "Evandro Fonseca Junior",
|
|
formatDetection: {
|
|
email: false,
|
|
address: false,
|
|
telephone: false,
|
|
},
|
|
metadataBase: new URL("https://evandro.dev.br"),
|
|
alternates: {
|
|
canonical: "/",
|
|
},
|
|
openGraph: {
|
|
title:
|
|
"Evandro Fonseca Junior | Engenheiro de Software (Next.js, Tauri & Rust)",
|
|
description:
|
|
"Engenheiro Full-Stack especializado em aplicacoes de alta performance e sistemas criticos. Desenvolvimento com Next.js, React, Tauri e arquitetura escalavel.",
|
|
url: "https://evandro.dev.br",
|
|
siteName: "Evandro Fonseca Junior",
|
|
locale: "pt_BR",
|
|
type: "website",
|
|
images: [
|
|
{
|
|
url: "/opengraph-image",
|
|
width: 1200,
|
|
height: 630,
|
|
alt: "Evandro Fonseca Junior - Engenheiro de Software",
|
|
},
|
|
],
|
|
},
|
|
twitter: {
|
|
card: "summary_large_image",
|
|
title:
|
|
"Evandro Fonseca Junior | Engenheiro de Software (Next.js, Tauri & Rust)",
|
|
description:
|
|
"Engenheiro Full-Stack especializado em aplicacoes de alta performance e sistemas criticos.",
|
|
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<RootLayoutProps>) {
|
|
const jsonLd = {
|
|
"@context": "https://schema.org",
|
|
"@type": "ProfilePage",
|
|
mainEntity: {
|
|
"@type": "Person",
|
|
name: "Evandro Fonseca Junior",
|
|
alternateName: "Evandro.dev",
|
|
jobTitle: "Engenheiro de Software",
|
|
url: "https://evandro.dev.br",
|
|
sameAs: [
|
|
"https://github.com/evandrodevbr",
|
|
"https://www.linkedin.com/in/evandro-fonseca-junior-0969aa1b0/",
|
|
],
|
|
knowsAbout: [
|
|
"Software Engineering",
|
|
"Next.js",
|
|
"React",
|
|
"Tauri",
|
|
"Rust",
|
|
"TypeScript",
|
|
"System Architecture",
|
|
"Cloud Computing",
|
|
"IoT",
|
|
],
|
|
worksFor: {
|
|
"@type": "Organization",
|
|
name: "Freelancer / Consultor Independente",
|
|
},
|
|
description:
|
|
"Engenheiro de software especializado em aplicacoes de alta performance e sistemas criticos. Desenvolvimento com Next.js 15, React 19, Tauri e arquitetura escalavel.",
|
|
},
|
|
};
|
|
|
|
return (
|
|
<html lang="pt-BR">
|
|
<head>
|
|
<link rel="canonical" href="https://evandro.dev.br" />
|
|
</head>
|
|
<body>
|
|
<SmoothScrollProvider>
|
|
<AnimationProvider>
|
|
<script
|
|
type="application/ld+json"
|
|
dangerouslySetInnerHTML={{ __html: JSON.stringify(jsonLd) }}
|
|
/>
|
|
<RouteTransition>{children}</RouteTransition>
|
|
<GoogleAnalytics />
|
|
</AnimationProvider>
|
|
</SmoothScrollProvider>
|
|
</body>
|
|
</html>
|
|
);
|
|
}
|