Key: webseiten-builder · Bereich: Kommunikation · Plan: Basis · Seit: Juli 2026 · Stand: v0.28.55 (2026-10-15)
Die öffentliche Vereinswebseite, erstellt und gepflegt aus CluCore heraus. Veröffentlicht ersetzt sie das Login auf der Root der Club-Domain (https://<club>.cluhu.ch/); /clucore/ bleibt immer der Login-Einstieg.
Der Builder ist keine Django-App im cluhu-Monolith, sondern ein eigener Service mit eigenem Repo (/srv/cluhu/builder/code), eigenem Docker-Stack (cluhu_builder), eigener Postgres und eigener Domain builder.cluhu.ch. In cluhu liegt nur eine dünne Schicht (apps/websitebuilder): das Mapping Club ↔ Builder-Mandant (ClubWebsite), der Wizard, die Seite «Webseite» und der Public-Proxy.
- Kommunikation nur über interne HTTP-APIs (Bearer-Key) und HMAC-signierte SSO-Tokens (60 s gültig; der Vollbild-Link mintet deshalb serverseitig einen frischen Token). Secrets liegen paarweise identisch in beiden
.env.
- Public-Proxy:
core.root_router holt die veröffentlichte Seite serverseitig vom Builder und liefert sie unter der Club-Domain aus (Links umgeschrieben, eigene CSP; seit v0.26.54 auch für YouTube/Vimeo-Einbettungen). Unveröffentlicht = 404 überall. Reservierte Slugs (clucore, admin, api …) überdeckt cluhu.
- Speicher-Slots: bis drei Webseiten je Verein, genau eine live. Kopieren (inkl. Versions-Historie), Umbenennen, Löschen nur mit wörtlicher Eingabe «Webseite löschen». Addon deaktivieren nimmt die Live-Seite offline, löscht aber nichts.
- Warum getrennt: Der Builder hat eigene Modelle (Versionen je Seite, KI-Jobs, Bilddatenbank, Rechtsseiten), eigene LLM-Anbindung und einen Headless-Browser. Das soll den Monolithen weder beim Deploy noch in der Datenbank belasten. Die Kopplung ist dafür explizit: wenige Marker im HTML (
data-cluhu-*) und ein Nachrichten-Protokoll zwischen Editor und cluhu-Rahmen.
- Aktivieren im Addon-Store, direkt weiter in den Wizard.
- Wizard, drei Wege: bestehende Webseiten-Adresse, geführte Fragen oder PDF/Word-Upload. Beim URL-Weg erkennt ein Schnell-Check Vereinsart, Name, Logo und Farben der alten Seite; danach folgt nur noch «Prüfen & starten» (drei statt vier Schritte, v0.28.9). Der Fragen-Weg hat eine gruppierte Vereinsart-Auswahl (64 Arten + «allgemein»); die Tonalität folgt der Vereinsart, bis man sie von Hand wählt. Die Generierung läuft im Builder weiter, auch wenn der Browser zugeht.
- Bilder aus der Bilddatenbank (v0.28.9): 767 lizenzfrei nutzbare Bilder (Content 4:3, Hero 3:1) mit Beschreibung, Vereinsart und Embedding. Jeder Platz bekommt das passendste Bild, pro Seite keines doppelt, der Hero bis drei Bilder als Karussell. Warum nicht mehr Pexels: englische Stichwörter lieferten beliebige, teils unpassende Fotos und Listen ohne Bilder. Pexels bleibt nur Fallback bei leerer Datenbank.
- Editor auf CluCore › Webseite, Live schalten mit Prüfung (unten).
- Eine Leiste (v0.28.4–.6): Die cluhu-Seite hat keine eigene Kopfzeile mehr. Der Builder-Editor sitzt randlos unter dem CluCore-Header und zeigt seine getönte Leiste: Status-Chip (Live/Entwurf), Name, aktuelle Seite, Menü «Aktionen». Warum: Vorher lagen Slot-Leiste, Publish-Leiste und eine schwarze Builder-Leiste übereinander. Die cluhu-Aktionen (Live schalten, Slots, Umbenennen, Kopieren, Löschen) bleiben cluhu-Formulare mit CSRF und Bestätigung; der Editor zeigt nur die Einträge und löst sie per Nachricht aus. Der Handshake wiederholt sich, bis der Rahmen antwortet — sonst fehlten auf dem Handy Einträge (v0.28.21).
- Seitenliste links (v0.28.23): Griff zum Ziehen, Uhr für die Versionen der Seite, Menü «⋯» (Einstellungen, Umbenennen, im Menü verbergen, Startseite, hoch/runter, Löschen), «+ Neue Seite». Darunter feste Zeilen Header, Footer, Design.
- Menü = Seiten (v0.28.23): Das Header-Menü folgt der Seitenliste. Warum: Eine separat gepflegte Menüliste lief nach dem Erstellen auseinander. Ventile: abweichende Menübeschriftung je Seite, «zusätzliche Links» im Header.
- Fenster «Live schalten und Speicher-Slots» (v0.28.23): Karte je Slot, neue Webseite mit Wizard oder leer, Live schalten mit Prüfung und «Trotzdem live schalten», Webseite ansehen, Umbenennen, Kopieren, Löschen.
- Design-Panel (v0.28.21/.23): Style-Pack nachträglich wechseln über fünf Karten (Sport-Energy, Warm Community, Editorial Clean, Heritage Modern, Vibrant Spirit) mit Sofort-Vorschau. Eigene Einstellungen bleiben stehen (Grundwerte ← Pack ← Verein); «Alles auf Pack zurücksetzen» nur auf Wunsch. Vom Wizard fest in den Hero geschriebene Werte wechseln nicht mit.
- Vollbild-Editor nur am Desktop; im Alleinbetrieb führt «Webseiten-Aktionen in cluhu» zurück.
Seit September ersetzt ein Content-Block die alten Einzelvorlagen (Builder-Commits 2026-09-18 bis 2026-10-10; in cluhu nur v0.26.54 für die CSP). Begriffe: Block → Elemente → Inhalte → Anordnung.
- Wizard im Editor: Blocktyp → Elemente → Anzahl Inhalte → Anordnung/Stil mit Vorschau. Elemente: Bild 1/2 (Breite, Kreis, Lightbox), Bild-Karussell, Video (YouTube/Vimeo, Laden erst nach Klick), Tabelle, Datum, Icon, Kennzahl, Kurzinfos, Etiketten, Titel, Untertitel, Zitat, Text 1/2, «Mehr», Ort/Karte, Datei, zwei Buttons; dazu Effekte (Einblenden, Anheben, Zoom, Parallax).
- Sechs Anordnungen: bild-links, bild-rechts, alternierend, gestapelt, karten, karussell (Scroll-Snap, Punkte/Pfeile, Autoplay 6 s). Darstellung in sechs Ebenen, «spezifischer gewinnt» (Theme/Website → Block → alle Inhalte → alle Elemente → Inhalt N → Element in N); Mobile-Overrides nur auf den mittleren Ebenen; Farben aus der Theme-Palette.
- Rezepte als Startpunkte: Text neben Tabelle, Team, Galerie, Zahlen, Dokumente, CTA, Testimonials, Timeline. Warum: Die sechs abgelösten Blocktypen waren je eine Vorlage mit eigenem Panel. Als Rezept sind sie nur Voreinstellungen desselben Blocks und bleiben frei umbaubar. Bestand wurde migriert.
- Hero bleibt ein eigener Block auf der Engine: genau ein Inhalt, volle Breite, Bild nur als Hintergrund (eines fest, mehrere als Überblend-Karussell) oder «Karussell mit wechselndem Inhalt» mit Element-Schaltern je Slide. Der Hintergrund-Modus wird im Wizard entschieden. Warum eigener Block: Der Hero soll als Hero erkennbar bleiben, nicht als Content-Block mit Sonderregeln.
- KI-Edit versteht den Content-Block (Schema, lesbare Diff, Vorher/Nachher; übernimmt Elemente, Inhalte, Anordnung, Stil).
- Bewusst nicht: kein Kontakt-Element im Content-Block (Kontakt, News-Liste, Akkordeon, Sponsoren-Wall, Newsletter, Spielplan, Navigation, Footer bleiben eigene Blöcke), keine Varianten-Layouts, keine Popups, kein Inline-Tippen in der Vorschau (Inhalte werden im Panel bearbeitet). Kontakt-Block: Karte zeigt seit 2026-10-13 den Standort statt der Weltkarte (Geokodierung mit Cache, OSM-Hinweis klein auf der Karte).
- Was: fünf Layouts (Logo links, Menü zentriert, gestapelt, zwei Zeilen mit Kontakt, minimal mit Burger), Element-Checkliste (Logo, Vereinsname, Untertitel, Menü, zusätzliche Links, Kontakt, Button, Login, Rechtliches, Ankündigung), Hintergrund hell/dunkel/transparent/Glas, Sticky, Logo-Grösse, Wortmarke «nur bei Platz», Burger-Modus (Handy/automatisch bei Überlauf/immer), Burger-Icon und -Menü (Klappe/Vollbild/Lade), Menüpunkt- und Aktiv-Stile, Untermenü Klappe/Mega. Bestehende Header wurden sichtbar unverändert migriert.
- Angemeldet (v0.28.45): «Login» wird zu «Mitgliederportal» (Beschriftung einstellbar), daneben ein Chip mit Profilbild/Initialen und Name, der nur «Abmelden» anbietet. Warum: Vorher war der Name selbst der Portal-Link, aktiv in derselben Farbe wie Kreis und Button — kein Kontrast, verwechselbar. Im Portal ist nur «Mitgliederportal» aktiv (v0.28.46).
- Kopplung: cluhu erkennt den Login-Link am Marker
data-cluhu-login und übernimmt den Header ins Portal (data-cluhu-chrome). Warum Marker: Vorher hing cluhu an href + title + Text «Login»; jede Umbenennung hätte den Login gebrochen.
- iPhone-Feinschliff: kein CSS-Container im Header, weil Safari das Abmelden-Menü clippte (v0.28.47); Menü als Popover am
<body> (v0.28.49); Chip serverseitig gefüllt statt nachgeladen, kein Flackern, keine Anfrage für anonyme Besucher dank Marker-Cookie (v0.28.52/.55); Wortmarke wird bei Schrift-, Logo- und Chip-Änderungen nachgemessen statt einmal nach 50 ms (v0.28.55). Eine Bestätigung auf einem echten iPhone ist nicht dokumentiert, nur die iPhone-Ansicht im Headless-Browser.
- Footer: Checkliste (Logo, Slogan, Kontakt mit Marken-Icons, Seitenlinks, Login, Impressum, Datenschutz, weitere Rechtsseite, Copyright mit
[Jahr]/[Vereinsname]), fünf Layouts, Stil-Parameter, fixe Zeile «Webseite von cluhu». Standard seit 11.10.2026 ohne Logo, Kontakt und Seitenlinks.
- Rechtsseiten: Impressum, Datenschutz und eine weitere Seite (Text oder PDF) unter
/impressum/ usw.; leichtes Textformat mit Platzhaltern, Schweizer Vorlagen («keine Rechtsberatung»), «Stand»-Zeile, Historie fünf Fassungen. Warum eigenes Format statt HTML: die einzige Stelle, an der Benutzertext als HTML ausgeliefert wird, darum strikt begrenzt.
- Vereinsdaten: Einstellungen › Vereinsdaten in cluhu (Name, Slogan, Kontakt, Adresse, Logo und Logo für dunklen Grund). Jede Änderung synchronisiert alle Webseiten des Vereins. Im Editor gibt es dafür keinen Menüeintrag mehr; Footer- und Rechtsseiten-Panel zeigen «Aus den Vereinsdaten … in cluhu bearbeiten» (v0.28.23). Warum: eine Wahrheit, gepflegt dort, wo der Verein seine Stammdaten hat. Social-Links bewusst nur im Footer.
- Prüfung vor Live: fehlender Footer oder leere Rechtsseiten geben einen gelben Hinweis mit «Trotzdem live schalten»; ist der Builder nicht erreichbar, geht es ohne Prüfung weiter.
Auslöser: ein Testlauf mit mv-spiez.ch (Drupal) brachte von 45 Fotos drei, das Register mit 40 Namen ging verloren.
- Bilder entdoppeln: CMS liefern jedes Foto mehrfach (Drupal
/styles/, WordPress -1024x768, .webp-Zwilling). Varianten werden zusammengefasst, die grösste gewinnt. Budget je Quellseite (12, Galerie 45, total 150) statt global 40. Vision-Beschreibung nur für 30 Fotos, sonst dauerte ein Lauf über eine halbe Stunde.
- Struktur ohne KI: Ein Seiten-Profil parst Tabellen (Personen, Termine, Beträge), Jahrgänge und Bildzahl. Register, Chronik und Galerie werden deterministisch gesetzt, die Kontaktseite immer. Warum nicht die KI: Aus 300 Zeichen Anriss erkennt kein Modell ein Register, und Namen abtippen lassen heisst Fehler einbauen.
- Faktenprüfung: Modelle erfanden Mailadresse, Telefon, PLZ und Gründungsjahr. Kontaktangaben bleiben nur mit Beleg (Quelltext, Crawl, Vereinsdaten); Sätze mit unbelegten Jahreszahlen werden entfernt. Hero-Buttons führen nie auf ein PDF.
- Übernahme-Bericht einmalig auf der Seite «Webseite» (Fotos gefunden/übernommen/platziert, Seiten, Personen, verworfene Angaben). «Galerie aus übernommenen Fotos» verwertet freie Fotos.
- Datei-Browser-Picker im Editor, Upload direkt in den öffentlichen Ordner «Web-Dateien». SVG-Logos seit v0.28.18 als Bild wählbar und inline ausgeliefert (Skripte per CSP gesperrt).
- Personen (v0.28.52–.55): Register «Personen» im Picker zeigt nur freigegebene Vereinsfotos; Klick setzt einen Verweis, Entzug der Freigabe wirkt sofort. Das Profilbild gehört der Person, erscheint im Header-Chip und bei Beiträgen, die sie selbst schreibt, nicht im Picker. Details auf der Seite Personen. Warum kein Datei-Browser: dort hängen Rechte an Ordnern, hier an Personen.
Live seit 2026-10-13 unter musikverein-spiez.cluhu.ch: fünf Seiten, Hero-Karussell mit echten Gruppenfotos, Register-Karten mit Instrumentenbildern aus der Bilddatenbank und allen 40 Namen, Rückblick-Zeitstrahl, Galerien je Jahrgang, Kontakt mit Karte. Handgebaut auf der Engine, als Referenz dafür, was Übernahme plus Nacharbeit erreichen. Alle Fotos liegen im Datei-Browser des Clubs; eine Kopie steht beim Test-Club musiktest. Die Datenübernahme aus dem Altsystem steht auf der Seite Migration Musikverein Spiez.
- Kein Freigabe-Workflow für Profilbilder; Zuschneiden im Browser offen.
- Team-Block übernimmt aus dem Personen-Picker nur das Bild, nicht Name/Funktion (offen). Automatische Autorzeile bei selbst geschriebenen Beiträgen existiert noch nicht.
- Drei Slots fest (Kandidat für Plan-Differenzierung).
- Keine Weiche nach Bildschirmgrösse im Aktionen-Menü; kein Vollbild-Editor am Handy.
- Pexels nur Fallback; Social-Links nicht in den Vereinsdaten.
- Die Content-Engine (rund 45 Builder-Commits) hat keine Einträge im cluhu-Changelog; das Warum steht nur hier und in den Session-Notizen.