Files
maroandClaude Sonnet 5 1cd15aff25 Add email verification, personal calendar feed, and full SEO implementation
- Customer accounts now require email verification (hashed, single-use,
  time-limited tokens) before they can request/confirm bookings, with
  resend flows on login/account/booking widget and rate limiting.
- Admins get a private, rotatable iCalendar (ICS) subscription feed of
  their confirmed bookings and public events, timezone-correct for
  Europe/Berlin including DST, never exposing meeting passwords.
- Adds a full SEO layer: per-page canonical/OG/Twitter metadata with
  CMS-editable overrides and content-derived fallbacks, a dynamic
  sitemap.xml and robots.txt driven by real published content, JSON-LD
  (Organization/LocalBusiness, WebSite, WebPage, BreadcrumbList, Service,
  Event, BlogPosting) that never fabricates data, and a CMS-managed
  redirect table for changed slugs.
- Global ANOUMA-naming audit: the brand name is never used to label
  personal account/calendar areas anywhere in the app, CMS, or emails.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-25 22:57:31 +02:00

77 lines
3.2 KiB
TypeScript

import type { Metadata } from "next";
import { PageHeader } from "@/components/PageHeader";
import { Section } from "@/components/Section";
import { PlaceholderNote } from "@/components/PlaceholderNote";
import { getContactGlobal } from "@/lib/payload/globals";
import { getSiteUrl } from "@/lib/seo/config";
export const dynamic = "force-dynamic";
export async function generateMetadata(): Promise<Metadata> {
const siteUrl = await getSiteUrl();
return {
title: "Datenschutz",
description: "Datenschutzerklärung von Anouma.",
robots: { index: false, follow: true },
alternates: { canonical: `${siteUrl}/datenschutz` },
};
}
export default async function DatenschutzPage() {
const contact = await getContactGlobal();
return (
<>
<PageHeader title="Datenschutzerklärung" crumbs={[{ title: "Datenschutz" }]} />
<Section tone="plain">
<div className="mx-auto max-w-2xl space-y-8">
<PlaceholderNote>
Diese Seite ist eine strukturelle Vorlage. Bitte die Angaben zu verantwortlicher Stelle,
Hosting, eingesetzten Diensten und Cookies mit den tatsächlich genutzten Tools ergänzen
und rechtlich prüfen lassen, bevor die Seite live geht.
</PlaceholderNote>
<div>
<h2 className="font-serif text-2xl font-medium text-anouma-plum">Verantwortliche Stelle</h2>
<p className="mt-4 leading-relaxed text-anouma-plum">
[Platzhalter Vor- und Nachname]
<br />
[Platzhalter Anschrift]
<br />
E-Mail: {contact.email}
</p>
</div>
<div>
<h2 className="font-serif text-2xl font-medium text-anouma-plum">
Erhebung und Speicherung personenbezogener Daten
</h2>
<p className="mt-4 leading-relaxed text-anouma-plum">
Beim Besuch dieser Website werden aus technischen Gründen automatisch Informationen
erfasst, die dein Browser übermittelt (z. B. IP-Adresse, Datum und Uhrzeit des
Zugriffs). [Platzhalter Details zum verwendeten Hosting-Anbieter ergänzen.]
</p>
</div>
<div>
<h2 className="font-serif text-2xl font-medium text-anouma-plum">Kontaktformular</h2>
<p className="mt-4 leading-relaxed text-anouma-plum">
Wenn du uns per Formular oder E-Mail Anfragen zukommen lässt, werden deine Angaben aus
dem Formular inklusive der von dir dort angegebenen Kontaktdaten zwecks Bearbeitung der
Anfrage bei uns gespeichert. Diese Daten geben wir nicht ohne deine Einwilligung weiter.
</p>
</div>
<div>
<h2 className="font-serif text-2xl font-medium text-anouma-plum">Deine Rechte</h2>
<p className="mt-4 leading-relaxed text-anouma-plum">
Du hast jederzeit das Recht auf Auskunft, Berichtigung, Löschung und Einschränkung der
Verarbeitung deiner gespeicherten personenbezogenen Daten sowie ein Recht auf
Datenübertragbarkeit und Widerspruch. Wende dich hierzu gerne an {contact.email}.
</p>
</div>
</div>
</Section>
</>
);
}