Zum Inhalt springen
shellyshale

Website-Fabrik

Ein Auftrag geht rein, eine fertig ausgelieferte Website kommt raus. Warteschlange, Bau-Runner, Prüfung und Auslieferung für Kavent.

Ein Bauauftrag, Station für Station
  1. 01SitepipeKundenakte, Warteschlange, Offerten und MailsFastAPI · Postgres
  2. 02RunnerPod holt den nächsten Auftrag selbst abPull statt Push
  3. 03BauAstro-Seite nach festen Vorgaben, ein Sprachmodell schreibt den EntwurfClaude
  4. 04PrüfungBuild, Nachkontrolle, Mängellisteohne Browser
  5. 05AuslieferungRepo, CI, Registry, Argo CD, Tunneleigener Cluster
  6. 06MeldungErgebnis und Kosten zurück in die AkteTelegram

Alle Stationen melden ihren Zustand an Sitepipe zurück. Ein Bau, der hängen bleibt, ist dort sichtbar und lässt sich fortsetzen, statt still zu verschwinden.

Worum es geht

Kavent baut Websites für kleine Betriebe. Ein grosser Teil der Arbeit ist immer gleich: Inhalte der alten Seite einlesen, eine neue Seite aufsetzen, ausliefern, nachfassen. Diese Strecke habe ich zusammen mit meinem Geschäftspartner automatisiert. Die Gestaltungsentscheide und der Kontakt mit den Kunden bleiben Handarbeit.

Für die Kunden heisst das: Sie sehen einen Entwurf ihrer neuen Website, bevor sie etwas bestellen, und der Preis steht vorher fest (Preise und Leistungen).

Aufbau

Sitepipe ist die Zentrale: Kundenakten, eine Warteschlange mit Zeitfenstern, Offerten, Verträge und Mailentwürfe. Eine Aussen-API erlaubt anderen Diensten, Aufträge zu holen und Ergebnisse zu melden; auch ein E-Ink-Display liest dort, was heute zu tun ist.

Der Runner läuft als Pod im Cluster und holt Aufträge selbst ab. Er legt ein Projekt aus einer Vorlage an, lässt ein Sprachmodell den Entwurf bauen und prüft das Ergebnis, bevor irgendetwas veröffentlicht wird. Danach legt er das GitLab-Repo an, schreibt die Manifeste ins Cluster-Repo und setzt die Route im Tunnel.

n8n übernimmt die Ränder: Telegram, Postfach, Rückmeldungen.

Was ich dabei gelernt habe

Ein leeres Ergebnis ist in n8n kein Ergebnis. Liefert ein Knoten eine leere Liste, laufen die Knoten danach gar nicht, ohne Fehler und ohne Spur. Bei allem, was Listen liefert, gehört «Always Output Data» eingeschaltet.

Ein Telegram-Bot hat genau einen Webhook. Zwei aktive Workflows mit demselben Token überschreiben sich gegenseitig. Alles, was ein Bot empfängt, gehört in einen Workflow.

Namen sind Schlüssel. Gibt es ein Verzeichnis schon, weicht der Runner auf name2 aus. Repo, Namespace und Adresse heissen dann anders als der Kunde in der Akte. Seither führt Sitepipe den Projektnamen getrennt vom Kundennamen.

Neustarts nur, wenn nichts läuft. Ein Bau dauert 20 bis 40 Minuten. Wer den Runner mittendrin neu startet, verliert ihn; das Ergebnis ist ein halber Bau. Vor jedem Neustart zuerst ins Log.

PlatzhalterBildschirmfoto des Cockpits (mit Testdaten, ohne echte Kunden)