Migrate CMS from Sanity to self-hosted Directus, add Impressum + Datenschutz

- Replace src/lib/sanity.ts with src/lib/directus.ts (REST API client)
- Update all 9 pages to use Directus field names and imageUrl()
- Add Impressum (§5 TMG) and Datenschutz (DSGVO) pages
- Update .env.example for Directus URL + token

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-06-05 05:25:41 +00:00
parent 1d1492e611
commit c54762532c
14 changed files with 408 additions and 101 deletions

View File

@@ -1,10 +1,8 @@
---
import Layout from "../layouts/Layout.astro";
import { getSettings } from "../lib/sanity";
import { getSettings } from "../lib/directus";
const settings = await getSettings();
const contact = settings?.contact;
const social = settings?.social;
---
<Layout title="Kontakt" description="Kontakt zum Kitafreunde Regenbogen e.V. — schreib uns, werde Mitglied oder bring eine Idee ein.">
@@ -23,11 +21,11 @@ const social = settings?.social;
13503 Berlin
</p>
</div>
{contact?.email && (
{settings?.contact_email && (
<div class="card">
<h3 class="font-bold mb-2 text-sm uppercase tracking-wide text-[var(--color-text-muted)]">E-Mail</h3>
<a href={`mailto:${contact.email}`} class="text-[var(--color-primary)] font-medium text-lg">
{contact.email}
<a href={`mailto:${settings.contact_email}`} class="text-[var(--color-primary)] font-medium text-lg">
{settings.contact_email}
</a>
</div>
)}
@@ -38,15 +36,15 @@ const social = settings?.social;
</p>
<a href="/mitglied-werden" class="btn-primary text-sm">Zur Mitgliedschaftsseite →</a>
</div>
{(social?.instagram || social?.facebook) && (
{(settings?.social_instagram || settings?.social_facebook) && (
<div class="card">
<h3 class="font-bold mb-3">Social Media</h3>
<div class="flex gap-3">
{social.instagram && (
<a href={social.instagram} target="_blank" rel="noopener" class="btn-secondary text-sm">Instagram</a>
{settings.social_instagram && (
<a href={`https://instagram.com/${settings.social_instagram}`} target="_blank" rel="noopener" class="btn-secondary text-sm">Instagram</a>
)}
{social.facebook && (
<a href={social.facebook} target="_blank" rel="noopener" class="btn-secondary text-sm">Facebook</a>
{settings.social_facebook && (
<a href={settings.social_facebook} target="_blank" rel="noopener" class="btn-secondary text-sm">Facebook</a>
)}
</div>
</div>
@@ -60,7 +58,7 @@ const social = settings?.social;
Dieses Formular öffnet deinen E-Mail-Client.
</p>
<form
action={`mailto:${contact?.email ?? "info@kitafreunde-regenbogen.de"}`}
action={`mailto:${settings?.contact_email ?? "info@kitafreunde-regenbogen.de"}`}
method="get"
enctype="text/plain"
class="space-y-4"