52 lines
1.2 KiB
TypeScript
52 lines
1.2 KiB
TypeScript
import type { MetadataRoute } from "next";
|
|
import { fallbackLocale, locales } from "@/config/i18n";
|
|
import { blogPosts } from "@/features/marketing/blogData";
|
|
|
|
const baseUrl = process.env.NEXT_PUBLIC_SITE_URL ?? "http://localhost:3000";
|
|
|
|
export default function sitemap(): MetadataRoute.Sitemap {
|
|
const lastModified = new Date();
|
|
|
|
const entries: MetadataRoute.Sitemap = [
|
|
{
|
|
url: `${baseUrl}/`,
|
|
lastModified,
|
|
changeFrequency: "weekly",
|
|
priority: 1
|
|
}
|
|
];
|
|
|
|
const marketingSegments = ["about", "pricing", "faq", "blog"] as const;
|
|
|
|
locales.forEach((locale) => {
|
|
const localeBase = `${baseUrl}/${locale}`;
|
|
|
|
entries.push({
|
|
url: localeBase,
|
|
lastModified,
|
|
changeFrequency: "weekly",
|
|
priority: locale === fallbackLocale ? 1 : 0.9
|
|
});
|
|
|
|
marketingSegments.forEach((segment) => {
|
|
entries.push({
|
|
url: `${localeBase}/${segment}`,
|
|
lastModified,
|
|
changeFrequency: "weekly",
|
|
priority: 0.7
|
|
});
|
|
});
|
|
|
|
blogPosts.forEach((post) => {
|
|
entries.push({
|
|
url: `${localeBase}/blog/${post.slug}`,
|
|
lastModified,
|
|
changeFrequency: "weekly",
|
|
priority: 0.6
|
|
});
|
|
});
|
|
});
|
|
|
|
return entries;
|
|
}
|