<?xml version="1.0" encoding="UTF-8"?>
<!--
  Shift28 — https://shift28jp.com/sitemap.xml

  Short on purpose. This is a single-page app with one public marketing page,
  two ways to sign in, and two published policies; there is no long tail of
  content to enumerate, and a sitemap padded with routes that redirect to a
  login screen teaches a crawler to distrust the whole file.

  The share links (/shared/<token>/) are deliberately absent and additionally
  disallowed in robots.txt and sent with `X-Robots-Tag: noindex` by nginx: they
  are one student's work record behind an unguessable token, and a search result
  is exactly the wrong place for one to end up.

  `lastmod` is the date the content of each page last changed, not the date of
  the last deploy. Bumping it on every release is the fastest way to make a
  crawler ignore the field.
-->
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>https://shift28jp.com/</loc>
    <lastmod>2026-09-29</lastmod>
    <changefreq>weekly</changefreq>
    <priority>1.0</priority>
  </url>
  <url>
    <loc>https://shift28jp.com/register</loc>
    <lastmod>2026-09-29</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://shift28jp.com/login</loc>
    <lastmod>2026-09-29</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://shift28jp.com/legal/terms</loc>
    <lastmod>2026-09-29</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.3</priority>
  </url>
  <url>
    <loc>https://shift28jp.com/legal/privacy</loc>
    <lastmod>2026-09-29</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.3</priority>
  </url>
</urlset>
