Openstatus
www.openstatus.dev
1import {
2 getBlogPosts,
3 getChangelogPosts,
4 getComparePages,
5 getProductPages,
6 getToolsPages,
7 getUnrelatedPages,
8} from "@/content/utils";
9import type { MetadataRoute } from "next";
10
11const allPosts = getBlogPosts();
12const allChangelogs = getChangelogPosts();
13const allComparisons = getComparePages();
14const allUnrelated = getUnrelatedPages().filter(
15 (page) => page.slug !== "not-found",
16);
17const allProducts = getProductPages();
18const allPlaygrounds = getToolsPages().filter(
19 (tool) => tool.slug !== "checker-slug",
20);
21
22export default function sitemap(): MetadataRoute.Sitemap {
23 const blogs = allPosts.map((post) => ({
24 url: `https://www.openstatus.dev/blog/${post.slug}`,
25 lastModified: post.metadata.publishedAt, // date format should be YYYY-MM-DD
26 }));
27
28 const changelogs = allChangelogs.map((post) => ({
29 url: `https://www.openstatus.dev/changelog/${post.slug}`,
30 lastModified: post.metadata.publishedAt, // date format should be YYYY-MM-DD
31 }));
32
33 const comparisons = allComparisons.map((comparison) => ({
34 url: `https://www.openstatus.dev/compare/${comparison.slug}`,
35 lastModified: comparison.metadata.publishedAt,
36 }));
37
38 const landings = allUnrelated.map((page) => ({
39 url: `https://www.openstatus.dev/${page.slug}`,
40 lastModified: page.metadata.publishedAt,
41 }));
42
43 const products = allProducts.map((product) => ({
44 url: `https://www.openstatus.dev/${product.slug}`,
45 lastModified: product.metadata.publishedAt,
46 }));
47
48 const playgrounds = allPlaygrounds.map((playground) => ({
49 url: `https://www.openstatus.dev/play/${playground.slug}`,
50 lastModified: playground.metadata.publishedAt,
51 }));
52
53 return [
54 ...blogs,
55 ...changelogs,
56 ...comparisons,
57 ...landings,
58 ...products,
59 ...playgrounds,
60 ];
61}