<?xml version="1.0" encoding="UTF-8"?>
<!--
  The public surface, and only the public surface.

  NOT here, on purpose: `/join/g/:code` (an invitation naming a real person and a
  real hour — `Disallow`ed in robots.txt and served `noindex`), `/join` (a
  conversion endpoint reached from a QR code, `noindex, follow`), and every
  authenticated route. `src/lib/seo.test.ts` checks this list against the router
  and against `OUT_OF_SCOPE_ROUTES`, so a new public page cannot be forgotten
  here and a gated one cannot leak in.

  The origin must match `PUBLIC_ORIGIN` in `src/lib/capacitor.ts`. It is the one
  place a sitemap is allowed to be wrong in a way nothing else notices.
-->
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>https://eagleproj.com/</loc>
    <changefreq>weekly</changefreq>
    <priority>1.0</priority>
  </url>
  <url>
    <loc>https://eagleproj.com/for-courses</loc>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://eagleproj.com/legal</loc>
    <changefreq>yearly</changefreq>
    <priority>0.3</priority>
  </url>
  <url>
    <loc>https://eagleproj.com/privacy</loc>
    <changefreq>yearly</changefreq>
    <priority>0.3</priority>
  </url>
  <url>
    <loc>https://eagleproj.com/terms</loc>
    <changefreq>yearly</changefreq>
    <priority>0.3</priority>
  </url>
  <url>
    <loc>https://eagleproj.com/cookies</loc>
    <changefreq>yearly</changefreq>
    <priority>0.3</priority>
  </url>
</urlset>
