Messe-Landingpage /her-career/ zur herCAREER Expo 2026

Ziel des QR-Codes auf der Rückwandgrafik. Der gedruckte Code zeigt auf
https://her-career.anelia-wolf.com – die Adresse ist damit unveränderlich.
Die Seite liegt als /her-career/ im normalen Export, die Subdomain liefert
dieselbe Datei aus demselben Docroot aus; DNS, Zertifikat, Vhosts für nginx
und Apache und die Prüfbefehle stehen in docs/SUBDOMAIN-HERCAREER.md.

Aufbau in beiden Sprachen: Hero (ink) → 01 Messe-Special → 02 Themen →
03 Auf der Messe → 04 Kontakt mit dem Formular. Die vier Themenblöcke der
Rückwand liegen auf den drei Leistungsseiten, wie in der Navigation; jede
Zeile verlinkt absolut auf die Hauptdomain.

Der Wortlaut des Messe-Specials fehlt noch und steht sichtbar als „[…]“ auf
der Seite. Der Build-Guard hält den Launch-Flip an, bis er da ist
(CONTENT_TODO in src/lib/legal.ts, docs/OFFENE-DATEN.md Punkte 2.7–2.9).
Deadline ist nicht der Livegang, sondern der 22.10.2026.

- Canonical auf anelia-wolf.com/her-career/, damit die Subdomain-Kopie nicht
  ein zweites Mal im Index steht
- flags.showHerCareer trägt Termine-Ledger, Sitemap-Eintrag und die
  Meta-Beschreibung mit Stand und Uhrzeit. Ab dem 24.10.2026 auf false
- ServiceHero: facts und cta sind optional – ohne beides und ohne Foto
  entfällt die rechte Spalte
- ProcessContact: optionaler Zähler, die Messeseite nummeriert ihre Abschnitte
- Kopf-CTA auf dieser Seite ausgeblendet. Das macht eine Regel in globals.css,
  weil der Kopf außerhalb von <main> liegt und auf der Subdomain der Pfad
  ohnehin „/“ ist

Enthält außerdem die bis dahin nicht committeten Änderungen an Header,
LangSwitch, OverlayMenu, Wordmark und globals.css.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-07 22:39:26 +02:00
parent b9e1d4d15c
commit 33ec0df7e3
21 changed files with 941 additions and 50 deletions

View File

