dejanandClaude Opus 5 9b405ce931 Theme modern: Slide 5 und 6 aus den echten Quellen gebaut
Bisher habe ich die Skizzen entschraffiert statt neu gedacht. Das ist bei
Slide 6 offensichtlich geworden: eine Wabe ohne Zittern ist immer noch
meine Wabe und nicht die Sektion, die es auf der Website schon gibt.

Slide 6 ist jetzt ein Nachbau von app/waitlist/WaitlistNext.tsx. Alle Werte
von dort, mit 1,6 hochskaliert, weil die Liste dort 560 breit ist und hier
896: Wabe 54x48 wird 86x77, Schiene links 26 wird 43 also die Wabenmitte,
Abstand 56 wird 90, Nummer 13 wird 21, Titel 20 wird 32, Text 14,5 wird 23.
Auf der Website leuchten die Waben beim Scrollen nacheinander auf und der
dritte ist blass; ein Standbild kennt keinen Scrollstand, hier sind alle
drei aktiv.

Slide 5 ist ein Nachbau des Architektur-Diagramms aus dem Pitch-Paket:
Kern als gefuellter Kreis in der Mitte, farbiger Ring darum, Pille mit dem
Produktnamen auf dem Ring, Module als Kacheln aussen. Das Diagramm sagt
genau, was die Ueberschrift sagt -- der Kern bleibt, der Ring kommt
drumherum. Meine Wabe hatte dieselbe Aussage, aber in einer Form, die es in
unserer Software nirgends gibt.

Zwei eigene Fehler dabei behoben:

