Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
191 changes: 191 additions & 0 deletions SEO_IMPROVEMENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,191 @@
# SEO Improvements for WebDrop

This document outlines the comprehensive SEO improvements implemented to make WebDrop more discoverable on search engines like Google.

## Overview

The following SEO enhancements have been implemented to improve WebDrop's visibility and ranking on search engines:

## 1. Metadata Enhancements

### Root Layout (`app/layout.tsx`)
- **Title Template**: Dynamic page titles with "| WebDrop" suffix
- **Enhanced Description**: Detailed description with key features (500MB file transfer, end-to-end encryption, WebRTC)
- **Keywords**: Comprehensive list of relevant keywords for file transfer, P2P, WebRTC, and secure file sharing
- **Open Graph Tags**: Complete social media sharing metadata for Facebook, LinkedIn, etc.
- **Twitter Card**: Twitter-specific metadata for better link previews
- **Canonical URLs**: Prevent duplicate content issues
- **Robots Meta**: Properly configured for search engine crawling
- **Icons**: Favicon, app icons, and Apple touch icons

### Page-Specific Metadata
Each major page now has its own metadata:
- **Login Page**: `/auth/login/layout.tsx`
- **Sign Up Page**: `/auth/sign-up/layout.tsx`
- **Room Page**: `/room/layout.tsx`
- **Profile Page**: `/profile/layout.tsx` (noindex for privacy)
- **404 Page**: `/app/not-found.tsx` (noindex, custom design)

## 2. Structured Data (JSON-LD)

Added schema.org structured data to the landing page (`app/page.tsx`):

### WebSite Schema
- Site name, URL, and description
- SearchAction for search engines to understand the site structure

### WebApplication Schema
- Application category: Utility
- Operating system: Any (browser-based)
- Pricing: Free ($0)
- Feature list highlighting key capabilities
- Browser requirements

### Organization Schema
- Organization name and URL
- Logo reference
- Social media links (GitHub)

## 3. Sitemap

**File**: `app/sitemap.ts`

Dynamically generated XML sitemap including:
- Homepage (priority: 1.0, monthly updates)
- Auth pages (priority: 0.8, monthly updates)
- Room page (priority: 0.9, weekly updates)

The sitemap is automatically available at `/sitemap.xml`

## 4. Robots.txt

**File**: `public/robots.txt`

Configuration:
- Allows all search engine crawlers
- Blocks `/auth/` and `/api/` routes from indexing
- References sitemap location

## 5. Web App Manifest

**File**: `app/manifest.ts`

PWA-ready manifest including:
- App name and short name
- Description
- Theme colors
- Display mode: standalone
- App icons (192x192, 512x512)

Automatically available at `/manifest.webmanifest`

## 6. Icons and Images

### Favicon and App Icons
- **Primary Icon**: `/app/icon.svg` - Automatically used by Next.js
- **192x192 Icon**: `/public/icon-192.svg` (with PNG symlink)
- **512x512 Icon**: `/public/icon-512.svg` (with PNG symlink)
- **Apple Touch Icon**: `/public/apple-icon.svg`

### Open Graph Image
- **File**: `/public/og-image.svg` (with PNG symlink)
- **Dimensions**: 1200x630px (optimal for social media)
- **Usage**: Displayed when sharing links on social media

## 7. Search Engine Verification

Placeholder verification codes are included in `app/layout.tsx`:
- **Google Search Console**: `google-site-verification-code`
- **Yandex Webmaster**: `yandex-verification-code`

### How to Add Verification Codes:

