<?xml version="1.0" encoding="UTF-8"?>
<!--
  The public URLs of https://mapadecampo.com — both of them.

  WHAT IS IN HERE, AND WHY IT IS SO SHORT

  A sitemap is a list of URLs their owner is asking to have indexed. Every entry below was checked
  against `src/app/router.tsx` for one property before it was written down: it renders for a
  visitor with no session.

  `/sign-in` and `/sign-up` pass that check and are still absent, which is the one entry here that
  needs explaining. They are the *product's* front door, not the site's: the edge redirects them —
  and every other application route — from the public host to `app.` (`$mdc_send_to_app` in
  `infrastructure/nginx/prod.conf`), so that a person who signs in from the landing page lands on
  the one origin the deployment is configured for. Listing a URL the edge answers with a 301 is
  exactly the mistake the `/download-app` note below is about. The cost is that "mapadecampo
  login" finds the home page rather than the form, which is where the Entrar button is anyway.

  `/download-app` did not, and it is the reason the check exists rather than being assumed. It
  reads like a public page and it is not: in the router it sits inside `RequireSession` +
  `RequireOrg`, under `AppShell`, so an anonymous visitor is redirected to `/sign-in` and a
  crawler is handed a sign-in shell. Listing it would have been an invitation to index a redirect.

  The token-bearing routes (`/verify-email`, `/reset-password`, `/invitations/accept`) are equally
  reachable without a session and equally absent: they mean nothing without the token that arrives
  with them. `robots.txt` disallows them for the same reason.

  NO `lastmod`, `changefreq` OR `priority`

  This file is written by hand and shipped from `public/`, so a `lastmod` would be a date nobody
  updates — and a sitemap whose `lastmod` never moves is worse than one that omits it, because a
  crawler that has learned to distrust the field starts distrusting the file. `changefreq` and
  `priority` are ignored by every major crawler and have been for years.

  Kept in step with the router by `src/app/public-urls.test.ts`, which fails when a URL listed
  here is no longer reachable signed out.
-->
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <!-- The landing page. The only URL whose content a crawler sees without running JavaScript:
       the build prerenders it into `index.html` (`scripts/prerender.mjs`). -->
  <url>
    <loc>https://mapadecampo.com/</loc>
  </url>
  <!-- The privacy policy. A stable public URL by contract — the mobile sign-in screen links to
       exactly this address, and the app stores' listings point at it. -->
  <url>
    <loc>https://mapadecampo.com/privacidade</loc>
  </url>
</urlset>
