From b7220ca0570fa1f610210a2be8a4a396054ef0f4 Mon Sep 17 00:00:00 2001 From: Jared Schoeny Date: Wed, 5 Nov 2025 09:15:30 -1000 Subject: [PATCH] Add canonical urls --- src/app/discover/page.tsx | 7 +++++++ src/app/faq/page.tsx | 6 +++++- src/app/hack/[slug]/page.tsx | 9 +-------- src/app/layout.tsx | 1 + src/app/page.tsx | 7 +++++++ src/app/privacy/page.tsx | 6 +++++- src/app/submit/page.tsx | 7 +++++++ src/app/terms/page.tsx | 6 +++++- 8 files changed, 38 insertions(+), 11 deletions(-) diff --git a/src/app/discover/page.tsx b/src/app/discover/page.tsx index 5a759ba..714d915 100644 --- a/src/app/discover/page.tsx +++ b/src/app/discover/page.tsx @@ -1,4 +1,11 @@ import DiscoverBrowser from "@/components/Discover/DiscoverBrowser"; +import type { Metadata } from "next"; + +export const metadata: Metadata = { + alternates: { + canonical: "/discover", + }, +}; export default function DiscoverPage() { return ( diff --git a/src/app/faq/page.tsx b/src/app/faq/page.tsx index 7fbfe46..d5d60f6 100644 --- a/src/app/faq/page.tsx +++ b/src/app/faq/page.tsx @@ -1,12 +1,16 @@ import React from "react"; +import type { Metadata } from "next"; import ReactMarkdown from "react-markdown"; import remarkGfm from "remark-gfm"; import rehypeSlug from "rehype-slug"; import entriesMd from "./entries.md"; -export const metadata = { +export const metadata: Metadata = { title: "FAQ", description: "Frequently asked questions about Hackdex, how it works, and what makes it unique.", + alternates: { + canonical: "/faq", + }, }; export default function FAQPage() { diff --git a/src/app/hack/[slug]/page.tsx b/src/app/hack/[slug]/page.tsx index b9f5ee4..3277a36 100644 --- a/src/app/hack/[slug]/page.tsx +++ b/src/app/hack/[slug]/page.tsx @@ -39,14 +39,7 @@ export async function generateMetadata({ params }: HackDetailProps): Promise diff --git a/src/app/privacy/page.tsx b/src/app/privacy/page.tsx index 5351487..9254bbd 100644 --- a/src/app/privacy/page.tsx +++ b/src/app/privacy/page.tsx @@ -1,11 +1,15 @@ import React from "react"; +import type { Metadata } from "next"; import ReactMarkdown from "react-markdown"; import remarkGfm from "remark-gfm"; import rehypeSlug from "rehype-slug"; import privacyMd from "@/../docs/legal/PRIVACY.md"; -export const metadata = { +export const metadata: Metadata = { title: "Privacy Policy", + alternates: { + canonical: "/privacy", + }, }; export default function PrivacyPage() { diff --git a/src/app/submit/page.tsx b/src/app/submit/page.tsx index 0d732fd..1095a7e 100644 --- a/src/app/submit/page.tsx +++ b/src/app/submit/page.tsx @@ -1,6 +1,13 @@ import HackForm from "@/components/Hack/HackForm"; import { createClient } from "@/utils/supabase/server"; import SubmitAuthOverlay from "@/components/Submit/SubmitAuthOverlay"; +import { Metadata } from "next"; + +export const metadata: Metadata = { + alternates: { + canonical: "/submit", + }, +}; export default async function SubmitPage() { const supabase = await createClient(); diff --git a/src/app/terms/page.tsx b/src/app/terms/page.tsx index 01a5a1e..b018829 100644 --- a/src/app/terms/page.tsx +++ b/src/app/terms/page.tsx @@ -1,11 +1,15 @@ import React from "react"; +import type { Metadata } from "next"; import ReactMarkdown from "react-markdown"; import remarkGfm from "remark-gfm"; import rehypeSlug from "rehype-slug"; import termsMd from "@/../docs/legal/TERMS.md"; -export const metadata = { +export const metadata: Metadata = { title: "Terms of Service", + alternates: { + canonical: "/terms", + }, }; export default function TermsPage() {