@@ -26,6 +26,7 @@ Adressen, Englisch liegt vollstaendig unter `/en/`:
| `/leistungen/keynotes/` | Keynotes & Speaking |
| `/impressum/` | Impressum |
| `/datenschutz/` | Datenschutzerklärung |
| `/her-career/` | Messe-Landingpage zur herCAREER Expo 2026 Ziel des QR-Codes auf der Rückwandgrafik, ausgeliefert auch unter `her-career.anelia-wolf.com` (`docs/SUBDOMAIN-HERCAREER.md`) |
| 404 | „Diese Fährte endet hier.“ deutsch, mit englischem Zweizeiler darunter |
| `/en/` | English start page |
| `/en/services/coaching/` | Coaching & Assessments |
@@ -33,6 +34,7 @@ Adressen, Englisch liegt vollstaendig unter `/en/`:
| `/en/services/keynotes/` | Keynotes & Speaking |
| `/en/imprint/` | Imprint (Übersetzung, verbindlich bleibt `/impressum/`) |
| `/en/privacy/` | Privacy (Übersetzung, verbindlich bleibt `/datenschutz/`) |
| `/en/her-career/` | herCAREER Expo 2026 (englische Fassung der Messeseite) |
Dazu erzeugt der Build `sitemap.xml`, `robots.txt`, `icon.svg` und `apple-icon.png`.
@@ -154,12 +156,22 @@ Beides steht an genau einer Stelle: `routesByLang` in `src/lib/i18n.ts`.
Wer eine Adresse aendert, aendert sie dort Navigation, Fuss, Sitemap,
hreflang und der Sprachumschalter lesen alle aus dieser Tabelle.
**Umschalter.** Die beiden Flaggen im Kopf (`LangSwitch.tsx`) fuehren nicht
pauschal auf die Startseite, sondern auf das Gegenstueck derselben Seite
(`counterpart()`). Unter 1024 px ist im Kopf kein Platz; dort steht der
Umschalter im Overlay-Menue. Eine Flagge steht streng genommen fuer ein Land
und nicht fuer eine Sprache deshalb steht das Kuerzel DE/EN daneben und der
zugaengliche Name nennt die Sprache ausgeschrieben.
**Umschalter.** Der Umschalter (`LangSwitch.tsx`) steht auf jeder Breite im Kopf
und fuehrt nicht pauschal auf die Startseite, sondern auf das Gegenstueck
derselben Seite (`counterpart()`). Zwei Formen:
- ab 1024 px beide Sprachen nebeneinander, die aktive still in Gold,
- darunter nur die Zielsprache als ein Knopf ein Tipp, ein Wechsel. Neben
Wortmarke und „Menue“ hat auf einem Telefon kein Paar Platz.
Der Kopf liegt ueber dem Overlay-Menue, der Knopf bleibt also auch bei offenem
Menue erreichbar. Im Menue selbst steht er nicht mehr: Dort fiel er auf kurzen
Geraeten (iPhone SE, 667 px) unter die Kante, ohne dass man dem Menue ansah,
dass darunter noch etwas kommt.
Eine Flagge steht streng genommen fuer ein Land und nicht fuer eine Sprache
deshalb steht das Kuerzel DE/EN daneben und der zugaengliche Name nennt die
Sprache ausgeschrieben.
**Zwei Wurzel-Layouts.** `app/(de)/layout.tsx` schreibt `<html lang="de">`,
`app/en/layout.tsx` schreibt `<html lang="en">`. Im App Router schreibt nur das
@@ -240,6 +252,12 @@ Ressourcen lädt, ist eine sehr strenge Content-Security-Policy möglich.
speist Canonical-URLs, OpenGraph und `sitemap.xml`. Bei anderer Domain hier
ändern und neu bauen.
**Subdomain `her-career.anelia-wolf.com`**: Der QR-Code auf der Rückwandgrafik
zeigt auf diese Adresse gedruckt und damit unveränderlich. Sie braucht keinen
zweiten Build: derselbe Docroot, `/` liefert `her-career/index.html`, alles andere
geht per 301 auf die Hauptdomain. Vhost-Beispiele für nginx und Apache, DNS,
Zertifikat und Prüfbefehle stehen in **`docs/SUBDOMAIN-HERCAREER.md`**.
---
## 3. Bilder und Logo einspielen (Drop-in)
@@ -330,6 +348,7 @@ Freigaben vorliegen. Kein Flag verlangt eine Codeänderung an Komponenten.
| `show24hPromise` | `false` | Zusage „Antwort innerhalb von 24 Stunden“ |
| `showIndustry` | `false` | Branchennennung im Nebentätigkeits-Kontext |
| `showTwins` | `true` | Zwillinge-Satz in der Biografie |
| `showHerCareer` | `true` | Messeseite `/her-career/` trägt den Termine-Ledger („Auf der Messe“) und steht in der Sitemap; die Meta-Beschreibung nennt Stand und Uhrzeit. Ab dem 24.10.2026 auf `false` siehe Abschnitt 6. |
| `showLangSwitch` | `true` | Sprachumschalter im Kopf und im Overlay-Menü. Auf `false` verschwinden beide Flaggen, die englischen Seiten bleiben über ihre Adresse erreichbar. |
Nicht bestätigte Aussagen sind bewusst ausgeschaltet: eine Zusage, die nicht
@@ -414,7 +433,14 @@ vergangenes Event). Zu tun, mit Termin im Kalender:
3. Auch anpassen: `src/content/keynotes.ts` (Meta-Zeile
„Keynote · herCAREER Expo 2026 · 23.10. · 10:30“) und
`src/content/home.ts` (Marginalie „Bühne“, Fact-Zeile).
4. `npm run build`, `out/` hochladen.
4. **Messeseite `/her-career/`**: `flags.showHerCareer` auf `false` setzen. Damit
fällt der Termine-Ledger weg, die Meta-Beschreibung wechselt auf die Fassung ohne
Stand und Uhrzeit, und die Seite verschwindet aus der Sitemap; Hero, Messe-Special,
Themen und Kontakt bleiben stehen. Die Seite selbst bleibt erreichbar gedruckte
QR-Codes laufen weiter.
Ist das Messe-Special nach der Messe hinfällig, muss sein Text mit weg
(`src/content/her-career.ts`, `src/content/en/her-career.ts`).
5. `npm run build`, `out/` hochladen.
**Offen: Wer pflegt das, und wann?** Das ist Spec §12 Punkt 17 und muss mit
der Kundin geklärt werden am besten als feste Zuständigkeit plus
@@ -481,7 +507,7 @@ Produktions-Build.
| `npx tsc --noEmit -p tsconfig.json` | fehlerfrei |
| `npm run lint` (ESLint) | fehlerfrei |
| `npm run build` | erfolgreich, 12 statische Seiten |
| Routen in `out/` | `/`, `/leistungen/coaching/`, `/leistungen/trainings/`, `/leistungen/keynotes/`, `/impressum/`, `/datenschutz/`, `404.html` (+ `_not-found/`) alle vorhanden |
| Routen in `out/` | `/`, `/leistungen/coaching/`, `/leistungen/trainings/`, `/leistungen/keynotes/`, `/her-career/`, `/impressum/`, `/datenschutz/`, `404.html` (+ `_not-found/`) alle vorhanden |
| `localStorage` / `sessionStorage` / `document.cookie` in `out/` | **kein Treffer** (HTML, JS, CSS geprüft) |
| Externe Origins in den HTML-Dateien | nur `anelia-wolf.com`, `linkedin.com`, `her-career.com`, `bfdi.bund.de`, `schema.org`, `w3.org` (SVG-Namespace) |
| Externe Ressourcen | keine: 0 iframes, alle `<script src>` unter `/_next/`, alle 18 `@font-face` zeigen auf lokale `.woff2` in `_next/static/media/`. Die Treffer `nextjs.org`, `react.dev`, `gsap.com`, `github.com` liegen ausschließlich als Text in Fehlermeldungen und Lizenzkommentaren in Vendor-Bundles **keine Requests**. |
@@ -530,7 +556,8 @@ Produktions-Build aus `out/` ist er nicht vorhanden.
- [ ] Freigegebene Blöcke per Flag eingeschaltet (FAQ, Stimmen, Speaker-PDF …)
- [ ] `hostOutsideEu` korrekt gesetzt, AV-Verträge mit Hoster und E-Mail-Anbieter
- [ ] Domain in `src/lib/site.ts` stimmt, HTTPS aktiv, 404-Seite konfiguriert
- [ ] `out/` hochgeladen, alle zwölf Routen im Browser geprüft (sechs deutsch, sechs englisch)
- [ ] `out/` hochgeladen, alle vierzehn Routen im Browser geprüft (sieben deutsch, sieben englisch)
- [ ] Subdomain `her-career.anelia-wolf.com` eingerichtet und mit dem **gedruckten** QR-Code gescannt (`docs/SUBDOMAIN-HERCAREER.md`)
- [ ] Sprachumschalter auf jeder Seite geprüft: er führt auf dieselbe Seite in der anderen Sprache, nicht auf die Startseite
- [ ] Kalendereintrag für den 24.10.2026 (Termine-Block, Abschnitt 6)