1. **Google Search Console**:
- Visit [Google Search Console](https://search.google.com/search-console)
- Add your property (https://webdrop.vercel.app)
- Choose "HTML tag" verification method
- Copy the verification code from the meta tag
- Replace `google-site-verification-code` in `app/layout.tsx`

2. **Yandex Webmaster**:
- Visit [Yandex Webmaster](https://webmaster.yandex.com/)
- Add your site
- Choose meta tag verification
- Replace `yandex-verification-code` in `app/layout.tsx`

## 8. Technical SEO Best Practices

### Implemented:
- ✅ Semantic HTML structure
- ✅ Proper heading hierarchy (H1, H2, H3)
- ✅ Meta description optimization
- ✅ Mobile-responsive design (already present)
- ✅ Fast loading times (Next.js optimization)
- ✅ HTTPS ready
- ✅ Language declaration (`lang="en"`)
- ✅ Canonical URLs

### Performance:
- Static page generation where possible
- Optimized images (SVG format)
- CDN-ready (Vercel deployment)

## Next Steps

After deploying these changes:

1. **Submit Sitemap to Search Engines**:
- Google Search Console: Add sitemap.xml
- Bing Webmaster Tools: Add sitemap.xml

2. **Verify Site Ownership**:
- Add actual verification codes to `app/layout.tsx`
- Redeploy the application

3. **Monitor Performance**:
- Check Google Search Console for indexing status
- Monitor search rankings
- Track organic traffic in analytics

4. **Create Content**:
- Consider adding a blog for content marketing
- Create tutorials and guides
- Build backlinks through GitHub and tech communities

5. **Social Media**:
- Share on Product Hunt
- Post on Reddit (r/webdev, r/privacy)
- Share on Twitter/X with relevant hashtags

## Expected Benefits

- 🔍 **Better Discovery**: Easier for users to find WebDrop through Google search
- 📈 **Higher Rankings**: Improved search engine rankings for relevant keywords
- 🔗 **Better Link Previews**: Rich previews when sharing on social media
- 📱 **PWA Support**: Users can install WebDrop as a progressive web app
- ⚡ **Faster Indexing**: Search engines can crawl and index pages more efficiently

## Verification

To verify the SEO improvements are working:

1. **Check Sitemap**: Visit `https://webdrop.vercel.app/sitemap.xml`
2. **Check Robots.txt**: Visit `https://webdrop.vercel.app/robots.txt`
3. **Check Manifest**: Visit `https://webdrop.vercel.app/manifest.webmanifest`
4. **Check Metadata**: View page source and look for meta tags
5. **Use SEO Tools**:
- [Google Rich Results Test](https://search.google.com/test/rich-results)
- [Google Mobile-Friendly Test](https://search.google.com/test/mobile-friendly)
- [Schema.org Validator](https://validator.schema.org/)

## Maintenance

- Update sitemap when adding new pages
- Keep metadata descriptions accurate
- Monitor search console for errors
- Update structured data as features change
- Maintain fast loading times

---

**Note**: These SEO improvements are foundational. Continued success requires ongoing content creation, backlink building, and engagement with the developer community.
18 changes: 18 additions & 0 deletions app/auth/login/layout.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import type { Metadata } from "next"

export const metadata: Metadata = {
title: "Login",
description: "Login to WebDrop to start sharing files securely through peer-to-peer connections.",
openGraph: {
title: "Login - WebDrop",
description: "Login to WebDrop to start sharing files securely through peer-to-peer connections.",
},
}

export default function AuthLayout({
children,
}: {
children: React.ReactNode
}) {
return children
}
18 changes: 18 additions & 0 deletions app/auth/sign-up/layout.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import type { Metadata } from "next"

export const metadata: Metadata = {
title: "Sign Up",
description: "Create a free WebDrop account to start sharing files securely with peer-to-peer technology.",
openGraph: {
title: "Sign Up - WebDrop",
description: "Create a free WebDrop account to start sharing files securely with peer-to-peer technology.",
},
}

export default function SignUpLayout({
children,
}: {
children: React.ReactNode
}) {
return children
}
5 changes: 5 additions & 0 deletions app/icon.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
86 changes: 79 additions & 7 deletions app/layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,17 +7,89 @@ 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.jomszxc.tech'),
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.jomszxc.tech",
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.svg",
width: 1200,
height: 630,
alt: "WebDrop - Secure P2P File Transfer",
type: "image/svg+xml",
},
],
},
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.svg"],
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",
},
// Note: Add verification codes after setting up Google Search Console and Yandex Webmaster
// verification: {
// google: "your-google-site-verification-code",
// yandex: "your-yandex-verification-code",
// },
alternates: {
canonical: "https://webdrop.jomszxc.tech",
},
category: "technology",
}

export default function RootLayout({
Expand Down
25 changes: 25 additions & 0 deletions app/manifest.ts
Original file line number Diff line number Diff line change
@@ -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.svg',
sizes: '192x192',
type: 'image/svg+xml',
},
{
src: '/icon-512.svg',
sizes: '512x512',
type: 'image/svg+xml',
},
],
}
}
Loading