Das Problem
Ein Portfolio lebt von seinen Inhalten: Blogposts, Projektbeschreibungen, ein Glossar mit Fachbegriffen. Bei mir liegen diese Inhalte als Textdateien direkt neben dem Quellcode der Website, im selben Repository auf GitHub. Für Entwickler ist das perfekt: Editor aufmachen, Datei ändern, speichern, fertig. Praktisch, solange man sein Arbeitsgerät dabei hat. Unpraktisch, sobald man das gerade mal nicht dabei hat, oder eine technisch weniger versierte Person einen Eintrag erstellen oder bearbeiten muss.
Genau dafür gibt es Content-Management-Systeme. Eine Weboberfläche, die zwischen den Inhalten und einem Menschen am Bildschirm steht. Formulare statt Textdateien, ein Speichern-Button statt Terminal-Befehlen.
Die Optionen
Der erste Reflex vieler Leute ist WordPress. Kennt jeder, überall installierbar, aber mit einer eigenen Datenbank und einem eigenen Theme-System. Mein Portfolio wäre dann nicht mehr eine Astro-Website mit Inhalten, sondern zwei nebeneinander laufende Systeme mit einer Brücke dazwischen.
Eine vergleichsweise junge Kategorie stellen Git-basierte CMS dar, die das bereits vorhandene Repository der Website selbst als Datenbank benutzt. Die drei bekanntesten Vertreter sind Decap CMS, TinaCMS und Keystatic.
Warum Keystatic
Keystatic kommt von Thinkmill, einer australischen Agentur mit sehr guter Reputation im JavaScript-Ökosystem. Es ist Open Source, explizit für Astro gebaut und lässt sich vollständig selbst hosten.
Den Ausschlag haben drei Dinge gegeben:
Astro-nativ. Die Integration in mein bestehendes Projekt war eine Handvoll Zeilen in der Konfigurationsdatei. Keystatic versteht, wie Astros Content-Verwaltung funktioniert, und ich musste die Struktur meiner Inhalte nicht daran anpassen.
Git als Speicher. Jeder Klick auf „Speichern” im Browser wird zu einem echten Commit im Repository — und löst damit automatisch die bestehende CI/CD-Pipeline aus, die die Website neu baut und deployt. Ich musste nichts an meiner Infrastruktur anfassen.
Gutes Admin-Interface. Klare Strukturen, sinnvolle Standardeinstellungen, funktioniert ohne Erklärung. Kein Designer-Experiment, kein überfrachtetes Dashboard, sondern ein Werkzeug, das genau das tut, was es soll.
Wie es sich einfügt
Das Portfolio bleibt eine statisch generierte Astro-Website mit Inhalten als Textdateien im Repository. Die bestehende Pipeline baut daraus bei jedem Push eine fertige Seite und spielt sie auf den Webserver. Daran ändert sich nichts.
Was neu ist: Unter cms.mathis-adler.dev läuft jetzt eine zweite, kleine Anwendung. Ihre einzige Aufgabe ist, das Keystatic-Admin-Panel bereitzustellen. Wer sich dort einloggt, bearbeitet die Inhalte des Portfolio-Repositories direkt im Browser. Speichern = Commit = automatischer Neubau der Live-Seite. Alles über dieselbe Pipeline, die es vorher auch gab.
Die Verbindung zwischen beiden läuft über eine eigens angelegte GitHub App, die genau ein einziges Repository beschreiben darf und sonst nichts. Der Login im CMS läuft über diese App: Wer sich einloggen kann, darf auch committen - was im Terminal ja auch schon der Fall war.
Der Alltags-Workflow
Im Browser cms.mathis-adler.dev öffnen, einloggen, in der Seitenleiste zwischen Blog, Projekte und Glossar wählen, einen Eintrag öffnen. Das Formular zeigt alle Metadaten als Felder - Titel, Beschreibung, Datum, Tags, Glossar-Verweise. Der eigentliche Text wird in einem Rich-Text-Editor bearbeitet, der sich anfühlt wie eine klassische Textverarbeitung: fett, kursiv, Überschriften, Listen, Zitate, Code-Blöcke, Bilder per Drag-and-Drop.
Speichern drücken. Wenige Sekunden später ist der neue Stand im Repository, eine halbe Minute später ist die Live-Seite neu gebaut und online. Keinen manuellen Zwischenschritt, keinen separaten „Veröffentlichen”-Button.
Was ich gelernt habe
Git als Inhalts-Speicher funktioniert überraschend gut. Versionsgeschichte, Wiederherstellung per Knopfdruck, ein klares Protokoll jeder Änderung — all das kommt gratis dazu, weil es sowieso schon da war. Keine separate Datenbank zu sichern, keine eigenen Rollback-Prozeduren. Die Infrastruktur, die ich als Entwickler ohnehin nutze, trägt das CMS einfach mit.
Das richtige Werkzeug ist das, das zum Rest der Umgebung passt. Keystatic gewinnt nicht, weil es das mächtigste CMS am Markt ist. Es gewinnt, weil es Astro von Grund auf versteht, weil es mein Deployment-Modell übernimmt statt es zu ersetzen, und weil es mir erlaubt, einen halben Gedanken vom Handy aus festzuhalten, ohne die Entwicklungsumgebung hochfahren zu müssen.