From c88ecf6a09c70f786b6ae35b42c650ede85650d8 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 6 Nov 2025 03:30:14 +0000 Subject: [PATCH 1/7] Initial plan From a68a50c1644f2db6c564c3b6061f85931a469452 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 6 Nov 2025 03:37:57 +0000 Subject: [PATCH 2/7] Add comprehensive SEO improvements: metadata, sitemap, manifest, and structured data Co-authored-by: jomzxc <74537369+jomzxc@users.noreply.github.com> --- app/icon.svg | 5 +++ app/layout.tsx | 84 +++++++++++++++++++++++++++++++++++++++---- app/manifest.ts | 25 +++++++++++++ app/page.tsx | 63 ++++++++++++++++++++++++++++++++ app/sitemap.ts | 32 +++++++++++++++++ public/apple-icon.svg | 5 +++ public/icon-192.png | 1 + public/icon-192.svg | 5 +++ public/icon-512.png | 1 + public/icon-512.svg | 5 +++ public/og-image.png | 1 + public/og-image.svg | 28 +++++++++++++++ public/robots.txt | 10 ++++++ 13 files changed, 258 insertions(+), 7 deletions(-) create mode 100644 app/icon.svg create mode 100644 app/manifest.ts create mode 100644 app/sitemap.ts create mode 100644 public/apple-icon.svg create mode 120000 public/icon-192.png create mode 100644 public/icon-192.svg create mode 120000 public/icon-512.png create mode 100644 public/icon-512.svg create mode 120000 public/og-image.png create mode 100644 public/og-image.svg create mode 100644 public/robots.txt diff --git a/app/icon.svg b/app/icon.svg new file mode 100644 index 0000000..a995aa2 --- /dev/null +++ b/app/icon.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/app/layout.tsx b/app/layout.tsx index 79e813e..e49250f 100644 --- a/app/layout.tsx +++ b/app/layout.tsx @@ -7,17 +7,87 @@ import { ErrorBoundary } from "@/components/error-boundary" import { Toaster } from "@/components/ui/toaster" export const metadata: Metadata = { - title: "WebDrop - Secure P2P File Transfer", + metadataBase: new URL('https://webdrop.vercel.app'), + title: { + default: "WebDrop - Secure P2P File Transfer", + template: "%s | WebDrop", + }, description: - "Fast, secure file sharing through direct peer-to-peer connections. No servers, no limits, just direct transfers.", - generator: "v0.app", - keywords: ["file transfer", "p2p", "peer-to-peer", "secure", "webrtc", "file sharing"], - authors: [{ name: "WebDrop" }], + "Fast, secure file sharing through direct peer-to-peer connections. No servers, no limits, just direct transfers. Transfer files up to 500MB with end-to-end encryption using WebRTC technology.", + applicationName: "WebDrop", + generator: "Next.js", + keywords: [ + "file transfer", + "p2p", + "peer-to-peer", + "secure file sharing", + "webrtc", + "file sharing", + "encrypted file transfer", + "direct file transfer", + "no upload limits", + "browser file sharing", + "private file sharing", + "instant file transfer", + "webdrop", + ], + authors: [{ name: "WebDrop Team", url: "https://github.com/jomzxc/WebDrop" }], + creator: "WebDrop Team", + publisher: "WebDrop", + formatDetection: { + email: false, + address: false, + telephone: false, + }, openGraph: { - title: "WebDrop - Secure P2P File Transfer", - description: "Fast, secure file sharing through direct peer-to-peer connections", type: "website", + locale: "en_US", + url: "https://webdrop.vercel.app", + siteName: "WebDrop", + title: "WebDrop - Secure P2P File Transfer", + description: + "Fast, secure file sharing through direct peer-to-peer connections. No servers, no limits, just direct transfers.", + images: [ + { + url: "/og-image.png", + width: 1200, + height: 630, + alt: "WebDrop - Secure P2P File Transfer", + }, + ], + }, + twitter: { + card: "summary_large_image", + title: "WebDrop - Secure P2P File Transfer", + description: + "Fast, secure file sharing through direct peer-to-peer connections. No servers, no limits, just direct transfers.", + images: ["/og-image.png"], + creator: "@webdrop", + }, + robots: { + index: true, + follow: true, + googleBot: { + index: true, + follow: true, + "max-video-preview": -1, + "max-image-preview": "large", + "max-snippet": -1, + }, + }, + icons: { + icon: "/icon.svg", + shortcut: "/icon.svg", + apple: "/apple-icon.svg", + }, + verification: { + google: "google-site-verification-code", + yandex: "yandex-verification-code", + }, + alternates: { + canonical: "https://webdrop.vercel.app", }, + category: "technology", } export default function RootLayout({ diff --git a/app/manifest.ts b/app/manifest.ts new file mode 100644 index 0000000..457b4b2 --- /dev/null +++ b/app/manifest.ts @@ -0,0 +1,25 @@ +import type { MetadataRoute } from 'next' + +export default function manifest(): MetadataRoute.Manifest { + return { + name: 'WebDrop - Secure P2P File Transfer', + short_name: 'WebDrop', + description: 'Fast, secure file sharing through direct peer-to-peer connections. No servers, no limits, just direct transfers.', + start_url: '/', + display: 'standalone', + background_color: '#000000', + theme_color: '#6366F1', + icons: [ + { + src: '/icon-192.png', + sizes: '192x192', + type: 'image/png', + }, + { + src: '/icon-512.png', + sizes: '512x512', + type: 'image/png', + }, + ], + } +} diff --git a/app/page.tsx b/app/page.tsx index b065c42..35ef222 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -39,8 +39,71 @@ export default function LandingPage() { ) } + // JSON-LD structured data for SEO + const jsonLd = { + "@context": "https://schema.org", + "@graph": [ + { + "@type": "WebSite", + "@id": "https://webdrop.vercel.app/#website", + url: "https://webdrop.vercel.app", + name: "WebDrop", + description: "Fast, secure file sharing through direct peer-to-peer connections", + potentialAction: { + "@type": "SearchAction", + target: { + "@type": "EntryPoint", + urlTemplate: "https://webdrop.vercel.app/room?q={search_term_string}", + }, + "query-input": "required name=search_term_string", + }, + }, + { + "@type": "WebApplication", + "@id": "https://webdrop.vercel.app/#webapplication", + name: "WebDrop", + url: "https://webdrop.vercel.app", + description: + "Fast, secure file sharing through direct peer-to-peer connections. No servers, no limits, just direct transfers.", + applicationCategory: "UtilityApplication", + operatingSystem: "Any", + browserRequirements: "Requires JavaScript. Requires HTML5.", + offers: { + "@type": "Offer", + price: "0", + priceCurrency: "USD", + }, + featureList: [ + "End-to-End Encrypted", + "Lightning Fast", + "Real-Time Collaboration", + "Unlimited Transfers", + "No file storage on servers", + "Direct peer-to-peer connections", + ], + }, + { + "@type": "Organization", + "@id": "https://webdrop.vercel.app/#organization", + name: "WebDrop", + url: "https://webdrop.vercel.app", + logo: { + "@type": "ImageObject", + url: "https://webdrop.vercel.app/icon-512.png", + }, + sameAs: ["https://github.com/jomzxc/WebDrop"], + }, + ], + } + return (
+ {/* JSON-LD Structured Data */} +