Files
pulse/app/sitemap.ts
Usman Baig 066f1288f1 feat: trim integration pages from 75 to 25 + migrate to MDX
- Add dedicatedPage flag to integration registry (25 true, 50 false)
- Delete hardcoded nextjs/react/vue/wordpress route pages (wrong metadata)
- Hub page routes non-dedicated integrations to /integrations/script-tag
- Add 301 redirects for 50 removed slugs → /integrations/script-tag
- Migrate guide content from TSX to MDX (content/integrations/*.mdx)
- Add gray-matter, next-mdx-remote, remark-gfm dependencies
- Add content loader (lib/integration-content.ts) matching ciphera-website pattern
- Add prebuild script for integration guide index generation
- Sitemap reduced from 83 to 35 URLs with real lastmod dates
- Remove seoDescription from registry (now in MDX frontmatter)
2026-03-29 00:28:47 +01:00

50 lines
1.8 KiB
TypeScript

import type { MetadataRoute } from 'next'
import { integrations } from '@/lib/integrations'
import { getIntegrationGuides } from '@/lib/integration-content'
const BASE_URL = 'https://pulse.ciphera.net'
export default function sitemap(): MetadataRoute.Sitemap {
const guides = getIntegrationGuides()
const guidesBySlug = new Map(guides.map((g) => [g.slug, g]))
const publicRoutes = [
{ url: '', priority: 1.0, changeFrequency: 'weekly' as const },
{ url: '/about', priority: 0.8, changeFrequency: 'monthly' as const },
{ url: '/features', priority: 0.9, changeFrequency: 'monthly' as const },
{ url: '/pricing', priority: 0.9, changeFrequency: 'monthly' as const },
{ url: '/faq', priority: 0.7, changeFrequency: 'monthly' as const },
{ url: '/changelog', priority: 0.6, changeFrequency: 'weekly' as const },
{ url: '/installation', priority: 0.8, changeFrequency: 'monthly' as const },
{ url: '/integrations', priority: 0.8, changeFrequency: 'monthly' as const },
{ url: '/integrations/script-tag', priority: 0.6, changeFrequency: 'monthly' as const },
]
const integrationRoutes = integrations
.filter((i) => i.dedicatedPage)
.map((i) => {
const guide = guidesBySlug.get(i.id)
return {
url: `/integrations/${i.id}`,
priority: 0.7,
changeFrequency: 'monthly' as const,
lastModified: guide?.date ? new Date(guide.date) : new Date('2026-03-28'),
}
})
return [
...publicRoutes.map((route) => ({
url: `${BASE_URL}${route.url}`,
lastModified: new Date('2026-03-28'),
changeFrequency: route.changeFrequency,
priority: route.priority,
})),
...integrationRoutes.map((route) => ({
url: `${BASE_URL}${route.url}`,
lastModified: route.lastModified,
changeFrequency: route.changeFrequency,
priority: route.priority,
})),
]
}