Statisches HTML am Edge
Astro rendert jede Seite zur Build-Zeit in reines HTML; Cloudflare liefert es über Workers Static Assets aus. Der Leser bekommt HTML und ein paar Kilobyte CSS – fast kein JavaScript läuft.
301.sh ist ein Blog darüber, was Cloudflares Free-Tarif wirklich kann. Und die Seite läuft selbst komplett auf diesem Free-Tarif – statische Seiten, Suche im Browser, zur Build-Zeit gezeichnete Share-Cards, eine Oberfläche für KI-Leser und Workers, die jeden neuen Artikel in vier soziale Netzwerke posten. Kein Server, keine Datenbank, keine monatliche Rechnung. Hier ist der ganze Stack.
Die Texte haben eine Aufgabe: ein echtes Problem auf Cloudflare lösen – Weiterleitungen, DNS, HTTP-Header, die Grenzen des Free-Tarifs – und jede Zahl gegen die aktuelle Dokumentation prüfen, mit dem Datum der Prüfung. Wo der native Cloudflare-Weg endet, übernimmt 301.st, die Plattform, zu der dieser Blog gehört.
Eine Handvoll Bausteine, jeder so gewählt, dass das Ganze kostenlos bleibt.
Astro rendert jede Seite zur Build-Zeit in reines HTML; Cloudflare liefert es über Workers Static Assets aus. Der Leser bekommt HTML und ein paar Kilobyte CSS – fast kein JavaScript läuft.
Kein CMS, keine Datenbank, kein Login. Ein Artikel ist eine Datei, eine Änderung ein Pull Request, ein Merge das Deployment – und jede Cloudflare-Zahl trägt das Datum ihrer letzten Prüfung.
Pagefind baut beim Deploy einen statischen Index und durchsucht ihn per WebAssembly direkt im Browser. Kein Suchserver, keine Kosten pro Anfrage – der Index sind einfach weitere statische Dateien.
Jedes Artikelbild – und jede Social-Card – entsteht aus Titel und Tag: SVG, Text in Pfade umgewandelt, als PNG gerendert, ein Layout pro Plattform. Deterministisch und reproduzierbar, ohne Design-Tool und ohne KI.
Ein llms.txt-Index, ein Markdown-Zwilling jeder Seite und Content Negotiation über den Accept-Header: ein schlanker Worker gibt einem Agenten sauberen Quelltext statt Seiten-Chrome.
Den Artikel zu schreiben ist der letzte Schritt von Hand. Ist er veröffentlicht, landet er in einem kleinen JSON-Feed, und für jedes Netzwerk weckt ein eigener Cloudflare-Worker per Cron auf, nimmt den ältesten noch nicht geposteten Artikel und schickt genau einen – Titel und Link, die passende Card, die Tags als netzwerkeigene Hashtags. Was schon draußen ist, merkt sich ein KV-Namespace. Jedes Netzwerk ist ein eigener Worker mit eigenem Token und Zeitplan – fällt einer aus, laufen die anderen weiter.
Vier Netzwerke, vier Cron-Workers, ein KV-Store – alles innerhalb der Grenzen des Free-Tarifs. Weitere warten hinter der Freigabe der Plattformen.
Jeder Artikel ist unter der Cloudflare-Funktion einsortiert, um die es wirklich geht. Zieh an einem Faden: