feat: add SEO metadata and Open Graph helpers
Some checks failed
Deploy / deploy (push) Has been cancelled
Some checks failed
Deploy / deploy (push) Has been cancelled
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -8,8 +8,12 @@ import { Footer } from "@/components/layout/Footer";
|
||||
import "./globals.css";
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: "Project Afterlife",
|
||||
title: {
|
||||
default: "Project Afterlife",
|
||||
template: "%s | Project Afterlife",
|
||||
},
|
||||
description: "Preserving online games that deserve a second life",
|
||||
metadataBase: new URL(process.env.NEXT_PUBLIC_SITE_URL || "https://projectafterlife.dev"),
|
||||
};
|
||||
|
||||
export default async function LocaleLayout({
|
||||
|
||||
35
apps/web/src/lib/metadata.ts
Normal file
35
apps/web/src/lib/metadata.ts
Normal file
@@ -0,0 +1,35 @@
|
||||
import type { Metadata } from "next";
|
||||
|
||||
const BASE_URL = process.env.NEXT_PUBLIC_SITE_URL || "https://projectafterlife.dev";
|
||||
|
||||
export function createMetadata({
|
||||
title,
|
||||
description,
|
||||
image,
|
||||
path = "",
|
||||
}: {
|
||||
title: string;
|
||||
description: string;
|
||||
image?: string;
|
||||
path?: string;
|
||||
}): Metadata {
|
||||
const url = `${BASE_URL}${path}`;
|
||||
return {
|
||||
title: `${title} | Project Afterlife`,
|
||||
description,
|
||||
openGraph: {
|
||||
title,
|
||||
description,
|
||||
url,
|
||||
siteName: "Project Afterlife",
|
||||
images: image ? [{ url: image, width: 1200, height: 630 }] : [],
|
||||
type: "website",
|
||||
},
|
||||
twitter: {
|
||||
card: "summary_large_image",
|
||||
title,
|
||||
description,
|
||||
images: image ? [image] : [],
|
||||
},
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user