/** * Dynamic Sitemap Generation * Generates sitemap with all school pages and main routes */ import { MetadataRoute } from 'next'; import { fetchSchools } from '@/lib/api'; const BASE_URL = 'https://schoolcompare.co.uk'; export default async function sitemap(): Promise { // Static pages const staticPages: MetadataRoute.Sitemap = [ { url: BASE_URL, lastModified: new Date(), changeFrequency: 'daily', priority: 1.0, }, { url: `${BASE_URL}/compare`, lastModified: new Date(), changeFrequency: 'weekly', priority: 0.8, }, { url: `${BASE_URL}/rankings`, lastModified: new Date(), changeFrequency: 'weekly', priority: 0.8, }, ]; // Fetch all schools (in batches if necessary) try { const schoolsData = await fetchSchools({ page: 1, page_size: 10000, // Fetch all schools }); const schoolPages: MetadataRoute.Sitemap = schoolsData.schools.map((school) => ({ url: `${BASE_URL}/school/${school.urn}`, lastModified: new Date(), changeFrequency: 'monthly', priority: 0.6, })); return [...staticPages, ...schoolPages]; } catch (error) { console.error('Failed to generate sitemap:', error); // Return just static pages if school fetch fails return staticPages; } }