<?xml version="1.0" encoding="UTF-8"?>
<!--
  Sitemap for chesspeak.app — listed URLs are the truly public ones (logged-out users
  can reach them without redirecting to /auth). Auth-gated routes (/climb, /profile,
  /arcade, /coach, etc.) are intentionally excluded — they redirect logged-out
  visitors and would waste crawl budget.

  When adding new public routes (e.g. /learn/<theme> in SEO Phase 2):
    1. Add a new <url> entry below
    2. Bump <lastmod> on the affected entries (Google ignores small drift, but a
       fresh date helps)
    3. After deploy, resubmit the sitemap in Google Search Console.

  Note: <changefreq> and <priority> are largely ignored by Google. They are kept
  here as hints for other crawlers (Bing, Yandex) and harmless otherwise.
-->
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">

  <url>
    <loc>https://chesspeak.app/</loc>
    <lastmod>2026-05-03</lastmod>
    <changefreq>weekly</changefreq>
    <priority>1.0</priority>
  </url>

  <url>
    <loc>https://chesspeak.app/auth</loc>
    <lastmod>2026-05-03</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>

  <url>
    <loc>https://chesspeak.app/privacy</loc>
    <lastmod>2026-05-03</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.3</priority>
  </url>

  <url>
    <loc>https://chesspeak.app/terms</loc>
    <lastmod>2026-05-03</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.3</priority>
  </url>

</urlset>
