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:
@@ -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
239
docs/OFFENE-DATEN.md
Normal 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 7–14) – 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.7–2.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
128
docs/SUBDOMAIN-HERCAREER.md
Normal 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.
|
||||
Reference in New Issue
Block a user