feat: implement basic seo (metadata, sitemap, robots)

This commit is contained in:
dyzulk
2025-12-30 12:52:18 +07:00
parent dd6444ec2c
commit a0353c6efd
3 changed files with 106 additions and 2 deletions

View File

@@ -11,11 +11,57 @@ import { I18nProvider } from '@/components/providers/I18nProvider';
export const metadata: Metadata = { export const metadata: Metadata = {
metadataBase: new URL(process.env.NEXT_PUBLIC_APP_URL || 'https://trustlab.dyzulk.com'),
title: { title: {
template: '%s | TrustLab - PKI & Certificate Management', template: '%s | TrustLab - PKI & Certificate Management',
default: 'TrustLab - PKI & Certificate Management', default: 'TrustLab - Secure PKI & Certificate Management System',
},
description: 'Enterprise-grade Certificate Authority and PKI Management System. Securely manage SSL/TLS certificates, internal CAs, and digital signatures.',
keywords: ['PKI', 'Certificate Authority', 'SSL', 'TLS', 'Security', 'Encryption', 'DevOps', 'Certificate Management'],
authors: [{ name: 'TrustLab Team' }],
creator: 'TrustLab',
publisher: 'TrustLab',
robots: {
index: true,
follow: true,
googleBot: {
index: true,
follow: true,
'max-video-preview': -1,
'max-image-preview': 'large',
'max-snippet': -1,
},
},
openGraph: {
type: 'website',
locale: 'en_US',
url: 'https://trustlab.dyzulk.com',
siteName: 'TrustLab',
title: 'TrustLab - Secure PKI & Certificate Management',
description: 'Enterprise-grade Certificate Authority and PKI Management System.',
images: [
{
url: '/banner.png',
width: 1200,
height: 630,
alt: 'TrustLab Platform',
},
],
},
twitter: {
card: 'summary_large_image',
title: 'TrustLab - PKI & Certificate Management',
description: 'Securely manage SSL/TLS certificates and internal CAs with TrustLab.',
images: ['/banner.png'],
creator: '@dyzulk',
},
icons: {
icon: '/favicon.ico',
shortcut: '/favicon.ico',
},
verification: {
google: 'verification_code_placeholder', // User needs to replace this
}, },
description: 'Advanced Certificate Authority and PKI Management System',
}; };
export default function RootLayout({ export default function RootLayout({

14
src/app/robots.ts Normal file
View File

@@ -0,0 +1,14 @@
import { MetadataRoute } from 'next';
export default function robots(): MetadataRoute.Robots {
const baseUrl = process.env.NEXT_PUBLIC_APP_URL || 'https://trustlab.dyzulk.com';
return {
rules: {
userAgent: '*',
allow: '/',
disallow: ['/dashboard/', '/api/'],
},
sitemap: `${baseUrl}/sitemap.xml`,
};
}

44
src/app/sitemap.ts Normal file
View File

@@ -0,0 +1,44 @@
import { MetadataRoute } from 'next';
export default function sitemap(): MetadataRoute.Sitemap {
const baseUrl = process.env.NEXT_PUBLIC_APP_URL || 'https://trustlab.dyzulk.com';
return [
{
url: baseUrl,
lastModified: new Date(),
changeFrequency: 'daily',
priority: 1,
},
{
url: `${baseUrl}/signin`,
lastModified: new Date(),
changeFrequency: 'monthly',
priority: 0.8,
},
{
url: `${baseUrl}/signup`,
lastModified: new Date(),
changeFrequency: 'monthly',
priority: 0.8,
},
{
url: `${baseUrl}/contact`,
lastModified: new Date(),
changeFrequency: 'monthly',
priority: 0.7,
},
{
url: `${baseUrl}/tools/key-generator`,
lastModified: new Date(),
changeFrequency: 'weekly',
priority: 0.9,
},
{
url: `${baseUrl}/tools/chat-id`,
lastModified: new Date(),
changeFrequency: 'weekly',
priority: 0.9,
},
];
}