feat: Team, Villa-Bilder und bestaetigte Camp-Eckdaten
Docker-Images bauen und veroeffentlichen / build-and-push (push) Successful in 2m49s
Docker-Images bauen und veroeffentlichen / build-and-push (push) Successful in 2m49s
- Team-Abschnitt mit neun Personen, Eric Heitz als Head of Modelcamp, Portraets im Rundbogen mit Initialen-Platzhaltern bis Fotos vorliegen - Unterkunftsbilder der Villa La Chiesina lokal in public/images/unterkunft (vom Auftraggeber freigegeben), Hero-Leitbild, Ausstattung, Booking-Link - Migration: Termin 08.05.-15.05.2027, Ort Arcidosso (Toskana), eigenes Bett im geteilten Zimmer, 13 Plaetze; Admin-Werte bleiben erhalten - Reveal: kein Hydration-Fehler mehr bei reduzierter Bewegung - Doku zu offenen Punkten aktualisiert Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
This commit is contained in:
1 parent
28663cda7a
commit
804bb832ea
28 files changed
+220
-89
No files matched your search
+57
-18
@@ -11,9 +11,11 @@
|
||||
* - Termin, Ort, Zimmer-/Bettbeschreibung, Veranstalter, Steuerhinweis und
|
||||
* Bedingungen pflegt der Adminbereich (Datenbank), weil sie den
|
||||
* Live-Verkauf freischalten. Hier steht alles Uebrige.
|
||||
* - Bilder: nur mit bestaetigter Nutzungsberechtigung, als lokale Datei im
|
||||
* Medienverzeichnis (MEDIA_DIR, ausgeliefert unter /media/…). Kein
|
||||
* Hotlinking fremder Bilder (z. B. von Booking.com).
|
||||
* - Bilder: nur mit bestaetigter Nutzungsberechtigung und immer als lokale
|
||||
* Datei, nie per Hotlinking. Feste Bilder liegen in public/images/,
|
||||
* austauschbare Medien im Medienverzeichnis (MEDIA_DIR, /media/…).
|
||||
* Die Unterkunftsbilder stammen aus dem Booking.com-Eintrag der Villa
|
||||
* und wurden vom Auftraggeber am 01.10.2026 zur Nutzung freigegeben.
|
||||
*
|
||||
* Offene Punkte: docs/OFFENE-PUNKTE.md
|
||||
*/
|
||||
@@ -21,12 +23,14 @@
|
||||
export type PlaceholderTone = "cover" | "villa" | "garden" | "room" | "terrace" | "portrait" | "studio";
|
||||
|
||||
export type Media =
|
||||
| { kind: "placeholder"; label: string; tone: PlaceholderTone }
|
||||
| { kind: "placeholder"; label: string; tone: PlaceholderTone; glyph?: string }
|
||||
| { kind: "image"; src: string; alt: string; width: number; height: number };
|
||||
|
||||
export type Confirmable<T> = T & { confirmed: boolean };
|
||||
|
||||
const placeholder = (label: string, tone: PlaceholderTone): Media => ({ kind: "placeholder", label, tone });
|
||||
const portrait = (name: string, initials: string): Media => ({ kind: "placeholder", label: `Porträt ${name}`, tone: "portrait", glyph: initials });
|
||||
/** Lokales Bild aus public/images/unterkunft (1280 x 853 px). */
|
||||
const villa = (file: string, alt: string): Media => ({ kind: "image", src: `/images/unterkunft/${file}.jpg`, alt, width: 1280, height: 853 });
|
||||
|
||||
export const site = {
|
||||
hero: {
|
||||
@@ -35,7 +39,7 @@ export const site = {
|
||||
headline: "Gemeinsam wachsen. In Italien.",
|
||||
subline:
|
||||
"Das ARTISTA Modelcamp 2027 bringt Models an einem Ort in Italien zusammen – zum Lernen, Arbeiten und Wohnen unter einem Dach.",
|
||||
media: placeholder("Leitmotiv: Bild oder Video folgt", "cover"),
|
||||
media: villa("villa-luftbild", "Luftaufnahme der Villa La Chiesina zwischen Zypressen und Wiesen in der Toskana"),
|
||||
},
|
||||
|
||||
camp: {
|
||||
@@ -89,22 +93,57 @@ export const site = {
|
||||
|
||||
accommodation: {
|
||||
title: "Die Unterkunft",
|
||||
lead: "Wohnen, arbeiten und abends zusammensitzen – alles an einem Ort.",
|
||||
// Link zur Unterkunft (z. B. Booking.com), nachzureichen.
|
||||
bookingUrl: null as string | null,
|
||||
lead: "Eine Villa zwischen Zypressen, mit Blick über die Hügel am Monte Amiata. Wohnen, arbeiten und abends zusammensitzen – alles an einem Ort.",
|
||||
name: "Villa La Chiesina",
|
||||
place: "Arcidosso, Toskana",
|
||||
// Ohne Tracking-Parameter; Termin und Personenzahl waehlt man dort selbst.
|
||||
bookingUrl: "https://www.booking.com/hotel/it/villa-la-chiesina-arcidosso.de.html" as string | null,
|
||||
// Ausstattung laut Unterkunftsbeschreibung (Booking.com, Stand 01.10.2026).
|
||||
features: [
|
||||
"Eigener Außenpool (saisonal)",
|
||||
"Großer Garten mit Terrasse",
|
||||
"Blick auf die Berge",
|
||||
"Gemeinsames Wohnzimmer und gut ausgestattete Küche",
|
||||
"Bettwäsche und Handtücher",
|
||||
"WLAN",
|
||||
],
|
||||
images: [
|
||||
placeholder("Unterkunft: Außenansicht", "villa"),
|
||||
placeholder("Unterkunft: Garten oder Terrasse", "terrace"),
|
||||
placeholder("Unterkunft: Zimmer", "room"),
|
||||
placeholder("Unterkunft: Gemeinschaftsbereich", "garden"),
|
||||
villa("villa-eingang", "Die Villa La Chiesina mit Steintreppe und Rasen im Frühling"),
|
||||
villa("pool", "Pool mit Liegen im Garten der Villa"),
|
||||
villa("wohnzimmer-kamin", "Wohnzimmer mit Holzbalkendecke, Natursteinwand und Kamin"),
|
||||
villa("anwesen-luftbild", "Luftaufnahme des Anwesens mit Zypressenallee, Pool und Tennisplatz"),
|
||||
villa("schlafzimmer-einzelbetten", "Schlafzimmer mit zwei Einzelbetten und Holzbalkendecke"),
|
||||
villa("esszimmer", "Esszimmer mit großem Holztisch und Kamin"),
|
||||
villa("terrasse", "Sitzplatz auf der Gartenterrasse"),
|
||||
villa("pool-zypressen", "Pool zwischen hohen Zypressen, im Hintergrund die Hügel der Toskana"),
|
||||
villa("steintreppe", "Alte Steintreppe im Garten unter Bäumen"),
|
||||
villa("arcidosso", "Blick auf den mittelalterlichen Ort Arcidosso mit Burg"),
|
||||
] as Media[],
|
||||
},
|
||||
|
||||
teachers: {
|
||||
title: "Die Dozentinnen",
|
||||
team: {
|
||||
title: "Das Team",
|
||||
lead: "Fotografie, Modelcoaching, Content und eine Küche, die alle zusammenbringt: Diese Menschen sind beim Modelcamp 2027 dabei.",
|
||||
// Namen und Rollen vom Auftraggeber (01.10.2026). Porträts folgen:
|
||||
// Datei in public/images/team/ legen und "portrait" ersetzen, z. B.
|
||||
// { kind: "image", src: "/images/team/eric-heitz.jpg", alt: "Porträt Eric Heitz", width: 1200, height: 1500 }.
|
||||
// Kurzbeschreibungen nur aus freigegebenen Angaben, keine erfundenen Referenzen.
|
||||
head: {
|
||||
name: "Eric Heitz",
|
||||
title: "Head of Modelcamp",
|
||||
role: "Fotograf · Content Creator · Modelcoach",
|
||||
bio: null as string | null,
|
||||
portrait: portrait("Eric Heitz", "EH"),
|
||||
},
|
||||
people: [
|
||||
{ name: null as string | null, role: null as string | null, bio: null as string | null, portrait: placeholder("Porträt Dozentin", "portrait") as Media },
|
||||
{ name: null as string | null, role: null as string | null, bio: null as string | null, portrait: placeholder("Porträt Dozentin", "studio") as Media },
|
||||
{ name: "Michele Ietro", role: "Editorial- und Casual-Fotograf", bio: null as string | null, portrait: portrait("Michele Ietro", "MI") },
|
||||
{ name: "Lola Stoll", role: "Editorial Model · UGC · GNTM 2026", bio: null as string | null, portrait: portrait("Lola Stoll", "LS") },
|
||||
{ name: "Eileen Kaupp", role: "Editorial Model · Fashion · GNTM 2026", bio: null as string | null, portrait: portrait("Eileen Kaupp", "EK") },
|
||||
{ name: "Gabriela Pronkin", role: "Commercial · Casual Model · UGC", bio: null as string | null, portrait: portrait("Gabriela Pronkin", "GP") },
|
||||
{ name: "Stefan Höchtl", role: "Social Media Content Creator", bio: null as string | null, portrait: portrait("Stefan Höchtl", "SH") },
|
||||
{ name: "Saskia Sirowatka", role: "Social Media Managerin", bio: null as string | null, portrait: portrait("Saskia Sirowatka", "SS") },
|
||||
{ name: "André Hartshauser", role: "Workshop-Organisation · Assistenz Küche", bio: null as string | null, portrait: portrait("André Hartshauser", "AH") },
|
||||
{ name: "Ante Rejo", role: "Chefkoch", bio: null as string | null, portrait: portrait("Ante Rejo", "AR") },
|
||||
],
|
||||
},
|
||||
|
||||
@@ -135,7 +174,7 @@ export const NAV_ITEMS = [
|
||||
{ id: "camp", label: "Das Camp" },
|
||||
{ id: "leistungen", label: "Leistungen" },
|
||||
{ id: "unterkunft", label: "Unterkunft" },
|
||||
{ id: "dozentinnen", label: "Dozentinnen" },
|
||||
{ id: "team", label: "Team" },
|
||||
{ id: "artista", label: "Über ARTISTA" },
|
||||
{ id: "preis", label: "Preis" },
|
||||
{ id: "fragen", label: "Fragen" },
|
||||
|
||||
Reference in new issue
Block a user