SEO, Metadata & Sitemap
This commit is contained in:
+18
-1
@@ -4,7 +4,24 @@ import ArchitectureDiagram from "@/components/diagrams/ArchitectureDiagram";
|
||||
export const metadata: Metadata = {
|
||||
title: "About P2NS - Peer-to-Peer Decentralized DNS System",
|
||||
description:
|
||||
"Learn about P2NS, a robust, firewall-resistant peer-to-peer DNS resolution system.",
|
||||
"Learn about P2NS, a robust, firewall-resistant peer-to-peer DNS resolution system that operates independently of centralized DNS infrastructure.",
|
||||
keywords: ["P2P", "DNS", "decentralized", "peer-to-peer", "NAT traversal", "firewall", "censorship resistance", "about P2NS"],
|
||||
authors: [{ name: "Raven Scott" }],
|
||||
openGraph: {
|
||||
title: "About P2NS - Peer-to-Peer Decentralized DNS System",
|
||||
description: "Learn about P2NS, a robust, firewall-resistant peer-to-peer DNS resolution system.",
|
||||
url: "https://p2ns.space/about",
|
||||
siteName: "P2NS",
|
||||
type: "website",
|
||||
},
|
||||
twitter: {
|
||||
card: "summary_large_image",
|
||||
title: "About P2NS - Peer-to-Peer Decentralized DNS System",
|
||||
description: "Learn about P2NS, a robust, firewall-resistant peer-to-peer DNS resolution system.",
|
||||
},
|
||||
alternates: {
|
||||
canonical: "https://p2ns.space/about",
|
||||
},
|
||||
};
|
||||
|
||||
export default function AboutPage() {
|
||||
|
||||
+18
-1
@@ -3,7 +3,24 @@ import { Github, ExternalLink, Code, Heart, MessageCircle } from 'lucide-react';
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: 'Community - P2NS',
|
||||
description: 'Contribute to P2NS, get support, and learn about the roadmap.',
|
||||
description: 'Contribute to P2NS, get support, join the Discord community, and learn about the roadmap.',
|
||||
keywords: ['P2NS community', 'contribute', 'open source', 'Discord', 'support', 'contributing'],
|
||||
authors: [{ name: 'Raven Scott' }],
|
||||
openGraph: {
|
||||
title: 'Community - P2NS',
|
||||
description: 'Contribute to P2NS, get support, and learn about the roadmap.',
|
||||
url: 'https://p2ns.space/community',
|
||||
siteName: 'P2NS',
|
||||
type: 'website',
|
||||
},
|
||||
twitter: {
|
||||
card: 'summary_large_image',
|
||||
title: 'Community - P2NS',
|
||||
description: 'Contribute to P2NS, get support, and learn about the roadmap.',
|
||||
},
|
||||
alternates: {
|
||||
canonical: 'https://p2ns.space/community',
|
||||
},
|
||||
};
|
||||
|
||||
export default function CommunityPage() {
|
||||
|
||||
@@ -3,7 +3,24 @@ import CodeBlock from '@/components/ui/CodeBlock';
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: 'Admin Panel - P2NS Documentation',
|
||||
description: 'Complete guide to the P2NS web-based admin interface, features, and usage instructions',
|
||||
description: 'Complete guide to the P2NS web-based admin interface, features, and usage instructions. Manage domains, Holesail servers, and more.',
|
||||
keywords: ['P2NS admin panel', 'admin interface', 'web interface', 'management', 'P2NS dashboard'],
|
||||
authors: [{ name: 'Raven Scott' }],
|
||||
openGraph: {
|
||||
title: 'Admin Panel - P2NS Documentation',
|
||||
description: 'Complete guide to the P2NS web-based admin interface, features, and usage instructions',
|
||||
url: 'https://p2ns.space/docs/admin-panel',
|
||||
siteName: 'P2NS',
|
||||
type: 'website',
|
||||
},
|
||||
twitter: {
|
||||
card: 'summary_large_image',
|
||||
title: 'Admin Panel - P2NS Documentation',
|
||||
description: 'Complete guide to the P2NS web-based admin interface, features, and usage instructions',
|
||||
},
|
||||
alternates: {
|
||||
canonical: 'https://p2ns.space/docs/admin-panel',
|
||||
},
|
||||
};
|
||||
|
||||
export default function AdminPanelPage() {
|
||||
|
||||
+18
-1
@@ -3,7 +3,24 @@ import CodeBlock from '@/components/ui/CodeBlock';
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: 'API Reference - P2NS Documentation',
|
||||
description: 'Complete REST API and WebSocket documentation for P2NS.',
|
||||
description: 'Complete REST API and WebSocket documentation for P2NS. All endpoints, request/response formats, and WebSocket events.',
|
||||
keywords: ['P2NS API', 'REST API', 'WebSocket', 'API documentation', 'endpoints', 'P2NS reference'],
|
||||
authors: [{ name: 'Raven Scott' }],
|
||||
openGraph: {
|
||||
title: 'API Reference - P2NS Documentation',
|
||||
description: 'Complete REST API and WebSocket documentation for P2NS.',
|
||||
url: 'https://p2ns.space/docs/api',
|
||||
siteName: 'P2NS',
|
||||
type: 'website',
|
||||
},
|
||||
twitter: {
|
||||
card: 'summary_large_image',
|
||||
title: 'API Reference - P2NS Documentation',
|
||||
description: 'Complete REST API and WebSocket documentation for P2NS.',
|
||||
},
|
||||
alternates: {
|
||||
canonical: 'https://p2ns.space/docs/api',
|
||||
},
|
||||
};
|
||||
|
||||
export default function APIPage() {
|
||||
|
||||
@@ -3,7 +3,24 @@ import ArchitectureDiagram from '@/components/diagrams/ArchitectureDiagram';
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: 'Architecture - P2NS Documentation',
|
||||
description: 'Deep dive into P2NS system architecture and components.',
|
||||
description: 'Deep dive into P2NS system architecture and components. Understand how P2NS is built and how all pieces work together.',
|
||||
keywords: ['P2NS architecture', 'system design', 'components', 'technical details', 'P2NS internals'],
|
||||
authors: [{ name: 'Raven Scott' }],
|
||||
openGraph: {
|
||||
title: 'Architecture - P2NS Documentation',
|
||||
description: 'Deep dive into P2NS system architecture and components.',
|
||||
url: 'https://p2ns.space/docs/architecture',
|
||||
siteName: 'P2NS',
|
||||
type: 'website',
|
||||
},
|
||||
twitter: {
|
||||
card: 'summary_large_image',
|
||||
title: 'Architecture - P2NS Documentation',
|
||||
description: 'Deep dive into P2NS system architecture and components.',
|
||||
},
|
||||
alternates: {
|
||||
canonical: 'https://p2ns.space/docs/architecture',
|
||||
},
|
||||
};
|
||||
|
||||
export default function ArchitecturePage() {
|
||||
|
||||
@@ -3,7 +3,24 @@ import CodeBlock from '@/components/ui/CodeBlock';
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: 'Configuration - P2NS Documentation',
|
||||
description: 'Environment variables and configuration options for P2NS.',
|
||||
description: 'Environment variables and configuration options for P2NS. Complete guide to customizing your P2NS setup.',
|
||||
keywords: ['P2NS configuration', 'environment variables', 'settings', 'config', 'P2NS setup'],
|
||||
authors: [{ name: 'Raven Scott' }],
|
||||
openGraph: {
|
||||
title: 'Configuration - P2NS Documentation',
|
||||
description: 'Environment variables and configuration options for P2NS.',
|
||||
url: 'https://p2ns.space/docs/configuration',
|
||||
siteName: 'P2NS',
|
||||
type: 'website',
|
||||
},
|
||||
twitter: {
|
||||
card: 'summary_large_image',
|
||||
title: 'Configuration - P2NS Documentation',
|
||||
description: 'Environment variables and configuration options for P2NS.',
|
||||
},
|
||||
alternates: {
|
||||
canonical: 'https://p2ns.space/docs/configuration',
|
||||
},
|
||||
};
|
||||
|
||||
export default function ConfigurationPage() {
|
||||
|
||||
@@ -3,7 +3,24 @@ import CodeBlock from '@/components/ui/CodeBlock';
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: 'Getting Started - P2NS Documentation',
|
||||
description: 'Installation and quick start guide for P2NS.',
|
||||
description: 'Installation and quick start guide for P2NS. Learn how to set up and run your first P2NS node.',
|
||||
keywords: ['P2NS installation', 'getting started', 'quick start', 'setup guide', 'P2NS tutorial'],
|
||||
authors: [{ name: 'Raven Scott' }],
|
||||
openGraph: {
|
||||
title: 'Getting Started - P2NS Documentation',
|
||||
description: 'Installation and quick start guide for P2NS.',
|
||||
url: 'https://p2ns.space/docs/getting-started',
|
||||
siteName: 'P2NS',
|
||||
type: 'website',
|
||||
},
|
||||
twitter: {
|
||||
card: 'summary_large_image',
|
||||
title: 'Getting Started - P2NS Documentation',
|
||||
description: 'Installation and quick start guide for P2NS.',
|
||||
},
|
||||
alternates: {
|
||||
canonical: 'https://p2ns.space/docs/getting-started',
|
||||
},
|
||||
};
|
||||
|
||||
export default function GettingStartedPage() {
|
||||
|
||||
@@ -4,7 +4,24 @@ import P2NSFlowDiagram from '@/components/diagrams/P2NSFlowDiagram';
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: 'How It Works - P2NS Documentation',
|
||||
description: 'Complete explanation of how P2NS works from domain registration to accessing services',
|
||||
description: 'Complete explanation of how P2NS works from domain registration to accessing services. Understand the P2NS workflow and processes.',
|
||||
keywords: ['P2NS how it works', 'workflow', 'process', 'domain registration', 'P2NS explanation'],
|
||||
authors: [{ name: 'Raven Scott' }],
|
||||
openGraph: {
|
||||
title: 'How It Works - P2NS Documentation',
|
||||
description: 'Complete explanation of how P2NS works from domain registration to accessing services',
|
||||
url: 'https://p2ns.space/docs/how-it-works',
|
||||
siteName: 'P2NS',
|
||||
type: 'website',
|
||||
},
|
||||
twitter: {
|
||||
card: 'summary_large_image',
|
||||
title: 'How It Works - P2NS Documentation',
|
||||
description: 'Complete explanation of how P2NS works from domain registration to accessing services',
|
||||
},
|
||||
alternates: {
|
||||
canonical: 'https://p2ns.space/docs/how-it-works',
|
||||
},
|
||||
};
|
||||
|
||||
export default function HowItWorksPage() {
|
||||
|
||||
@@ -5,6 +5,23 @@ import { Book, Settings, Code, Wrench, Network, FileText, LayoutDashboard } from
|
||||
export const metadata: Metadata = {
|
||||
title: 'Documentation - P2NS',
|
||||
description: 'Complete documentation for P2NS including installation, configuration, API reference, and troubleshooting.',
|
||||
keywords: ['P2NS documentation', 'P2NS docs', 'installation guide', 'configuration', 'API reference', 'troubleshooting'],
|
||||
authors: [{ name: 'Raven Scott' }],
|
||||
openGraph: {
|
||||
title: 'Documentation - P2NS',
|
||||
description: 'Complete documentation for P2NS including installation, configuration, API reference, and troubleshooting.',
|
||||
url: 'https://p2ns.space/docs',
|
||||
siteName: 'P2NS',
|
||||
type: 'website',
|
||||
},
|
||||
twitter: {
|
||||
card: 'summary_large_image',
|
||||
title: 'Documentation - P2NS',
|
||||
description: 'Complete documentation for P2NS including installation, configuration, API reference, and troubleshooting.',
|
||||
},
|
||||
alternates: {
|
||||
canonical: 'https://p2ns.space/docs',
|
||||
},
|
||||
};
|
||||
|
||||
const docSections = [
|
||||
|
||||
@@ -3,7 +3,24 @@ import CodeBlock from '@/components/ui/CodeBlock';
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: 'Troubleshooting - P2NS Documentation',
|
||||
description: 'Common issues and solutions for P2NS.',
|
||||
description: 'Common issues and solutions for P2NS. Debug problems, fix errors, and get help with your P2NS setup.',
|
||||
keywords: ['P2NS troubleshooting', 'debug', 'fix errors', 'common issues', 'P2NS help', 'problem solving'],
|
||||
authors: [{ name: 'Raven Scott' }],
|
||||
openGraph: {
|
||||
title: 'Troubleshooting - P2NS Documentation',
|
||||
description: 'Common issues and solutions for P2NS.',
|
||||
url: 'https://p2ns.space/docs/troubleshooting',
|
||||
siteName: 'P2NS',
|
||||
type: 'website',
|
||||
},
|
||||
twitter: {
|
||||
card: 'summary_large_image',
|
||||
title: 'Troubleshooting - P2NS Documentation',
|
||||
description: 'Common issues and solutions for P2NS.',
|
||||
},
|
||||
alternates: {
|
||||
canonical: 'https://p2ns.space/docs/troubleshooting',
|
||||
},
|
||||
};
|
||||
|
||||
export default function TroubleshootingPage() {
|
||||
|
||||
+18
-1
@@ -25,7 +25,24 @@ import {
|
||||
export const metadata: Metadata = {
|
||||
title: 'Features - P2NS Peer-to-Peer DNS System',
|
||||
description:
|
||||
'Comprehensive features of P2NS including decentralized DNS, firewall traversal, proxy servers, and more.',
|
||||
'Comprehensive features of P2NS including decentralized DNS, firewall traversal, proxy servers, automatic certificate management, and more.',
|
||||
keywords: ['P2P DNS features', 'decentralized DNS', 'firewall traversal', 'NAT traversal', 'proxy servers', 'certificate management', 'P2NS features'],
|
||||
authors: [{ name: 'Raven Scott' }],
|
||||
openGraph: {
|
||||
title: 'Features - P2NS Peer-to-Peer DNS System',
|
||||
description: 'Comprehensive features of P2NS including decentralized DNS, firewall traversal, proxy servers, and more.',
|
||||
url: 'https://p2ns.space/features',
|
||||
siteName: 'P2NS',
|
||||
type: 'website',
|
||||
},
|
||||
twitter: {
|
||||
card: 'summary_large_image',
|
||||
title: 'Features - P2NS Peer-to-Peer DNS System',
|
||||
description: 'Comprehensive features of P2NS including decentralized DNS, firewall traversal, proxy servers, and more.',
|
||||
},
|
||||
alternates: {
|
||||
canonical: 'https://p2ns.space/features',
|
||||
},
|
||||
};
|
||||
|
||||
type Feature = {
|
||||
|
||||
+3
-2
@@ -19,8 +19,9 @@ export const metadata: Metadata = {
|
||||
openGraph: {
|
||||
title: "P2NS - Peer-to-Peer Decentralized DNS System",
|
||||
description: "A robust, firewall-resistant peer-to-peer DNS resolution system",
|
||||
type: "website",
|
||||
url: "https://p2ns.space",
|
||||
siteName: "P2NS",
|
||||
type: "website",
|
||||
},
|
||||
twitter: {
|
||||
card: "summary_large_image",
|
||||
@@ -32,7 +33,7 @@ export const metadata: Metadata = {
|
||||
follow: true,
|
||||
},
|
||||
alternates: {
|
||||
canonical: "/",
|
||||
canonical: "https://p2ns.space",
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
@@ -6,6 +6,23 @@ import PeerDiscoveryDiagram from '@/components/diagrams/PeerDiscoveryDiagram';
|
||||
export const metadata: Metadata = {
|
||||
title: 'How P2P Works - Understanding Peer-to-Peer Networking',
|
||||
description: 'Learn about peer-to-peer networking, UDP hole-punching, NAT traversal, and how P2NS uses these technologies.',
|
||||
keywords: ['P2P networking', 'peer-to-peer', 'UDP hole-punching', 'NAT traversal', 'Hyperswarm', 'DHT', 'Corestore', 'P2P explained'],
|
||||
authors: [{ name: 'Raven Scott' }],
|
||||
openGraph: {
|
||||
title: 'How P2P Works - Understanding Peer-to-Peer Networking',
|
||||
description: 'Learn about peer-to-peer networking, UDP hole-punching, NAT traversal, and how P2NS uses these technologies.',
|
||||
url: 'https://p2ns.space/learn/p2p',
|
||||
siteName: 'P2NS',
|
||||
type: 'website',
|
||||
},
|
||||
twitter: {
|
||||
card: 'summary_large_image',
|
||||
title: 'How P2P Works - Understanding Peer-to-Peer Networking',
|
||||
description: 'Learn about peer-to-peer networking, UDP hole-punching, NAT traversal, and how P2NS uses these technologies.',
|
||||
},
|
||||
alternates: {
|
||||
canonical: 'https://p2ns.space/learn/p2p',
|
||||
},
|
||||
};
|
||||
|
||||
export default function P2PPage() {
|
||||
|
||||
@@ -1,9 +1,32 @@
|
||||
import type { Metadata } from 'next';
|
||||
import Hero from '@/components/sections/Hero';
|
||||
import FeaturesGrid from '@/components/sections/FeaturesGrid';
|
||||
import HowItWorks from '@/components/sections/HowItWorks';
|
||||
import TechnologyStack from '@/components/sections/TechnologyStack';
|
||||
import QuickStart from '@/components/sections/QuickStart';
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: 'P2NS - Peer-to-Peer Decentralized DNS System',
|
||||
description: 'A robust, firewall-resistant peer-to-peer DNS resolution system that operates independently of centralized DNS infrastructure. Built with Holesail, Hyperswarm, and Corestore.',
|
||||
keywords: ['P2P', 'DNS', 'decentralized', 'peer-to-peer', 'NAT traversal', 'firewall', 'Holesail', 'Hyperswarm', 'Corestore', 'decentralized DNS', 'P2P DNS'],
|
||||
authors: [{ name: 'Raven Scott' }],
|
||||
openGraph: {
|
||||
title: 'P2NS - Peer-to-Peer Decentralized DNS System',
|
||||
description: 'A robust, firewall-resistant peer-to-peer DNS resolution system that operates independently of centralized DNS infrastructure.',
|
||||
url: 'https://p2ns.space',
|
||||
siteName: 'P2NS',
|
||||
type: 'website',
|
||||
},
|
||||
twitter: {
|
||||
card: 'summary_large_image',
|
||||
title: 'P2NS - Peer-to-Peer Decentralized DNS System',
|
||||
description: 'A robust, firewall-resistant peer-to-peer DNS resolution system that operates independently of centralized DNS infrastructure.',
|
||||
},
|
||||
alternates: {
|
||||
canonical: 'https://p2ns.space',
|
||||
},
|
||||
};
|
||||
|
||||
export default function Home() {
|
||||
return (
|
||||
<>
|
||||
|
||||
@@ -7,7 +7,7 @@ export default async function robots(): Promise<MetadataRoute.Robots> {
|
||||
allow: '/',
|
||||
disallow: ['/api/'],
|
||||
},
|
||||
sitemap: 'https://p2ns.example.com/sitemap.xml', // Update with your actual domain
|
||||
sitemap: 'https://p2ns.space/sitemap.xml',
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { MetadataRoute } from 'next';
|
||||
|
||||
export default async function sitemap(): Promise<MetadataRoute.Sitemap> {
|
||||
const baseUrl = 'https://p2ns.example.com'; // Update with your actual domain
|
||||
const baseUrl = 'https://p2ns.space';
|
||||
|
||||
return [
|
||||
{
|
||||
@@ -17,13 +17,19 @@ export default async function sitemap(): Promise<MetadataRoute.Sitemap> {
|
||||
priority: 0.8,
|
||||
},
|
||||
{
|
||||
url: `${baseUrl}/learn/p2p`,
|
||||
url: `${baseUrl}/features`,
|
||||
lastModified: new Date(),
|
||||
changeFrequency: 'monthly',
|
||||
priority: 0.8,
|
||||
},
|
||||
{
|
||||
url: `${baseUrl}/features`,
|
||||
url: `${baseUrl}/community`,
|
||||
lastModified: new Date(),
|
||||
changeFrequency: 'monthly',
|
||||
priority: 0.8,
|
||||
},
|
||||
{
|
||||
url: `${baseUrl}/learn/p2p`,
|
||||
lastModified: new Date(),
|
||||
changeFrequency: 'monthly',
|
||||
priority: 0.8,
|
||||
@@ -46,12 +52,6 @@ export default async function sitemap(): Promise<MetadataRoute.Sitemap> {
|
||||
changeFrequency: 'weekly',
|
||||
priority: 0.8,
|
||||
},
|
||||
{
|
||||
url: `${baseUrl}/docs/examples`,
|
||||
lastModified: new Date(),
|
||||
changeFrequency: 'weekly',
|
||||
priority: 0.8,
|
||||
},
|
||||
{
|
||||
url: `${baseUrl}/docs/api`,
|
||||
lastModified: new Date(),
|
||||
@@ -64,6 +64,12 @@ export default async function sitemap(): Promise<MetadataRoute.Sitemap> {
|
||||
changeFrequency: 'weekly',
|
||||
priority: 0.7,
|
||||
},
|
||||
{
|
||||
url: `${baseUrl}/docs/admin-panel`,
|
||||
lastModified: new Date(),
|
||||
changeFrequency: 'weekly',
|
||||
priority: 0.8,
|
||||
},
|
||||
{
|
||||
url: `${baseUrl}/docs/architecture`,
|
||||
lastModified: new Date(),
|
||||
@@ -71,16 +77,10 @@ export default async function sitemap(): Promise<MetadataRoute.Sitemap> {
|
||||
priority: 0.7,
|
||||
},
|
||||
{
|
||||
url: `${baseUrl}/examples`,
|
||||
url: `${baseUrl}/docs/how-it-works`,
|
||||
lastModified: new Date(),
|
||||
changeFrequency: 'monthly',
|
||||
priority: 0.7,
|
||||
},
|
||||
{
|
||||
url: `${baseUrl}/community`,
|
||||
lastModified: new Date(),
|
||||
changeFrequency: 'monthly',
|
||||
priority: 0.6,
|
||||
changeFrequency: 'weekly',
|
||||
priority: 0.8,
|
||||
},
|
||||
];
|
||||
}
|
||||
Reference in New Issue
Block a user