Ich hatte fuer das Theme Farben erfunden (#0E1F1E, #F7FAF9). Die Website
hat ein vollstaendiges Token-Set in app/globals.css. Jetzt stehen dort
dessen Werte: surface, text-primary, text-secondary, container-bg,
border-neutral, accent-yellow-light, accent-yellow-dark, accent-teal-light.

Meine Karten hatten Chamfer und Haarlinie zugleich. In lib/chamfer.ts der
Website steht ausdruecklich, dass clip-path den Rand mitbeschneidet und man
stattdessen fuellen soll. Die Karten sind jetzt gefuellt, ohne Rand.

Das Chamfer-Badge der Website ist zurueck. Es steht dort ueber jeder
Sektion, und im Theme modern traegt es die Einordnung: Die Geschichte, Der
Alltag, Der Wechsel, Was gefehlt hat, Die Loesung, So geht's weiter.

Neu im Vorgehen: nach jeder groesseren Aenderung wird das Skript aus der
Datei geschnitten und mit node --check geprueft. Ein doppelt vergebener
Name hat die Seite still lahmgelegt, und die Pruefung findet so etwas in
einer Sekunde statt in einem Renderlauf.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-13 18:57:44 +02:00
2026-08-10 21:08:28 +02:00
2026-08-11 19:29:24 +02:00
2026-08-11 19:29:02 +02:00

HiveGrid Social — Design-Library & Post-Generator

Eigenständige Werkbank für HiveGrid-Social-Grafiken. Slides werden im Browser als HTML gebaut, im Canvas bearbeitet und pixelgenau als Instagram-taugliche PNGs exportiert.

Das Repo ist bewusst autark. Keine CDN-Verweise, keine Google-Fonts zur Laufzeit, keine Pfade in andere Repos. Alles, was ein Post braucht — Schrift, Logos, Mockups, Screenshots, Bibliotheken — liegt hier.

Starten

./serve.sh          # http://127.0.0.1:4321

Downloads landen direkt in ~/Downloads, ohne Browser-Dialog.

Projekte

Projekt Datei Inhalt Übergabe
Post 1 · Lösung post1.html Carousel, Anzahl frei
Post 2 · Die Geschichte post2.html Carousel, 6 Slides, erscheint 12.08. POST-2.md
Post 2 · Alternative post2-alt.html Derselbe Beitrag im Theme modern

Post 2 gibt es zweimal, in zwei Themes. Projekt und Theme sind zwei verschiedene Dinge: das Projekt sagt, welcher Beitrag, das Theme, wie er aussieht. notebook ist die Zeichenblock-Optik mit Raster und Marker, modern der ruhige Grund mit farbigem Akzentwort und schwebenden Karten. Beide zeigen denselben Beitrag mit denselben Texten.

Die Themes stehen in rules.md §1a mit ihren Unterschieden. Wer eine Visualisierung ändert, muss an beide Dateien denken.

Der Redaktionsplan für alle weiteren Beiträge liegt in redaktionsplan/, gebaut mit python3 redaktionsplan/bauen.py.

Slides anlegen und wegnehmen

Wie viele Slides ein Post hat, steht nicht fest. Unter der Slide-Auswahl:

Knopf Wirkung
+ Neu leere Slide dahinter einfügen
Kopie die gewählte Slide samt Text, Bild und Verschiebungen verdoppeln
Löschen die gewählte Slide wegnehmen (die letzte bleibt stehen)
← → eine Position nach vorn oder hinten

Bei einer einzigen Slide ist der Post ein Einzelbild — die Kopfzeile sagt es, und der ZIP-Knopf verschwindet.

Unter Inhalt (nur diese Slide) stehen Tag, Überschrift, Fließtext und die Auswahl des Screenshots. Getippt wird Text, keine Auszeichnung: *Wort* setzt den Akzent, ein Zeilenumbruch bricht die Zeile um. Das Rahmenformat folgt beim Wechsel automatisch dem Seitenverhältnis der gewählten Aufnahme.

Die Tags sind gestalterisch ausgeblendet (visibility: hidden auf .badge). Der eingetippte Tag beschriftet deshalb vorerst nur den Slide-Knopf im Bedienfeld.

Eigene Bilder importieren

Unter Eigene Bilder wählst du Dateien aus dem Finder, oder du ziehst sie direkt auf eine Slide. Beim Ablegen wird das Bild dort zum zweiten Bild und lässt sich im Bearbeiten-Modus frei schieben und in der Größe ändern; über den Knopf importierst du nur und ordnest danach unter Inhalt zu.

Die Datei geht byteweise unverändert an den Server und liegt danach unter assets/eigene/. Nichts wird neu kodiert, skaliert oder umbenannt — nur Zeichen, die in einem Dateinamen nichts zu suchen haben, weichen einem Bindestrich.

assets/eigene/    importierte Bilder, gehören mit in den Commit

Der Umweg über den Server ist Absicht. Ein Foto als Base64 im Projektstand wäre größer als der gesamte übrige Stand und machte jeden Diff unlesbar. So steht dort nur der Pfad.

Die Auswahllisten unter Inhalt holt der Generator beim Start vom Server (/bilder), importierte Bilder stehen deshalb sofort darin — mit ★ gekennzeichnet.

Mitgelieferte Slides bleiben Vorlagen. Der Stand speichert für sie nur einen Verweis und die Felder, die du überschrieben hast — eine Änderung an der Vorlage im Code kommt dadurch weiterhin bei allen an, die sie nicht angefasst haben. Selbst angelegte Slides stehen vollständig im Stand.

Das Projekt speichert seinen Stand — Einstellungen, Layouts, Muster und alle Verschiebungen aus dem Canvas überleben einen Reload. „Projekt zurücksetzen" wirft ihn weg.

Der Stand liegt im Repo

Nicht nur im Browser: jede Änderung landet auch in state/<projekt>.json. Diese Dateien gehören mit in den Commit. Nur so hat die andere Maschine nach git pull denselben Stand.

state/post1.json       Post 1 · Lösung
state/post1-merk.json  Rückfallpunkt

Beim Laden gewinnt die Datei, der localStorage ist nur der Rückfall, wenn der Server nicht läuft. Wer den Stand ändert, muss also committen und pushen — sonst sieht ihn niemand sonst. Gibt es die Datei noch nicht, wird der Stand aus dem Browser einmalig hineingeschrieben.

Bedienung

Taste Wirkung
← → Slide wechseln (im Bearbeiten-Modus: Element verschieben)
E Bearbeiten an/aus
W Streifen ⇄ Einzelansicht
V Variante hell/dunkel
L M I Layout · Muster · Intensität
C G T Durchgehend · Tag-Ausrückung · Perspektive
D A Slide laden · alle als ZIP

Im Bearbeiten-Modus lassen sich Elemente ziehen und mit den Pfeiltasten pixelweise schieben (⇧ = 10 px).

Ein angeklicktes Element öffnet sein eigenes Feld rechts. Damit ist die Oberfläche geteilt: links die Slide und alles Allgemeine, rechts das eine Element.

Im Element-Feld Wirkung
Text Beschriftung des Elements, *Wort* setzt den Akzent
Schrift / Breite, A− A+ Größe
X Y Stelle auf der Slide, gezählt ab der Mitte, bezogen auf die obere linke Ecke
Ebene wie z-index — höher liegt weiter vorn. Leer heißt Standard
Links Mitte Rechts, Oben Mitte Unten an der Slide ausrichten, 92 px Rand
Position / Größe angleichen denselben Wert auf allen Slides
Löschen nimmt es aus der Slide. Es taucht darunter als „… zurück" wieder auf

Der Streifen ist eine durchgehende Fläche. Jede Slide trägt das gesamte Blatt, ein Element lässt sich also über den ganzen Post schieben und nicht nur in die Nachbar-Slide.

Auf der Fläche bewegen

Maus Wirkung
Ziehen Ausschnitt schieben
Rad Zoomen, auf den Zeiger zu
⇧ + Rad Waagerecht schieben
Leertaste-Ziehen, mittlere Taste Schieben, auch im Bearbeiten-Modus

Ein gewöhnliches Mausrad genügt, ohne Zusatztaste. Im Bearbeiten-Modus zieht die linke Taste das Element unter dem Zeiger — die Fläche schiebt man dort mit gedrückter Leertaste oder der mittleren Taste. Fit unten rechts setzt den Maßstab zurück.

Aufbau

assets/
├── brand/      Wortmarke hell/dunkel, G-Marke (SVG + PNG), Wabe, Geerkens
├── partner/    DATEV, KWP, Google Calendar, Google Drive, MS Outlook, MS Teams
├── mockups/    Geräte-Mockups (Displays ausgeknockt, Screenshot liegt dahinter)
├── screens/    Software-Screenshots
├── eigene/     selbst importierte Bilder
└── fonts/      Manrope 400–800, lokal
vendor/         html-to-image, JSZip
state/          Projektstände, gehören ins Repo
serve.py        Statischer Server + /save, /state, /upload, /bilder
rules.md        Gestaltungsregeln, Farbwerte, Export-Wissen

Regeln

rules.md ist die Arbeitsgrundlage. Farbwerte, Geometrie, Typografie, Layout-Template, Instagram-Export und die Liste der Fallen, in die wir schon getappt sind. Vor jeder Änderung an der Gestaltung dort nachsehen.

Marken-Werte stammen aus der Website (HiveGrid-Website) und sind hier gespiegelt, nicht verlinkt. Ändert sich dort etwas, muss es hier nachgezogen werden.

S
Description
No description provided
Readme
84 MiB
0 Stars 9 Watchers 0 Forks
Languages
HTML 98.7%
Python 0.7%
JavaScript 0.4%
CSS 0.2%