Zum Inhalt wechseln
cutty.dev
All posts

Der Tech-Stack von cutty.dev — bewusste Entscheidungen

Was steckt hinter cutty.dev und warum? Ohne Evangelismus – die Philosophie: ein langweiliger, stabiler Stack, Hosting in der EU und Datenschutz, der fest in der Architektur verankert ist, sodass eine einzelne Person sie warten kann.

Die meisten „mein Tech-Stack“-Einträge sind eine stolze Liste von Neuheiten. Schau mal, ich habe das, ich habe jenes, und hier ist noch eine ganz frische Bibliothek von letzter Woche. Dieser wird anders sein.

Denn die Wahrheit ist: Wenn man ein Projekt alleine leitet, sucht man nicht nach dem Trendigsten. Man sucht nach etwas, das einen nicht um drei Uhr morgens aufweckt. Und genau darum geht es bei diesem gesamten technologischen Stack von cutty.dev: langweilig statt modisch, europäisch statt amerikanisch, privat von Grund auf, und einfach genug, dass ein einzelnes Paar Hände es bewältigen kann.

Ich gehe es nacheinander durch, so als würde ich es dir bei einem Kaffee erklären.

Server-gerendertes Astro (und warum nicht etwas „Cooleres“)

cutty.dev ist Astro mit Server-Side Rendering. Jede Anfrage geht durch den Server, rendert die Seite und sendet fertiges HTML zurück. Langweilig? Genau darum geht es.

Ich wollte drei Dinge: Server-Side-Rendering ohne schweren Overhead, ordentliche Multi-Language-Unterstützung direkt ab Werk und Geschwindigkeit ohne Performance-Verlust. Astro bietet all das, und der Code bleibt lesbar. Wenn ich nach einer zweimonatigen Pause darauf zurückkomme, weiß ich genau, was dort passiert. Bei Solo-Projekten ist das mehr wert als jedes trendige Plugin, das nach einem Jahr von niemandem mehr unterstützt wird.

Eine Datei statt einer Datenbank mit Feuerwerken

SQLite. Eine Datenbank, eine Datei auf der Festplatte. Dazu kommt eine Abfrageschicht, die mit TypeScript kommuniziert, sodass, wenn ich die Datenstruktur ändere, der Fehler im Editor erscheint und nicht mitten in der Nacht in der Produktion.

Warum genau das? cutty ist "read-heavy". Jemand klickt auf einen gekürzten Link, wir führen einen Lesezugriff durch und erhöhen den Zähler. Das ist alles. SQLite bewältigt diesen Traffic problemlos, bis zu wirklich großen täglichen Zahlen. Und das Backup? Du kopierst die Datei. Fertig. Ohne Replikations-Zeremonien, ohne Skripte, an deren Funktionsweise sich niemand mehr erinnert.

Hier musst du auf eines achten, denn das ist eine häufige Falle: Die Leute hören „SQLite“ und denken „ein Spielzeug für ein Abschlussprojekt“. Das stimmt nicht. Weniger bewegliche Teile bedeuten weniger Dinge, die kaputtgehen können. Das ist keine Einsparung auf Kosten der Qualität, sondern eine bewusste Entscheidung.

Der Server steht in Europa und das ist kein Zufall

Dedizierter Server in der EU. Eigener TLS, Reverse Proxy mit automatischem HTTPS, Container-Anwendung.

Dies ist das Fundament der Art und Weise, wie cutty mit Daten umgeht. Ich weiß genau, wo sie sich physisch befinden (bei Kunden aus der EU und der DSGVO ist dies keine bloße Randnotiz, sondern eine Voraussetzung), ich bin nicht an einen einzelnen Anbieter gebunden, nichts fließt automatisch über den Ozean ab, und die Kosten sind vorhersehbar, anstatt zusammen mit dem Traffic zu springen.

Ja, bequeme Plattformen aus dem Westen würden einen schnelleren Start ermöglichen. Man klickt, deployt, es funktioniert. Nur bezahlt man dafür mit dem Ort, an dem die Daten Ihrer Nutzer landen. Für mich war das ein schlechter Deal.

Übersetzungen macht sein eigenes Modell, bei sich selbst

cutty spricht 25 Sprachen. Dies wird von einem lokalen, offenen KI-Modell übersetzt, das auf meiner Infrastruktur läuft. Ich sende den Text aus der Benutzeroberfläche an keinen externen Anbieter.

Die Vorteile sind praktisch. Eine einzelne Übersetzung kostet null. Ich habe die volle Kontrolle über die Qualität und kann sie jederzeit aktualisieren. Und eine Maschine braucht immer ein menschliches Auge, daher wurde jede dieser 25 Sprachen überprüft. Aber die Tatsache, dass ich dies bei mir selbst mache, bedeutet, dass Datenschutz kein Posten auf der Preisliste ist. Er ist eine Eigenschaft dessen, wie das Ganze aufgebaut ist.

Tailwind, Container und einige kleinere Entscheidungen

Style? Utility-first, also Tailwind. Kein CSS-in-JS, keine separaten Stylesheets, alles direkt in den Templates. Ich verschwende keine Zeit mit dem Erfinden von Klassennamen; ungenutzte Styles landen sowieso nicht auf der finalen Seite, und das Design hält zusammen, weil das System es selbst erzwingt. Für eine einzelne Person zählt jede Minute, die nicht mit Kleinkram verschwendet wird.

Die Implementierung ist Docker. Dieselbe Umgebung lokal und in der Produktion, Schluss mit „auf meinem Rechner hat es funktioniert“. Und falls es jemals nötig sein sollte, ziehe ich alles in etwa einer halben Stunde auf einen anderen Server um. Portabilität ist eine stille Form der Unabhängigkeit.

Was ich daraus gelernt habe

Ein langweiliger Stack gewinnt. Astro, SQLite, Tailwind, Container. Alles ist ausgereift, bewährt und dokumentiert. Nichts bricht in dem Moment zusammen, in dem man es am wenigsten braucht.

Hosting in der EU ist bereit für die Produktion, wirklich. Die Vorstellung, dass man „in die große amerikanische Cloud gehen muss, um es ernst zu meinen“, ist ein Märchen. Lokale KI ist ebenfalls real; man muss Daten nicht an eine externe API übergeben, um ordentliche Übersetzungen zu erhalten. Und das letzte Ding: Eine Person kann etwas veröffentlichen, das wie die Arbeit eines ganzen Teams aussieht. Man muss nur bedenken, dass Zeit teurer als Geld ist, und in dieser Hinsicht jedes Bauteil sorgfältig auswählen.

Wenn du etwas Eigenes aufbaust, stelle dir bei jeder Technologie eine Frage: Werde ich in der Lage sein, es in einem Jahr selbstständig zu warten? Wenn nicht, dann hast du wohl die Antwort.

Alles funktioniert hier: cutty.dev. Und wenn du über eine dieser Entscheidungen sprechen möchtest, schreib an [email protected], ich antworte noch am selben Tag.