Skip to content

Commit c39b7fc

Browse files
committed
feat(seo): add Schema.org, dynamic canonical, keywords and apple-touch-icon
1 parent d0cf489 commit c39b7fc

File tree

6 files changed

+46
-3
lines changed

6 files changed

+46
-3
lines changed

app/app.vue

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,15 @@
77
</template>
88

99
<script setup lang="ts">
10+
const route = useRoute();
11+
const siteUrl = "https://patrickluz.dev";
12+
13+
// Canonical dinâmica por página
14+
const canonicalUrl = computed(() => {
15+
const path = route.path === "/" ? "" : route.path;
16+
return `${siteUrl}${path}`;
17+
});
18+
1019
// Global SEO defaults
1120
useHead({
1221
htmlAttrs: {
@@ -22,8 +31,33 @@ useHead({
2231
{ property: "og:locale", content: "pt_BR" },
2332
],
2433
link: [
25-
{ rel: "canonical", href: "https://patrickluz.dev" },
34+
{ rel: "canonical", href: canonicalUrl },
35+
{ rel: "apple-touch-icon", sizes: "180x180", href: "/apple-touch-icon.png" },
2636
{ rel: "preload", as: "image", href: "/logo.webp" },
2737
],
2838
});
39+
40+
// Schema.org - Dados estruturados para Google
41+
useSchemaOrg([
42+
defineWebSite({
43+
name: "Patrick Luz",
44+
url: siteUrl,
45+
description:
46+
"Engenheiro de Software especializado em aplicações web, APIs e automações.",
47+
}),
48+
definePerson({
49+
name: "Patrick Luz",
50+
url: siteUrl,
51+
image: `${siteUrl}/logo.png`,
52+
jobTitle: "Engenheiro de Software",
53+
worksFor: {
54+
"@type": "Organization",
55+
name: "Mercado Livre",
56+
},
57+
sameAs: [
58+
"https://github.com/patrickluzdev",
59+
"https://www.linkedin.com/in/patrickluzdev",
60+
],
61+
}),
62+
]);
2963
</script>

app/pages/contato.vue

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -287,6 +287,8 @@ useSeoMeta({
287287
title: "Contato - Patrick Luz",
288288
description:
289289
"Entre em contato para discutir seu projeto. Disponível para desenvolvimento web, APIs, automações e consultoria. Resposta em até 24h.",
290+
keywords:
291+
"contato, orçamento, freelancer, consultoria, projeto, whatsapp, email",
290292
});
291293
292294
defineOgImage({

app/pages/index.vue

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -195,14 +195,17 @@ definePageMeta({
195195
useSeoMeta({
196196
title: "Patrick Luz - Engenheiro de Software",
197197
description:
198-
"Desenvolvedor Full Stack especializado em aplicações web, APIs e automações. +5 anos de experiência em empresas como Mercado Livre, Inter e Hurst Capital.",
198+
"Desenvolvedor Full Stack especializado em aplicações web, APIs e automações. +6 anos de experiência em empresas como Mercado Livre, Inter e Hurst Capital.",
199+
keywords:
200+
"desenvolvedor full stack, engenheiro de software, vue.js, node.js, go, react, freelancer, automações, APIs",
199201
});
200202
201203
defineOgImage({
202204
component: "OgImageTemplate",
203205
props: {
204206
title: "Engenheiro de Software",
205-
description: "Desenvolvedor Full Stack especializado em aplicações web, APIs e automações.",
207+
description:
208+
"Desenvolvedor Full Stack especializado em aplicações web, APIs e automações.",
206209
},
207210
});
208211

app/pages/projetos.vue

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,8 @@ useSeoMeta({
193193
title: "Projetos - Patrick Luz",
194194
description:
195195
"Portfólio de projetos desenvolvidos: sistemas web, APIs, automações e mais. Veja exemplos de trabalhos em Vue.js, React, Go, Node.js e outras tecnologias.",
196+
keywords:
197+
"portfólio, projetos web, sistemas, vue.js, react, go, node.js, typescript, open source",
196198
});
197199
198200
defineOgImage({

app/pages/sobre.vue

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -298,6 +298,8 @@ useSeoMeta({
298298
description:
299299
"Engenheiro de Software com +6 anos de experiência. Especialista em desenvolvimento web, APIs, automações e DevOps. Disponível para novos projetos.",
300300
ogType: "profile",
301+
keywords:
302+
"sobre, experiência, habilidades, mercado livre, inter, desenvolvedor senior, carreira",
301303
});
302304
303305
defineOgImage({

public/apple-touch-icon.png

46 KB
Loading

0 commit comments

Comments
 (0)