From 713b309f7477b22bf069febdd3ba9c517a4afae0 Mon Sep 17 00:00:00 2001 From: Adrian Bonpin Date: Mon, 27 Apr 2026 16:05:31 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20SEO=20overhaul=20=E2=80=94=20expanded?= =?UTF-8?q?=20sitemap,=20JSON-LD,=20canonical=20URLs,=20search=20metadata?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/devices/[slug]/page.tsx | 16 ++++++++++++++- app/devices/page.tsx | 29 ++++++++++++++++++++++---- app/page.tsx | 17 +++++++++++++++ app/search/layout.tsx | 12 +++++++++++ app/sitemap.ts | 41 ++++++++++++++++++++++++------------- 5 files changed, 96 insertions(+), 19 deletions(-) create mode 100644 app/search/layout.tsx diff --git a/app/devices/[slug]/page.tsx b/app/devices/[slug]/page.tsx index 14d86b8..0fff0bf 100644 --- a/app/devices/[slug]/page.tsx +++ b/app/devices/[slug]/page.tsx @@ -17,6 +17,7 @@ export async function generateMetadata({ params }: { params: Promise<{ slug: str return { title: `${device.name} — DeckyVault`, description: `Benchmark data and performance stats for ${device.name} on DeckyVault`, + alternates: { canonical: `https://deckyvault.xyz/devices/${slug}` }, } } @@ -37,5 +38,18 @@ export default async function DevicePage({ params }: { params: Promise<{ slug: s notFound() } - return + const jsonLd = { + "@context": "https://schema.org", + "@type": "Product", + name: device.name, + category: device.deviceType, + url: `https://deckyvault.xyz/devices/${device.slug}`, + } + + return ( + <> +