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>
Anelia Wolf – Website
Statische Website für Anelia Wolf (Keynote Speakerin, Trainerin, Coach).
Vierzehn Routen in zwei Sprachen: Startseite, drei Leistungsseiten, die Messeseite
zur herCAREER Expo, Impressum und Datenschutz – deutsch auf /, englisch unter
/en/ – plus die 404.
Next.js 16 (App Router) im Static Export, Tailwind v4, GSAP + Lenis, TypeScript. Kein Backend, keine Datenbank, keine Formulare.
Entwickeln und bauen
npm install
npm run dev # http://localhost:3000
npm run build # erzeugt out/
npm run lint
npx tsc --noEmit
next.config.ts setzt output: "export" und trailingSlash: true. Der Build schreibt
den fertigen Ordner out/ – das ist das komplette Deployment: rein statische
Dateien für einen beliebigen Webhoster (Apache, nginx, Uberspace, Netlify, …).
Kein Node-Prozess auf dem Server, kein next start.
Was diese Seite bewusst nicht tut
Diese Regeln sind nicht kosmetisch – die Datenschutzerklärung sagt sie zu:
- keine externen Requests: keine Google Fonts, keine CDNs, keine Videos,
keine Karten, keine Social-Plugins, keine Analytics. Schriften werden über
next/fontzur Build-Zeit selbst gehostet. - kein Storage: kein localStorage, kein sessionStorage, keine Cookies – deshalb auch kein Cookie-Banner.
- Kontaktformular mit Serverversand, kein Newsletter. Abschnitt 06 sendet an
/api/contactbeim Hoster; die Anfrage landet im Postfachinfo@anelia-wolf.comim Ordnerweb-anfragen(kein Formulardienst eines Dritten). Alle übrigen Kontaktwege laufen weiter übermailto:und Telefon.
Wer eine dieser Zusagen ändert, muss src/content/legal.ts (Ziffer 2, 3 und 6)
mit ändern.
Wo was liegt
| Pfad | Inhalt |
|---|---|
src/app/(de)/ |
deutsche Routen (page.tsx je Seite) und ihr Wurzel-Layout mit <html lang="de"> |
src/app/en/ |
englische Routen und ihr Wurzel-Layout mit <html lang="en"> |
src/app/global-not-found.tsx |
404 für unbekannte Adressen – wird zu out/404.html |
src/components/pages/ |
Der Aufbau jeder Seite, einmal für beide Sprachen |
src/content/en/ |
die englischen Texte, Datei für Datei dieselbe Struktur |
src/lib/i18n.ts |
Pfade beider Sprachen, Sprachumschalter, hreflang |
src/content/*.ts |
Sämtliche Texte. Wer Copy ändert, ändert nur hier – nie im JSX. |
src/lib/site.ts |
Stammdaten (Name, E-Mail, Telefon, LinkedIn), Navigation, Routen, Flags |
src/lib/legal.ts |
Platzhalter-Logik, Build-Guard, LEGAL_TODO / CONTENT_TODO |
src/lib/assets.ts |
Build-Zeit-Prüfung der Drop-in-Dateien (fehlt eine, rendert die dokumentierte Variante B) |
src/components/ |
layout/, motion/ (GSAP-Primitiven), ui/, brand/, home/, services/ |
public/brand/, public/photos/ |
Drop-in-Slots für Logo und Fotos (je eigene README) |
docs/superpowers/ |
Spec und Build-Plan |
docs/SUBDOMAIN-HERCAREER.md |
her-career.anelia-wolf.com – Ziel des QR-Codes auf der Rückwandgrafik: DNS, Zertifikat, Vhost |
Drop-in-Assets
Fehlt eine Datei, bricht nichts – die Seite rendert die dokumentierte Alternative:
| Datei | Fehlt sie, dann … |
|---|---|
public/brand/logo-mark.svg |
typografisches <WolfMark/>-Monogramm statt des echten Logos |
public/brand/logo-full.png |
kein Social-Preview-Bild in den OpenGraph-Daten |
public/photos/anelia-hero.jpg |
Hero ohne Foto (Monogramm trägt die Fläche) |
public/photos/anelia-portrait.jpg |
„Über Anelia“ ohne Foto |
public/photos/anelia-stage.jpg |
Keynotes-Seite ohne Bühnenfoto |
public/speaker-profil.pdf |
Speaker-Profil-Zeile entfällt (zusätzlich flags.showSpeakerPdf) |
Das gelieferte Logo-SVG wird inline eingebettet. Enthält es ein <script>,
bricht der Build ab – dann eine Export-Variante ohne Interaktivität liefern.
Flags (src/lib/site.ts)
| Flag | Bedeutung |
|---|---|
showPlaceholders |
true bis zum Launch: offene Angaben stehen sichtbar als „[…]“ in Gold |
hostOutsideEu |
nur true, wenn Hoster/Office-Anbieter außerhalb EU/EWR sitzen (Drittland-Absatz) |
showFaq, showStimmen, showSpeakerPdf, showSecondTalk, show24hPromise, showIndustry, showTwins |
schalten einzelne Blöcke frei, sobald die Inhalte freigegeben sind |
showHerCareer |
true, solange die herCAREER Expo bevorsteht: nur dann trägt /her-career/ die Termin-Angaben und steht in der Sitemap. Ab 24.10.2026 auf false. |
Vor dem Livegang
LEGAL_TODOundCONTENT_TODOinsrc/lib/legal.tsabarbeiten – Anschrift, USt-IdNr., Hoster, Aufsichtsbehörde, Bildnachweise, Dauer-/Paketangaben.- Erst dann
flags.showPlaceholdersauffalsesetzen. Steht danach irgendwo noch ein „[…]“ in einer Pflichtangabe, bricht der Build mit einer Fundstelle ab – der Flip geht nicht ungelesen live. npm run buildund den Inhalt vonout/hochladen.