239
docs/OFFENE-DATEN.md Normal file
View File

@@ -0,0 +1,239 @@
# Offene Daten Website Anelia Wolf
Stand: 07.09.2026 · Pflegen: bei jeder Lieferung die Statusspalte ändern, nicht die Zeile löschen.
Die Website ist fertig gebaut und läuft in beiden Sprachen. Was hier steht, ist alles,
was noch von außen kommen muss, bevor sie live gehen kann. Drei Quellen im Code halten
dieselbe Liste maschinenlesbar wer hier etwas einträgt, trägt es dort mit ein:
| Quelle | Inhalt |
|---|---|
| `LEGAL_TODO` in `src/lib/legal.ts` | Pflichtangaben für Impressum und Datenschutz |
| `CONTENT_TODO` in `src/lib/legal.ts` | sichtbare Platzhalter auf den Leistungsseiten |
| `flags` in `src/lib/site.ts` | Blöcke, die auf eine Freigabe warten |
**Der Build passt auf.** Solange irgendwo ein „[…]“ steht, bricht `npm run build` ab,
sobald `flags.showPlaceholders` auf `false` gesetzt wird. Diesen Schalter umzulegen ist
der letzte Schritt vor dem Livegang niemand kann ihn versehentlich überspringen.
**Status-Spalte:** `offen` · `liegt vor` · `entfällt` (mit Begründung).
---
## 1. Rechtlich blockiert den Livegang
Ohne diese Angaben darf die Seite nicht online. Ein Impressum ohne ladungsfähige
Anschrift ist abmahnfähig, eine Datenschutzerklärung ohne Hoster-Angabe unvollständig.
| # | Angabe | Wofür | Wer liefert | Status |
|---|---|---|---|---|
| 1.1 | Ladungsfähige Anschrift: Straße, Hausnummer, PLZ, Ort **kein Postfach** | Impressum (§ 5 DDG), Datenschutz Ziffer 1 | Anelia | offen |
| 1.2 | USt-IdNr. (§ 27a UStG) **oder** W-IdNr. (§ 139c AO) oder: Abschnitt streichen | Impressum | Anelia / Steuerberatung | offen |
| 1.3 | Kleinunternehmerregelung nach § 19 UStG: ja / nein | Impressum | Anelia / Steuerberatung | offen |
| 1.4 | Berufshaftpflicht: Versicherer, Anschrift, räumlicher Geltungsbereich oder: Abschnitt streichen | Impressum | Anelia | offen |
| 1.5 | Geschäftsbezeichnung nur, wenn sie tatsächlich so geführt wird | Impressum (optional) | Anelia | offen |
| 1.6 | Bundesland des Firmensitzes → daraus die zuständige Datenschutz-Aufsichtsbehörde (Name, Anschrift, Website) | Datenschutz, Art. 77 DSGVO | Anelia | offen |
| 1.7 | Hosting-Anbieter: Firma, Anschrift, Land | Datenschutz Ziffer 3 | webklar | offen |
| 1.8 | Löschfrist der Server-Logfiles in Tagen (üblich 714) beim Hoster erfragen | Datenschutz Ziffer 3 | webklar | offen |
| 1.9 | **AV-Vertrag mit dem Hoster** (Art. 28 DSGVO), unterschrieben | Datenschutz Ziffer 3 | Anelia + Hoster | offen |
| 1.10 | E-Mail-/Office-Anbieter: Firma, Anschrift, Land | Datenschutz Ziffer 4 | Anelia | offen |
| 1.11 | **AV-Vertrag mit dem E-Mail-Anbieter** (Art. 28 DSGVO) | Datenschutz Ziffer 4 | Anelia | offen |
| 1.12 | Sitzt Hoster **oder** E-Mail-Anbieter außerhalb EU/EWR? Wenn ja: Land + Rechtsgrundlage (Angemessenheitsbeschluss oder Standardvertragsklauseln) | schaltet `flags.hostOutsideEu` | webklar prüft | offen |
| 1.13 | Aufbewahrungsfrist für Kontaktanfragen (z. B. 12 Monate) | Datenschutz Ziffer 4 | Anelia | offen |
| 1.14 | Bildnachweis: Name der Fotografin, ggf. Website | Impressum + Bildunterschriften (§ 13 UrhG) | Anelia | offen |
| 1.15 | Bildnachweis: Logo-Designer:in bzw. Agentur | Impressum (optional) | Anelia | offen |
| 1.16 | „Stand“-Datum für beide Rechtstexte setzen | Impressum, Datenschutz | webklar beim Flip | offen |
> **Hinweis zur englischen Fassung:** `/en/imprint/` und `/en/privacy/` sind Übersetzungen,
> verbindlich bleibt die deutsche Fassung das steht dort auch im ersten Absatz. Jede
> Angabe aus dieser Tabelle muss trotzdem in **beiden** Dateien landen; der Build-Guard
> prüft beide.
---
## 2. Inhaltlich sichtbare Platzhalter auf den Leistungsseiten
Diese „[…]“ stehen aktuell in Gold auf der Seite und sind für jeden Besucher lesbar.
| # | Angabe | Wo auf der Seite | Status |
|---|---|---|---|
| 2.1 | Name des Analyse-Instruments (DISG / INSIGHTS / persolog / …) + Zertifizierung. Aktive Lizenz? Darf Name oder Badge erscheinen? | Coaching → Bausteine | offen |
| 2.2 | Dauer des Auswertungsgesprächs | Coaching → Bausteine (zweimal) | offen |
| 2.3 | Sitzungsdauer im Coaching | Coaching → Rahmen | offen |
| 2.4 | Paket bzw. übliche Anzahl Sitzungen | Coaching → Rahmen | offen |
| 2.5 | Gruppengröße bei Trainings | Trainings → Hero-Fakten **und** Rahmen | offen |
| 2.6 | Umfang der Trainingsreihe „Neukundengewinnung“ | Trainings → Module | offen |
| 2.7 | **Messe-Special: Was bekommt, wer den QR-Code auf der Rückwand scannt?** | Messeseite `/her-career/` → Das Special | offen |
| 2.8 | Frist des Specials (z. B. „Anfragen bis 30.11.2026“) | Messeseite → Das Special | offen |
| 2.9 | Bedingung zum Einlösen (Stichwort, Nachweis, nichts?) | Messeseite → Das Special | offen |
> **Die Zeilen 2.72.9 hängen an einem Druckerzeugnis.** Der QR-Code auf der
> Rückwandgrafik ist mit „Messe-Special · Code scannen“ beschriftet und führt auf
> `her-career.anelia-wolf.com`. Wer dort ankommt, erwartet genau dieses Angebot;
> bis zum Wortlaut steht an der Stelle sichtbar „[…]“. Deadline ist damit nicht der
> Livegang, sondern der **22.10.2026**.
---
## 3. Freigaben schalten fertige Blöcke frei
Diese Blöcke sind gebaut und ausgeschaltet. Kein Codeaufwand, nur ein Schalter in
`src/lib/site.ts`. Ausgeschaltet bleiben sie bewusst: Eine Zusage, die nicht gehalten
wird, und ein Testimonial ohne Einwilligung sind riskanter als eine Leerstelle.
| # | Flag | Was fehlt | Status |
|---|---|---|---|
| 3.1 | `showStimmen` | Zitate mit Name, Rolle, Unternehmen und **schriftlicher** Einwilligung. Kundenlogos nur mit Erlaubnis. | offen |
| 3.2 | `showSpeakerPdf` | Speaker-Profil als PDF (Kurzvita, Themen, Fotos, Technik) → `public/speaker-profil.pdf` | offen |
| 3.3 | `showSecondTalk` | Darf „Unlock your Sales-DNA“ gelistet werden? Mit welchem Inhalt? Weitere Vorträge? | offen |
| 3.4 | `show24hPromise` | Zusage „Antwort innerhalb von 24 Stunden“ ja oder nein? | offen |
| 3.5 | `showIndustry` | Darf die Branche der Nebentätigkeit genannt werden (z. B. „Medizinprodukte“)? Der Arbeitgeber wird nie genannt. | offen |
| 3.6 | `showTwins` | Steht auf `true`. Freigabe für den Satz über die Zwillinge bitte bestätigen. | zu bestätigen |
### Einzelfreigaben Biografie
Jede Angabe einzeln bestätigen, sie steht namentlich auf der Startseite:
Vater als Händler · Ausbildung zur Zahntechnikerin · Abteilungsleitung ·
Verkauf und Store Management im Premium-Segment · B2B-Außendienst heute ·
Zwillinge. Dazu: Dürfen später Jahreszahlen ergänzt werden?
### Weitere offene Punkte
| # | Frage | Status |
|---|---|---|
| 3.7 | Preise: Spanne oder „auf Anfrage“ für Coaching, Trainingstag, Keynote | offen |
| 3.8 | Reiseradius und Bühnentechnik bei Keynotes | offen |
| 3.9 | herCAREER-Logo: Erlaubnis vorhanden? (Ohne bleibt es beim reinen Textlink so ist es aktuell gebaut.) | offen |
| 3.10 | Markenrecherche „WOLF-Prinzip“ Dritte verwenden die Bezeichnung bereits. Bis zu einer Eintragung sagt die Seite „Bezeichnung“, nie „Wortmarke“. | empfohlen |
| 3.11 | Wer pflegt den Termine-Block nach dem 23.10.2026? | offen |
| 3.12 | FAQ-Antworten auf den drei Leistungsseiten: von uns formuliert, von Anelia noch nicht gegengelesen. Sie stehen **sichtbar** auf der Seite (`showFaq` ist an). | zu bestätigen |
| 3.13 | Zusage im Hero-Knopf: „30 Min · kostenfrei“ bestätigen oder ändern. | zu bestätigen |
| 3.14 | Zielgruppen-Reihenfolge: Unternehmen zuerst oder Einzelpersonen zuerst? Reiner Texttausch in „Leistungen“ und Hero. | offen |
| 3.15 | Messeseite `/her-career/`: Hero-Text, Themen-Zeilen und Kontakt-Überschrift sind von uns formuliert (Ton der Website, Inhalte der Rückwand) von Anelia gegenlesen. | zu bestätigen |
| 3.16 | Subdomain `her-career.anelia-wolf.com`: DNS, Zertifikat und Vhost einrichten. Muss **vor dem 22.10.2026** stehen, die Adresse ist gedruckt (`docs/SUBDOMAIN-HERCAREER.md`). Wer: webklar. | offen |
---
## 4. Bild- und Design-Dateien
**Das ist die Tabelle für den Designer bzw. die Fotografin.** Fehlt eine Datei, blendet
die Seite den Bildplatz sauber aus oder weicht auf eine typografische Lösung aus
es bricht nichts, aber die Seite verliert ihr Gesicht.
| Datei | Ablage | Format | Mindestmaß | Verhältnis | Wo sie erscheint | Pflicht | Status |
|---|---|---|---|---|---|---|---|
| `anelia-hero.jpg` | `public/photos/` | JPG, sRGB | 1600 px breit | 4:5 hoch | Startseite, Hero (großflächig) | ja | offen |
| `anelia-portrait.jpg` | `public/photos/` | JPG, sRGB | 1400 px breit | 3:4 hoch | „Über Anelia“, engerer Schnitt | nein fällt sonst auf das Hero-Foto zurück | offen |
| `anelia-stage.jpg` | `public/photos/` | JPG, sRGB | 1600 px breit | 3:2 quer | Keynotes-Seite, Bühnenfoto | nein | offen |
| `logo-mark.svg` | `public/brand/` | SVG, transparent, ohne `<script>` | | | Kopf, Hero, WOLF-Prinzip, Fuß, Seitenwechsel, 404 | ja | **liegt vor** |
| `logo-full.png` | `public/brand/` | PNG auf Tinte | 2400 × 1260 px | 1,91:1 | Social-Vorschau beim Teilen (LinkedIn) | nein | **liegt vor** |
| `speaker-profil.pdf` | `public/` | PDF | | | Keynotes → „Für Veranstalter“ (nur mit `showSpeakerPdf`) | nein | offen |
Dazu zwei Punkte, die keine Datei sind, aber am Logo hängen:
| # | Angabe | Wer liefert | Status |
|---|---|---|---|
| 4.1 | **Schriftliche Nutzungsrechte am Logo** vom Designer die Website veröffentlicht es, das Impressum nennt ihn | Anelia | offen |
| 4.2 | Bestätigung, dass das Monogramm **ohne Wortmarke** und der Wolfskopf **einzeln** gezeigt werden dürfen (Favicon, Seitenwechsel, 404) | Anelia / Designer | offen |
### Regeln für die Bilddateien
- **Ruhiger Hintergrund** beim Hero-Foto: Darüber liegt das Monogramm, und die Headline
läuft bis in die linke Bildhälfte.
- **Kein Text im Bild.** Alles Geschriebene steht auf der Seite als echter Text das
bleibt scharf, ist vorlesbar und lässt sich übersetzen.
- **sRGB**, nicht Adobe RGB. Sonst wirken die Bilder im Browser flau.
- **Originale ≥ 2000 px** mitliefern, nicht nur die zugeschnittene Fassung. Der Zuschnitt
kann sich noch ändern.
- **Name der Fotografin** gehört dazu (Punkt 1.14). „Foto: [Name]“ ist eine gesetzliche
Pflicht, kein Höflichkeitsvermerk.
### Regeln für ein neues Logo
Falls das Monogramm ersetzt wird: SVG, transparent, **ohne `<script>`** (ein Skript
bricht den Build absichtlich ab die Datei wird inline in jede Seite eingebettet, und
die Seite sagt „keine externen Skripte“ zu). Die schwarzen Flächen auf
`fill="currentColor"`, damit das W auf dunklem Grund elfenbein und auf hellem tinte
erscheint. IDs `v-left`, `v-right`, `wolf` vergeben, sonst läuft die Zeichen-Animation in
DOM-Reihenfolge. Details in `public/brand/README.md`.
---
## 5. Prompt Liefertabelle für den Designer erzeugen
Der Block unten ist zum Kopieren gedacht. Er steht für sich allein: Wer ihn in einen
Chat einfügt, bekommt die Tabelle, ohne dieses Dokument mitschicken zu müssen. Die
Platzhalter in eckigen Klammern vorher ersetzen.
```text
Du bist Projektleiter einer Webagentur. Erstelle eine Liefertabelle für die
Fotografin und den Grafiker der Website von Anelia Wolf (Keynote Speakerin,
Trainerin und Coach). Ton: knapp, sachlich, keine Werbesprache.
Die Website ist fertig gebaut: statischer Export, Next.js, zwei Sprachen
(Deutsch auf /, Englisch auf /en/). Gestaltung: warmes Schwarz (#0F0E0C),
Elfenbein (#F6F1E8), Gold (#C9A24D), keine Schatten, keine runden Ecken,
Playfair Display für Überschriften. Fehlt eine Bilddatei, blendet die Seite den
Platz sauber aus nichts bricht, aber die Seite verliert ihr Gesicht.
Diese Dateien fehlen noch:
1. anelia-hero.jpg Startseite, großflächig hinter Headline und Monogramm.
JPG, sRGB, hochkant 4:5, mindestens 1600 px breit, ruhiger Hintergrund.
2. anelia-portrait.jpg Abschnitt „Über Anelia“, engerer Schnitt.
JPG, sRGB, hochkant 3:4, mindestens 1400 px breit. Optional.
3. anelia-stage.jpg Keynotes-Seite, Anelia auf der Bühne.
JPG, sRGB, quer 3:2, mindestens 1600 px breit. Optional.
4. speaker-profil.pdf Kurzvita, Themen, Fotos, Technik. Optional.
Feste Regeln: kein Text im Bild (alle Schrift liegt als echter Text auf der
Seite), sRGB statt Adobe RGB, Originale ab 2000 px mitliefern, Name der
Fotografin für den Bildnachweis nach § 13 UrhG.
Gib eine Markdown-Tabelle aus mit den Spalten:
Datei | Motiv/Bildidee | Format | Mindestmaß | Seitenverhältnis | Wo es erscheint |
Pflicht | Wer liefert | Termin | Status
Fülle „Motiv/Bildidee“ mit einem konkreten Vorschlag je Zeile, der zur
Gestaltung passt. „Termin“ mit [DATUM] vorbelegen, „Status“ mit „offen“.
Setze unter die Tabelle drei Sätze, was passiert, wenn eine Datei fehlt.
Antworte auf Deutsch.
```
### Variante für die Rechtsangaben
Dieselbe Mechanik für Abschnitt 1, falls Anelia eine Liste zum Ausfüllen möchte:
```text
Erstelle eine Ausfüll-Liste für eine Selbstständige, die einer Webagentur die
Pflichtangaben für Impressum und Datenschutzerklärung ihrer neuen Website
liefern muss. Deutsches Recht, DDG und DSGVO.
Benötigt werden: ladungsfähige Anschrift (kein Postfach), USt-IdNr. oder
Wirtschafts-Identifikationsnummer oder die Entscheidung, den Abschnitt zu
streichen, Kleinunternehmerregelung nach § 19 UStG ja/nein,
Berufshaftpflichtversicherung (Versicherer, Anschrift, Geltungsbereich) oder
die Entscheidung, den Abschnitt zu streichen, Bundesland des Firmensitzes
(daraus folgt die zuständige Aufsichtsbehörde), E-Mail- und Office-Anbieter
mit Anschrift und Land, Aufbewahrungsfrist für Kontaktanfragen in Monaten,
Name der Fotografin und der Logo-Designerin für den Bildnachweis.
Gib eine Markdown-Tabelle aus: Angabe | Warum sie gebraucht wird (ein
Halbsatz) | Beispiel | Ihre Antwort. Die Spalte „Ihre Antwort“ bleibt leer.
Schreibe die Kundin mit „Sie“ an, keine Paragraphenketten im Fließtext.
Antworte auf Deutsch.
```
---
## 6. Wenn alles da ist der Livegang
1. Angaben in `src/content/legal.ts` **und** `src/content/en/legal.ts` eintragen,
Platzhalter in `src/content/coaching.ts` und `trainings.ts` ersetzen (deutsch und
englisch).
2. Bilder nach `public/photos/` legen, Namen exakt wie in der Tabelle oben.
3. Freigegebene Blöcke per Flag einschalten.
4. `flags.hostOutsideEu` korrekt setzen.
5. `flags.showPlaceholders` auf `false` setzen und `npm run build` laufen lassen. Bricht
der Build ab, nennt er die Fundstelle dann ist noch etwas offen.
6. Restliche Checkliste in `docs/HANDOVER.md`, Abschnitt 9.

