<?xml version="1.0" encoding="UTF-8"?>
<!--
  sitemap.xml (H10 SEO-Grundlagen)

  MANUELL GEPFLEGT. Bewusste Abweichung vom Gap-Plan (Auftrag 2, Punkt 1): es gibt
  KEINEN Build- oder Deploy-Hook, der <lastmod> setzt. Ein solcher Hook waere eine
  zusaetzliche Verhaltensflaeche in deploy.yml; bei fuenf statischen Seiten ist der
  Preis hoeher als der Nutzen. Wer eine oeffentliche Route in
  frontend/src/app/app.routes.constants.ts hinzufuegt oder entfernt, pflegt diese
  Datei von Hand nach und setzt <lastmod> der betroffenen Eintraege auf das Datum
  der Aenderung.

  Enthalten sind nur oeffentlich erreichbare Inhaltsseiten (kein authGuard), gemessen
  gegen app.routes.constants.ts:
    /                PUBLIC_ROUTES (LandingComponent)
    /register        PUBLIC_ROUTES (RegisterComponent)
    /agb             LEGAL_ROUTES  (AgbComponent)
    /impressum       LEGAL_ROUTES  (ImpressumComponent)
    /datenschutz     LEGAL_ROUTES  (DatenschutzComponent)
    /av-vertrag      LEGAL_ROUTES  (AvVertragComponent, ergaenzt 2026-08-23)
      Seit der Scharfschaltung traegt die Seite den vollstaendigen Kunden-AV-Vertrag;
      § 19 Abs. 1 sagt zu, dass die geltende Fassung genau dort "dauerhaft abrufbar
      und speicherbar" ist. Bis dahin war sie hier ausdruecklich ausgeschlossen, weil
      sie ein Platzhalter war; nach der Scharfschaltung war dieser Ausschluss
      veraltet (DoD R1, Codex-NB-3). Zwei Bindestriche stehen hier bewusst nicht:
      sie sind in einem XML-Kommentar nicht erlaubt und machen die Datei ungueltig.
    /anbieterwechsel LEGAL_ROUTES  (AnbieterwechselComponent, ergaenzt 2026-08-22)
      Das Online-Register nach EU Data Act. Annex Ziff. 3.2 der AGB bezeichnet es als
      "auf der Website des Anbieters verfuegbar" und Art. 29 Abs. 6 verlangt einen
      eigenen Bereich der Website; eine Seite, die der Vertrag als auffindbar zusagt,
      gehoert in die Sitemap.

  KEINE ZEILENNUMMERN in dieser Liste: bis 2026-08-22 standen hier "Zeile 251" fuer /agb,
  "Zeile 240" fuer /impressum und "Zeile 246" fuer /datenschutz. Gemessen lagen die
  Komponenten zu diesem Zeitpunkt auf 261/266/271 — und per `git show HEAD:` geprueft
  waren die Zahlen schon vorher falsch. Eine Zeilennummer in Prosa ist der klassische
  Zweitwahrheits-Kandidat: sie altert bei jeder Einfuegung darueber, ohne dass etwas rot
  wird. Der Komponentenname genuegt zum Auffinden und altert nicht.

  Bewusst NICHT enthalten:
    /login, /verify-email, /set-password, /e-mail-bestaetigen : oeffentlich, aber
      ohne indexierbaren Inhalt (die letzten drei sind Token-Deep-Links aus E-Mails)
    /widerruf : existiert nicht mehr (entfernt 2026-08-14, siehe Kommentar bei
      LEGAL_ROUTES in app.routes.constants.ts)
    die 13 Legacy-Redirects (/dashboard, /belege, ...) : clientseitige Weiterleitungen
      nach /app/*, kein eigener Inhalt
    /app/*, /api/*, /landing-preview/ : siehe robots.txt

  Kein doppelter Bindestrich in diesem Kommentar: XML verbietet ihn im Kommentartext
  (gemessen, die erste Fassung war deshalb nicht wohlgeformt).

  Stand: 2026-08-22
-->
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>https://ihr-digitaler-buchhalter.de/</loc>
    <lastmod>2026-08-17</lastmod>
  </url>
  <url>
    <loc>https://ihr-digitaler-buchhalter.de/register</loc>
    <lastmod>2026-08-17</lastmod>
  </url>
  <url>
    <loc>https://ihr-digitaler-buchhalter.de/agb</loc>
    <lastmod>2026-08-17</lastmod>
  </url>
  <url>
    <loc>https://ihr-digitaler-buchhalter.de/impressum</loc>
    <lastmod>2026-08-17</lastmod>
  </url>
  <url>
    <loc>https://ihr-digitaler-buchhalter.de/datenschutz</loc>
    <lastmod>2026-08-17</lastmod>
  </url>
  <url>
    <loc>https://ihr-digitaler-buchhalter.de/av-vertrag</loc>
    <lastmod>2026-08-23</lastmod>
  </url>
  <url>
    <loc>https://ihr-digitaler-buchhalter.de/anbieterwechsel</loc>
    <lastmod>2026-08-22</lastmod>
  </url>
</urlset>
