<?xml version="1.0" encoding="UTF-8"?>
<!--
  STATIC SITEMAP — hand-maintained marketing URLs; lists only URLs that
  currently return 200.

  This file is now a CHILD of the generated /sitemap.xml index: at deploy time
  scripts/gen-marketplace.mjs writes public/sitemap.xml as a <sitemapindex>
  referencing this file plus sitemap-listings-*.xml (the generated marketplace
  pages). Do not add a committed public/sitemap.xml back — it is gitignored.

  The site is English-only today, so there are no /xx/landing locale alternates.
  The previous 24-locale hreflang set was removed: those pages don't exist yet
  (they soft-404 to the SPA's NotFound), so listing them produced invalid hreflang
  (alternate-not-found / missing return tags) and wasted crawl budget.

  When a translated /xx/landing page goes live and returns 200, add its <url> here
  AND mirror the reciprocal hreflang block on every page in the set (Google requires
  each alternate to reference all others, including itself).

  BLOG URLS ARE NOT LISTED HERE: /blog, /fr/blog and every post are injected
  into the dist/ copy of this file at build time by scripts/blog/plugin.ts,
  with reciprocal en/fr/x-default hreflang derived from each post's
  translationKey. Keep hand-maintaining ONLY the static pages below.
-->
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
        xmlns:xhtml="http://www.w3.org/1999/xhtml">

  <!-- Marketing homepage (English, canonical) — served directly at the site
       root by the Worker. /landing still serves the same document and
       canonicalises here, so it is intentionally NOT listed separately. -->
  <url>
    <loc>https://teacher-and-me.com/</loc>
    <lastmod>2026-07-03</lastmod>
    <changefreq>monthly</changefreq>
    <priority>1.0</priority>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://teacher-and-me.com/" />
    <xhtml:link rel="alternate" hreflang="en" href="https://teacher-and-me.com/" />
  </url>

  <url>
    <loc>https://teacher-and-me.com/guides</loc>
    <lastmod>2026-05-31</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.7</priority>
  </url>

  <url>
    <loc>https://teacher-and-me.com/privacy</loc>
    <lastmod>2026-05-31</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.3</priority>
  </url>

  <url>
    <loc>https://teacher-and-me.com/terms</loc>
    <lastmod>2026-05-31</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.3</priority>
  </url>

  <url>
    <loc>https://teacher-and-me.com/accessibility</loc>
    <lastmod>2026-05-31</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.3</priority>
  </url>

  <!-- Blog — blog entries injected at build by scripts/blog/plugin.ts -->

  <url>
    <loc>https://teacher-and-me.com/blog</loc>
    <lastmod>2026-07-02</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.7</priority>
    <xhtml:link rel="alternate" hreflang="en" href="https://teacher-and-me.com/blog" />
    <xhtml:link rel="alternate" hreflang="fr" href="https://teacher-and-me.com/fr/blog" />
    <xhtml:link rel="alternate" hreflang="x-default" href="https://teacher-and-me.com/blog" />
  </url>

  <url>
    <loc>https://teacher-and-me.com/fr/blog</loc>
    <lastmod>2026-07-02</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.7</priority>
    <xhtml:link rel="alternate" hreflang="en" href="https://teacher-and-me.com/blog" />
    <xhtml:link rel="alternate" hreflang="fr" href="https://teacher-and-me.com/fr/blog" />
    <xhtml:link rel="alternate" hreflang="x-default" href="https://teacher-and-me.com/blog" />
  </url>

  <url>
    <loc>https://teacher-and-me.com/blog/how-to-track-student-progress</loc>
    <lastmod>2026-07-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
    <xhtml:link rel="alternate" hreflang="en" href="https://teacher-and-me.com/blog/how-to-track-student-progress" />
    <xhtml:link rel="alternate" hreflang="fr" href="https://teacher-and-me.com/fr/blog/suivre-progression-eleves" />
    <xhtml:link rel="alternate" hreflang="x-default" href="https://teacher-and-me.com/blog/how-to-track-student-progress" />
  </url>

  <url>
    <loc>https://teacher-and-me.com/blog/stop-emailing-pdf-worksheets</loc>
    <lastmod>2026-07-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
    <xhtml:link rel="alternate" hreflang="en" href="https://teacher-and-me.com/blog/stop-emailing-pdf-worksheets" />
    <xhtml:link rel="alternate" hreflang="fr" href="https://teacher-and-me.com/fr/blog/faire-travailler-eleves-entre-les-cours" />
    <xhtml:link rel="alternate" hreflang="x-default" href="https://teacher-and-me.com/blog/stop-emailing-pdf-worksheets" />
  </url>

  <url>
    <loc>https://teacher-and-me.com/blog/the-between-session-gap</loc>
    <lastmod>2026-07-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
    <xhtml:link rel="alternate" hreflang="en" href="https://teacher-and-me.com/blog/the-between-session-gap" />
    <xhtml:link rel="alternate" hreflang="fr" href="https://teacher-and-me.com/fr/blog/le-vide-entre-deux-cours" />
    <xhtml:link rel="alternate" hreflang="x-default" href="https://teacher-and-me.com/blog/the-between-session-gap" />
  </url>

  <url>
    <loc>https://teacher-and-me.com/fr/blog/faire-travailler-eleves-entre-les-cours</loc>
    <lastmod>2026-07-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
    <xhtml:link rel="alternate" hreflang="en" href="https://teacher-and-me.com/blog/stop-emailing-pdf-worksheets" />
    <xhtml:link rel="alternate" hreflang="fr" href="https://teacher-and-me.com/fr/blog/faire-travailler-eleves-entre-les-cours" />
    <xhtml:link rel="alternate" hreflang="x-default" href="https://teacher-and-me.com/blog/stop-emailing-pdf-worksheets" />
  </url>

  <url>
    <loc>https://teacher-and-me.com/fr/blog/le-vide-entre-deux-cours</loc>
    <lastmod>2026-07-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
    <xhtml:link rel="alternate" hreflang="en" href="https://teacher-and-me.com/blog/the-between-session-gap" />
    <xhtml:link rel="alternate" hreflang="fr" href="https://teacher-and-me.com/fr/blog/le-vide-entre-deux-cours" />
    <xhtml:link rel="alternate" hreflang="x-default" href="https://teacher-and-me.com/blog/the-between-session-gap" />
  </url>

  <url>
    <loc>https://teacher-and-me.com/fr/blog/suivre-progression-eleves</loc>
    <lastmod>2026-07-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
    <xhtml:link rel="alternate" hreflang="en" href="https://teacher-and-me.com/blog/how-to-track-student-progress" />
    <xhtml:link rel="alternate" hreflang="fr" href="https://teacher-and-me.com/fr/blog/suivre-progression-eleves" />
    <xhtml:link rel="alternate" hreflang="x-default" href="https://teacher-and-me.com/blog/how-to-track-student-progress" />
  </url>

</urlset>