128
docs/SUBDOMAIN-HERCAREER.md Normal file
View File

@@ -0,0 +1,128 @@
# Subdomain `her-career.anelia-wolf.com`
Stand: 07.09.2026 · Zuständig: webklar (Hoster-Konfiguration)
Auf der Rückwandgrafik am Messestand steht unten links ein QR-Code, beschriftet
„Messe-Special · Code scannen“. Er zeigt auf:
```
https://her-career.anelia-wolf.com
```
**Diese Adresse ist gedruckt.** Sie lässt sich nicht mehr ändern, und sie muss am
22.10.2026 funktionieren inklusive gültigem Zertifikat. Ein Scan, der auf einer
Zertifikatswarnung landet, ist schlimmer als kein Code.
Die Datei dahinter ist `out/her-career/index.html` aus dem normalen Build
(`npm run build`). Es gibt **keinen zweiten Build und kein zweites Deployment**
die Subdomain zeigt in denselben Docroot wie die Hauptdomain.
## Was einzurichten ist
1. **DNS:** `her-career` als A- (und AAAA-)Record auf dieselbe IP wie
`anelia-wolf.com`, oder als CNAME auf den Hauptdomain-Namen.
2. **Zertifikat:** Die Subdomain muss im Zertifikat stehen als weiterer
SAN-Eintrag (`certbot ... -d anelia-wolf.com -d www.anelia-wolf.com -d
her-career.anelia-wolf.com`) oder über ein Wildcard-Zertifikat.
3. **Vhost:** Derselbe Docroot, drei Regeln (unten). Kurz gesagt: `/` liefert die
Messeseite, ihre Dateien kommen aus demselben Verzeichnis, jede andere Adresse
wandert per 301 auf die Hauptdomain.
Der dritte Punkt ist der wichtige. Ohne ihn läge die **komplette Website** unter
zwei Hostnamen jede Seite doppelt, mit doppelten Adressen in der Suche. Die
Messeseite trägt zwar einen Canonical auf `https://anelia-wolf.com/her-career/`
(gesetzt in `src/app/(de)/her-career/page.tsx`), der die Kopie zusammenfasst; die
übrigen Seiten tun das für ihre Subdomain-Zwillinge nicht.
## nginx
```nginx
server {
listen 443 ssl;
http2 on;
server_name her-career.anelia-wolf.com;
ssl_certificate /etc/letsencrypt/live/anelia-wolf.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/anelia-wolf.com/privkey.pem;
# Derselbe Docroot wie die Hauptdomain: der hochgeladene Inhalt von out/.
root /var/www/anelia-wolf.com;
# „/“ ist die Messeseite.
location = / {
try_files /her-career/index.html =404;
}
# Was die Seite selbst lädt, kommt aus demselben Verzeichnis.
# (Leere Blöcke erben root und liefern die Datei aus kein Redirect.)
location /_next/ { }
location /brand/ { }
location /photos/ { }
location = /favicon.ico { }
location = /icon.svg { }
location = /apple-icon.png { }
# Alles andere gehört auf die Hauptdomain.
location / {
return 301 https://anelia-wolf.com$request_uri;
}
}
# Port 80 nur zum Hochreichen auf HTTPS.
server {
listen 80;
server_name her-career.anelia-wolf.com;
return 301 https://her-career.anelia-wolf.com$request_uri;
}
```
## Apache
```apache
<VirtualHost *:443>
ServerName her-career.anelia-wolf.com
DocumentRoot /var/www/anelia-wolf.com
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/anelia-wolf.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/anelia-wolf.com/privkey.pem
RewriteEngine On
# „/“ ist die Messeseite (intern, ohne Redirect die Adresse bleibt stehen).
RewriteRule ^/?$ /her-career/index.html [L]
# Dateien der Seite bleiben hier.
RewriteRule ^/(_next|brand|photos)/ - [L]
RewriteRule ^/(favicon\.ico|icon\.svg|apple-icon\.png)$ - [L]
# Alles andere auf die Hauptdomain.
RewriteRule ^/(.*)$ https://anelia-wolf.com/$1 [R=301,L]
</VirtualHost>
```
## Wenn der Hoster keine Rewrites kann
Dann die ganze Subdomain per 301 auf `https://anelia-wolf.com/her-career/`
umleiten. Der QR-Code funktioniert weiterhin der Browser folgt der Umleitung,
ohne dass jemand etwas merkt; in der Adresszeile steht danach die Hauptdomain.
Das ist die schlechtere, aber jederzeit funktionierende Variante.
## Prüfen (nach dem Ausrollen, vor der Messe)
```bash
curl -sI https://her-career.anelia-wolf.com/ | head -1
curl -s https://her-career.anelia-wolf.com/ | grep -o '<link rel="canonical"[^>]*>'
curl -sI https://her-career.anelia-wolf.com/impressum/ | head -2
```
Erwartet: `200`, ein Canonical auf `https://anelia-wolf.com/her-career/`, und für
`/impressum/` ein `301` auf `https://anelia-wolf.com/impressum/`.
Dazu einmal mit dem Handy den echten, gedruckten Code scannen nicht den aus der
PDF-Vorschau, sondern den auf dem gelieferten Druck.
## Nach der Messe
Ab dem 24.10.2026 steht in `src/lib/site.ts` `flags.showHerCareer` auf `false`
(siehe `docs/HANDOVER.md`, Abschnitt 6). Die Seite bleibt erreichbar gedruckte
Codes laufen weiter, und Anelias Rückwand wird nicht am Tag danach eingestampft ,
verliert aber die Termin-Angaben und den Eintrag in der Sitemap. Der Vhost bleibt,
wie er ist.