Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 3m43s
Build & Deploy / 🏗️ Build (push) Failing after 37s
Build & Deploy / 🧪 QA (push) Failing after 3m40s
Build & Deploy / 🚀 Deploy (push) Has been skipped
Build & Deploy / 🩺 Health Check (push) Has been skipped
Build & Deploy / 🔔 Notify (push) Successful in 2s
58 lines
1.6 KiB
TypeScript
58 lines
1.6 KiB
TypeScript
import { MetadataRoute } from "next";
|
|
import { getAllPosts } from "../src/lib/posts";
|
|
import { technologies } from "./technologies/[slug]/data";
|
|
|
|
/**
|
|
* Sitemap Generator
|
|
*
|
|
* Standard Next.js 15 App Router sitemap generation.
|
|
* This file dynamically generates /sitemap.xml
|
|
*/
|
|
export default async function sitemap(): Promise<MetadataRoute.Sitemap> {
|
|
const allPosts = await getAllPosts();
|
|
const baseUrl = process.env.NEXT_PUBLIC_BASE_URL || "https://mintel.me";
|
|
|
|
// 1. Core Pages
|
|
const routes = [
|
|
"",
|
|
"/about",
|
|
"/blog",
|
|
"/case-studies",
|
|
"/case-studies/klz-cables",
|
|
"/contact",
|
|
"/websites",
|
|
].map((route) => ({
|
|
url: `${baseUrl}${route}`,
|
|
lastModified: new Date(),
|
|
changeFrequency: "monthly" as const,
|
|
priority: route === "" ? 1.0 : 0.8,
|
|
}));
|
|
|
|
// 2. Dynamic Blog Posts
|
|
const blogRoutes = allPosts.map((post) => ({
|
|
url: `${baseUrl}/blog/${post.slug}`,
|
|
lastModified: new Date(post.date),
|
|
changeFrequency: "monthly" as const,
|
|
priority: 0.7,
|
|
}));
|
|
|
|
// 3. Technology Detail Pages
|
|
const techRoutes = Object.keys(technologies).map((slug) => ({
|
|
url: `${baseUrl}/technologies/${slug}`,
|
|
lastModified: new Date(),
|
|
changeFrequency: "monthly" as const,
|
|
priority: 0.6,
|
|
}));
|
|
|
|
// 4. Tag Pages
|
|
const allTags = [...new Set(allPosts.flatMap((post) => post.tags))];
|
|
const tagRoutes = allTags.map((tag) => ({
|
|
url: `${baseUrl}/tags/${tag}`,
|
|
lastModified: new Date(),
|
|
changeFrequency: "weekly" as const,
|
|
priority: 0.3,
|
|
}));
|
|
|
|
return [...routes, ...blogRoutes, ...techRoutes, ...tagRoutes];
|
|
}
|