<?xml version="1.0" encoding="UTF-8"?>
<!--
  UI-054, 2026-08-27: this file's own original rule — "add a <url> here only when a path becomes a
  real, independently addressable page" — is exactly why About/Contact/Gallery/Terms/Privacy/Refund
  are added below. They were hash routes (#about, #terms, ...) until this task, and a hash fragment
  is never sent to the server at all, so no sitemap entry could ever have made them separately
  fetchable regardless of what this file said. app-v2/src/App.tsx's PUBLIC_PATH_ROUTES + vercel.json's
  matching rewrites made them real paths; this is the direct consequence, not a reversal of the rule.
  The authenticated app shell (#workspace, #settings, ...) stays hash-only and unlisted, matching
  robots.txt's Disallow set — crawlability doesn't apply there, it's behind sign-in regardless.
-->
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>https://www.buildwithapercu.com/</loc>
    <changefreq>weekly</changefreq>
    <priority>1.0</priority>
  </url>
  <url>
    <loc>https://www.buildwithapercu.com/gallery</loc>
    <changefreq>weekly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://www.buildwithapercu.com/about</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://www.buildwithapercu.com/contact</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://www.buildwithapercu.com/terms</loc>
    <changefreq>monthly</changefreq>
    <priority>0.3</priority>
  </url>
  <url>
    <loc>https://www.buildwithapercu.com/privacy</loc>
    <changefreq>monthly</changefreq>
    <priority>0.3</priority>
  </url>
  <url>
    <loc>https://www.buildwithapercu.com/refund</loc>
    <changefreq>monthly</changefreq>
    <priority>0.3</priority>
  </url>
</urlset>
