<?xml version="1.0" encoding="UTF-8"?>
<!--
  ============================================================
  legit-play sitemap
  ============================================================
  Strategy (React SPA with static deployment):
    - STATIC PUBLIC routes  → listed here with full <url> entry.
    - DYNAMIC PUBLIC routes → patterns like /live/:matchId,
      /board/:boardId, /ligen/:id or /verbaende/:id cannot be
      enumerated without live data. They are excluded from this
      file. If search-engine coverage of individual match/league
      pages is required, generate a supplemental sitemap at
      deploy time (e.g. via a CI script that queries the API and
      writes sitemap-dynamic.xml, referenced from a sitemap
      index).
    - PROTECTED routes      → require authentication; search
      engines cannot access them and they must not appear here.
    - /login and /register  → intentionally excluded. Both are
      pure client-side redirect stubs straight to Keycloak with
      no indexable content of their own (see LoginPage.tsx /
      RegistrationPage.tsx) — Google's guidance is to keep
      redirecting URLs out of the sitemap. They stay reachable
      for crawlers via robots.txt, just not promoted here.
  ============================================================
-->
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">

  <!-- ── Static public pages ──────────────────────────────── -->

  <!-- Landing / Teaser page — highest priority -->
  <url>
    <loc>https://www.legit-play.com/</loc>
    <lastmod>2026-08-18</lastmod>
    <changefreq>weekly</changefreq>
    <priority>1.0</priority>
  </url>

  <!-- Audience landing pages — primary acquisition funnels -->
  <url>
    <loc>https://www.legit-play.com/fuer-spieler</loc>
    <lastmod>2026-08-18</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://www.legit-play.com/fuer-vereine</loc>
    <lastmod>2026-08-18</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://www.legit-play.com/fuer-verbaende</loc>
    <lastmod>2026-08-18</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://www.legit-play.com/fuer-sponsoren</loc>
    <lastmod>2026-08-18</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>

  <!-- Feature deep-dive pages — static slugs from featureContent.ts -->
  <url>
    <loc>https://www.legit-play.com/features/live-scoring</loc>
    <lastmod>2026-08-18</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://www.legit-play.com/features/autoscoring</loc>
    <lastmod>2026-08-18</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://www.legit-play.com/features/analytics</loc>
    <lastmod>2026-08-18</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://www.legit-play.com/features/liga-turniere</loc>
    <lastmod>2026-08-18</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://www.legit-play.com/features/tablet-app</loc>
    <lastmod>2026-08-18</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://www.legit-play.com/features/tv-cast</loc>
    <lastmod>2026-08-18</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://www.legit-play.com/features/training-intel</loc>
    <lastmod>2026-08-18</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://www.legit-play.com/features/teams-community</loc>
    <lastmod>2026-08-18</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>

  <!-- League / federation directories — public, list live competitions -->
  <url>
    <loc>https://www.legit-play.com/ligen</loc>
    <lastmod>2026-08-18</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://www.legit-play.com/verbaende</loc>
    <lastmod>2026-08-18</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.6</priority>
  </url>

  <!-- Live events overview — publicly visible, updated regularly -->
  <url>
    <loc>https://www.legit-play.com/events/live</loc>
    <lastmod>2026-08-18</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.7</priority>
  </url>

  <!-- Help & support -->
  <url>
    <loc>https://www.legit-play.com/help</loc>
    <lastmod>2026-08-18</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.4</priority>
  </url>

  <!-- Legal — rarely change -->
  <url>
    <loc>https://www.legit-play.com/privacy</loc>
    <lastmod>2026-08-18</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.3</priority>
  </url>
  <url>
    <loc>https://www.legit-play.com/impressum</loc>
    <lastmod>2026-08-18</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.3</priority>
  </url>
  <url>
    <loc>https://www.legit-play.com/terms</loc>
    <lastmod>2026-08-18</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.3</priority>
  </url>

  <!--
    ── Dynamic public pages (excluded — require runtime data) ──
    /live/:matchId
    /live/:eventId/:matchId
    /board/:boardId
    /events/live/:id
    /events/live/:id/compact
    /ligen/:id, /ligen/:id/struktur, /ligen/:id/saisons, /ligen/:id/saisons/:seasonId, /ligen/:id/anmelden
    /verbaende/:id

    ── No-content redirect stubs (excluded — see note above) ──
    /login
    /register

    ── Not meant to rank (excluded — thin/B2B legal annexes, marked noindex) ──
    /lizenzen, /avv, /tom, /subprocessors

    ── Protected pages (excluded — require authentication) ──
    /dashboard
    /tournament, /tournament/:id
    /events, /events/:eventId
    /events/wizard, /events/templates
    /events/manage, /events/manage/:id
    /match
    /points-systems
    /series, /series/:id/standings
    /score/board/:boardId
    /score/board/:boardId/:eventId/:matchId
    /score/:eventId/:matchId
    /organization, /organization/onboarding
    /settings
    /profile/privacy
    /invite/:token
    /tablet-login/:code
    /ligen/:id/struktur/einstellungen, /ligen/:id/struktur/ebenen/:levelId, /ligen/:id/struktur/staffeln/:divisionId
    /ligen/:id/staffelleiter, /verbaende/:id/verbandsleiter
    /meine-events, /nachrichten, /abo, /abo/erfolg, /abo/abgebrochen
    /admin, /admin/*
  -->

</urlset>
