feature/branding
ts 117 lines 2.76 KB
Raw
1 import { MetadataRoute } from "next";
2 import { allKtis, allPages, allPosts } from "contentlayer/generated";
3 import { absoluteUrl } from "./seo";
4
5 export const dynamic = "force-static";
6
7 export default function sitemap(): MetadataRoute.Sitemap {
8 const staticRoutes: MetadataRoute.Sitemap = [
9 {
10 url: absoluteUrl("/"),
11 changeFrequency: "weekly",
12 priority: 1,
13 },
14 {
15 url: absoluteUrl("/services"),
16 changeFrequency: "weekly",
17 priority: 0.9,
18 },
19 {
20 url: absoluteUrl("/mail"),
21 changeFrequency: "weekly",
22 priority: 0.9,
23 },
24 {
25 url: absoluteUrl("/auth"),
26 changeFrequency: "weekly",
27 priority: 0.9,
28 },
29 {
30 url: absoluteUrl("/posts"),
31 changeFrequency: "weekly",
32 priority: 0.8,
33 },
34 {
35 url: absoluteUrl("/kti"),
36 changeFrequency: "weekly",
37 priority: 0.8,
38 },
39 {
40 url: absoluteUrl("/heroku-alternative"),
41 changeFrequency: "weekly",
42 priority: 0.8,
43 },
44 {
45 url: absoluteUrl("/railway-alternative"),
46 changeFrequency: "weekly",
47 priority: 0.8,
48 },
49 {
50 url: absoluteUrl("/resend-alternative"),
51 changeFrequency: "weekly",
52 priority: 0.8,
53 },
54 {
55 url: absoluteUrl("/usesend-alternative"),
56 changeFrequency: "weekly",
57 priority: 0.8,
58 },
59 {
60 url: absoluteUrl("/sendgrid-alternative"),
61 changeFrequency: "weekly",
62 priority: 0.8,
63 },
64 {
65 url: absoluteUrl("/auth0-alternative"),
66 changeFrequency: "weekly",
67 priority: 0.8,
68 },
69 {
70 url: absoluteUrl("/clerk-alternative"),
71 changeFrequency: "weekly",
72 priority: 0.8,
73 },
74 {
75 url: absoluteUrl("/supabase-alternative"),
76 changeFrequency: "weekly",
77 priority: 0.8,
78 },
79 {
80 url: absoluteUrl("/neon-alternative"),
81 changeFrequency: "weekly",
82 priority: 0.8,
83 },
84 {
85 url: absoluteUrl("/planetscale-alternative"),
86 changeFrequency: "weekly",
87 priority: 0.8,
88 },
89 ];
90
91 const postRoutes: MetadataRoute.Sitemap = allPosts
92 .filter((post) => post.published)
93 .map((post) => ({
94 url: absoluteUrl(post.slug),
95 lastModified: post.lastmod || post.date,
96 changeFrequency: "monthly",
97 priority: 0.7,
98 }));
99
100 const pageRoutes: MetadataRoute.Sitemap = allPages.map((page) => ({
101 url: absoluteUrl(`/${page.slugAsParams}`),
102 lastModified: page.lastmod,
103 changeFrequency: "yearly",
104 priority: 0.5,
105 }));
106
107 const ktiRoutes: MetadataRoute.Sitemap = allKtis
108 .filter((kti) => kti.published)
109 .map((kti) => ({
110 url: absoluteUrl(kti.slug),
111 lastModified: kti.lastmod,
112 changeFrequency: "monthly",
113 priority: 0.6,
114 }));
115
116 return [...staticRoutes, ...pageRoutes, ...postRoutes, ...ktiRoutes];
117 }