<?xml version="1.0" encoding="UTF-8"?>
<!--
  Xpensio sitemap index (static).

  Why a static index file at /sitemap.xml instead of serving the sitemap
  directly from the FastAPI backend?

  The Kubernetes ingress routes every non-/api/* path to the frontend
  SPA, which by default returns index.html. When Google Search Console
  fetched `/sitemap.xml` it therefore received a React shell (`Sitemap
  is HTML` error) instead of XML.

  A `<sitemapindex>` is a first-class sitemap format documented at
  https://www.sitemaps.org/protocol.html — Googlebot fetches the index,
  then follows each `<loc>` to the referenced sitemap. So we serve this
  tiny static XML file at the SPA level and delegate the dynamic list
  (including auto-generated blog-post URLs) to the backend endpoint.

  Update `<lastmod>` any time you materially expand the URL set (Phase
  bumps, new public routes). Blog posts don't need lastmod bumps here
  because the referenced sub-sitemap includes per-post lastmod tags.
-->
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <sitemap>
    <loc>https://app.xpensio.io/api/seo/sitemap.xml</loc>
    <lastmod>2026-07-22</lastmod>
  </sitemap>
</sitemapindex>
