All files / web/src/app sitemap.ts

100% Statements 56/56
100% Branches 9/9
100% Functions 1/1
100% Lines 56/56

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 571x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 8x 8x 8x 8x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 5x 5x 5x 5x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 5x 5x 5x 5x 1x 1x 1x 1x  
import type { MetadataRoute } from 'next'
import { CREATE_TOOLS } from '@/lib/create-tools/createToolList'
 
export default function sitemap(): MetadataRoute.Sitemap {
  const baseUrl = 'https://abaci.one'
 
  // Main pages
  const routes = [
    '',
    '/arcade',
    '/create',
    '/guide',
    '/about',
    '/why-abacus',
    '/for-teachers',
    '/features/worksheet-parsing',
  ].map((route) => ({
    url: `${baseUrl}${route}`,
    lastModified: new Date(),
    changeFrequency: 'weekly' as const,
    priority: route === '' ? 1 : 0.8,
  }))
 
  // Arcade games
  const games = [
    '/arcade/rithmomachia',
    '/arcade/complement-race',
    '/arcade/matching',
    '/arcade/memory-quiz',
    '/arcade/card-sorting',
  ].map((route) => ({
    url: `${baseUrl}${route}`,
    lastModified: new Date(),
    changeFrequency: 'monthly' as const,
    priority: 0.6,
  }))
 
  // Guide pages
  const guides = ['/arcade/rithmomachia/guide'].map((route) => ({
    url: `${baseUrl}${route}`,
    lastModified: new Date(),
    changeFrequency: 'monthly' as const,
    priority: 0.5,
  }))
 
  // Create tools, straight off the registry so a new tool is listed the day it
  // ships. Tier drives priority the same way games sit below the top routes.
  const createTools = CREATE_TOOLS.map((tool) => ({
    url: `${baseUrl}${tool.href}`,
    lastModified: new Date(),
    changeFrequency: 'monthly' as const,
    priority: tool.tier === 'primary' ? 0.8 : 0.6,
  }))
 
  return [...routes, ...games, ...guides, ...createTools]
}