diff --git a/app/components/About.tsx b/app/components/About.tsx index 0c24833..5ccc90e 100644 --- a/app/components/About.tsx +++ b/app/components/About.tsx @@ -138,6 +138,16 @@ export default function About() { ))} + + {/* SEO Semantic Content - Visible but subtle */} +
+

+ Evandro Fonseca Junior é Engenheiro Full-Stack especializado em Next.js, + React, Angular e Node.js. Desenvolvedor de aplicações desktop com Tauri, + sistemas web escaláveis e automação de processos. Experiência em PostgreSQL, + MySQL, computação em nuvem e IoT. Localizado em Garuva, Santa Catarina, Brasil. +

+
); diff --git a/app/components/Header.tsx b/app/components/Header.tsx index 474f1c2..063e9c7 100644 --- a/app/components/Header.tsx +++ b/app/components/Header.tsx @@ -2,7 +2,8 @@ import React, { useState, useEffect } from "react"; import { motion, AnimatePresence } from "framer-motion"; -import { MenuIcon, XIcon, Layers } from "lucide-react"; +import { MenuIcon, XIcon } from "lucide-react"; +import Image from "next/image"; import { cn } from "@/lib/utils"; // Definição de Tipos para consistência de dados @@ -59,8 +60,15 @@ export function Header() { whileHover={{ scale: 1.05 }} className="flex items-center gap-2 cursor-pointer" > -
- +
+ Evandro.dev Logo
EVANDRO.DEV diff --git a/app/components/Hero.tsx b/app/components/Hero.tsx index 09623c8..038da84 100644 --- a/app/components/Hero.tsx +++ b/app/components/Hero.tsx @@ -21,7 +21,7 @@ export default function Hero() { }; return ( -
+
{/* 1. Background Engineering: Grid Pattern & Radial Shading */}
@@ -79,11 +79,17 @@ export default function Hero() {
{[ - { icon: Github, link: "https://github.com/evandrodevbr" }, - { icon: Linkedin, link: "https://linkedin.com/..." }, - { icon: Mail, link: "mailto:..." } + { icon: Github, link: "https://github.com/evandrodevbr", rel: "me" }, + { icon: Linkedin, link: "https://www.linkedin.com/in/evandro-fonseca-junior-0969aa1b0/", rel: "me" }, + { icon: Mail, link: "mailto:evandrofonsecajunior@gmail.com" } ].map((social, i) => ( - + ))} @@ -118,13 +124,14 @@ export default function Hero() { fill className="object-cover grayscale hover:grayscale-0 transition-all duration-700 scale-105 hover:scale-100" priority + fetchPriority="high" />
{/* Floating Stats Badge */}

Exp. Level

-

Senior Dev

+

Mid-Level Engineer

diff --git a/app/components/Projects.tsx b/app/components/Projects.tsx index 867cc8b..1ef97e9 100644 --- a/app/components/Projects.tsx +++ b/app/components/Projects.tsx @@ -24,6 +24,23 @@ const CATEGORY_THEMES: Record = { desktop: { color: "text-emerald-400", bg: "bg-emerald-500/10", border: "border-emerald-500/20", icon: Terminal }, }; +// Funções auxiliares para Schema +function getApplicationCategory(category: string): string { + const map: Record = { + "full-stack": "WebApplication", + "iot": "DesktopApplication", + "api": "WebApplication", + "web": "WebApplication", + "desktop": "DesktopApplication" + }; + return map[category.toLowerCase()] || "WebApplication"; +} + +function getOperatingSystem(category: string): string { + if (category.toLowerCase() === "desktop") return "Windows, Linux"; + return "Web Browser"; +} + export default function Projects() { const { data, loading, error } = usePortfolioData(); @@ -31,6 +48,38 @@ export default function Projects() { data?.projects.filter((p) => p.featured) || [], [data]); + const projectsJsonLd = useMemo(() => { + if (!projects || projects.length === 0) return null; + + return { + "@context": "https://schema.org", + "@type": "ItemList", + "itemListElement": projects.map((project, index) => ({ + "@type": "ListItem", + "position": index + 1, + "item": { + "@type": "SoftwareApplication", + "name": project.title, + "description": project.description, + "applicationCategory": getApplicationCategory(project.category), + "operatingSystem": getOperatingSystem(project.category), + "url": project.demoUrl || project.githubUrl || `https://evandro.dev.br/#projects`, + "offers": { + "@type": "Offer", + "price": "0", + "priceCurrency": "BRL" + }, + "softwareVersion": "1.0.0", + "author": { + "@type": "Person", + "name": "Evandro Fonseca Junior", + "url": "https://evandro.dev.br" + } + } + })) + }; + }, [projects]); + if (loading) return
Loading_Assets...
; if (error) return
System_Error: Failed to sync projects.
; @@ -118,6 +167,14 @@ export default function Projects() { ); })} + + {/* JSON-LD Schema for Projects */} + {projectsJsonLd && ( +