import type { MetadataRoute } from 'next' import { SITE_URL } from '@/app/metadata' import { getAllCategories } from '@/lib/categories' import { getAllPostsMeta } from '@/lib/posts' import { getAllTags } from '@/lib/tags' import { slugify } from '@/utils/slug' export default function sitemap(): MetadataRoute.Sitemap { const posts = getAllPostsMeta() const lastPostUpdate = posts .map((post) => post.updated ?? post.date) .toSorted() .at(-1) return [ { url: SITE_URL, lastModified: lastPostUpdate, changeFrequency: 'weekly', priority: 1 }, ...['about', 'projects', 'setup'].map((page) => ({ url: `${SITE_URL}/${page}`, changeFrequency: 'monthly' as const, priority: 0.8, })), ...posts.map((post) => ({ url: `${SITE_URL}/posts/${post.slug}`, lastModified: post.updated ?? post.date, changeFrequency: 'monthly' as const, priority: 0.9, })), { url: `${SITE_URL}/categories`, changeFrequency: 'weekly', priority: 0.4 }, ...Object.keys(getAllCategories()).map((category) => ({ url: `${SITE_URL}/categories/${slugify(category)}`, changeFrequency: 'weekly' as const, priority: 0.3, })), { url: `${SITE_URL}/tags`, changeFrequency: 'weekly', priority: 0.4 }, ...Object.keys(getAllTags()).map((tag) => ({ url: `${SITE_URL}/tags/${slugify(tag)}`, changeFrequency: 'weekly' as const, priority: 0.3, })), ] }