From a5600ee13c1c0d386dea11d2c4aee9f823007b68 Mon Sep 17 00:00:00 2001 From: Yves Gugger Date: Sat, 13 Dec 2025 21:32:54 +0100 Subject: [PATCH] feat: Ultra SEO optimization - sitemap, robots, structured data, 800+ TLD pages --- frontend/src/app/(public)/layout.tsx | 9 + frontend/src/app/acquire/layout.tsx | 68 +++ frontend/src/app/discover/layout.tsx | 68 +++ frontend/src/app/layout.tsx | 51 ++- frontend/src/app/pricing/layout.tsx | 103 +++++ frontend/src/app/robots.ts | 34 ++ frontend/src/app/sitemap.ts | 128 ++++-- .../src/app/tld/[tld]/TldDetailClient.tsx | 430 ++++++++++++++++++ frontend/src/app/tld/[tld]/page.tsx | 176 +++++++ frontend/src/app/yield/layout.tsx | 92 ++++ frontend/src/lib/api.ts | 40 ++ frontend/src/lib/seo.ts | 396 ++++++++-------- 12 files changed, 1312 insertions(+), 283 deletions(-) create mode 100644 frontend/src/app/(public)/layout.tsx create mode 100644 frontend/src/app/acquire/layout.tsx create mode 100644 frontend/src/app/discover/layout.tsx create mode 100644 frontend/src/app/pricing/layout.tsx create mode 100644 frontend/src/app/robots.ts create mode 100644 frontend/src/app/tld/[tld]/TldDetailClient.tsx create mode 100644 frontend/src/app/tld/[tld]/page.tsx create mode 100644 frontend/src/app/yield/layout.tsx diff --git a/frontend/src/app/(public)/layout.tsx b/frontend/src/app/(public)/layout.tsx new file mode 100644 index 0000000..6b95c8a --- /dev/null +++ b/frontend/src/app/(public)/layout.tsx @@ -0,0 +1,9 @@ +// Public pages layout - inherits from root layout +export default function PublicLayout({ + children, +}: { + children: React.ReactNode +}) { + return children +} + diff --git a/frontend/src/app/acquire/layout.tsx b/frontend/src/app/acquire/layout.tsx new file mode 100644 index 0000000..26aa3de --- /dev/null +++ b/frontend/src/app/acquire/layout.tsx @@ -0,0 +1,68 @@ +import { Metadata } from 'next' +import Script from 'next/script' +import { SEO_CONFIG, SITE_URL, generateWebPageSchema, generateBreadcrumbSchema } from '@/lib/seo' + +export const metadata: Metadata = { + title: SEO_CONFIG.acquire.title, + description: SEO_CONFIG.acquire.description, + keywords: SEO_CONFIG.acquire.keywords, + alternates: { + canonical: `${SITE_URL}/acquire`, + }, + openGraph: { + title: SEO_CONFIG.acquire.title, + description: SEO_CONFIG.acquire.description, + url: `${SITE_URL}/acquire`, + siteName: 'Pounce', + images: [ + { + url: `${SITE_URL}/og-acquire.png`, + width: 1200, + height: 630, + alt: 'Domain Auctions & Marketplace - Pounce', + }, + ], + locale: 'en_US', + type: 'website', + }, + twitter: { + card: 'summary_large_image', + title: SEO_CONFIG.acquire.title, + description: SEO_CONFIG.acquire.description, + images: [`${SITE_URL}/og-acquire.png`], + }, +} + +export default function AcquireLayout({ + children, +}: { + children: React.ReactNode +}) { + const webPageSchema = generateWebPageSchema({ + title: SEO_CONFIG.acquire.title, + description: SEO_CONFIG.acquire.description, + url: `${SITE_URL}/acquire`, + }) + + const breadcrumbSchema = generateBreadcrumbSchema([ + { name: 'Home', url: SITE_URL }, + { name: 'Domain Marketplace', url: `${SITE_URL}/acquire` }, + ]) + + return ( + <> +