Stack

Die technische Fassung.

Diese Seite ist für Unternehmen, nicht für Kunden. Keine Pakete, keine Preise — die Architektur, die Entscheidungen, die ich gegen eine plausible Alternative getroffen habe, und was jede davon gekostet hat. Ich programmiere seit 2021, habe es mir selbst beigebracht und arbeite allein über den gesamten Stack.

Du stehst auf dem Beispiel

Diese Seite ist kein Portfolio fremder Arbeit. Die öffentlichen Seiten in drei Sprachen, die API, die Datenbank und die Verwaltung dahinter sind eine Anwendung, die ich geschrieben habe und betreibe. Kein Baukasten, kein fremdes CMS, nirgends.

Framework
TanStack Start, React 19, dateibasierte Routen
API
Elysia unter /api, Eden Treaty als typisierter Client
Daten
PostgreSQL über pg, rohes parametrisiertes SQL, kein ORM
Validierung
Valibot an der Grenze, geteilt zwischen Client und Server
State und Formulare
React Query für Serverdaten, TanStack Form für Eingaben
Motion
CSS mit IntersectionObserver und Pointer-Events, ohne Bibliothek
Hosting
Heute Vercel; eine Hetzner-Maschine in Deutschland ist der nächste Schritt

Vier Entscheidungen und ihr Preis

Jede davon wurde gegen etwas Vernünftiges getroffen. Die interessante Hälfte ist nicht, wofür ich mich entschieden habe, sondern was die Entscheidung gekostet hat — also steht das auch hier.

Rohes parametrisiertes SQL statt ORM

Eine Anwendung, eine Datenbank, ein Betreiber. Ein ORM schöbe eine Mapping-Schicht und einen Migrationsdialekt zwischen mich und eine Abfrage, die ich ohnehin lesen kann. In dieser Größe sind das bewegliche Teile ohne Gewinn.

Was es kostet

Mehr Tipparbeit und keine geschenkten Schema-Refactorings. Ich schreibe die Migrationen von Hand und halte die Abfragen nah an den Tabellen.

Eigene Verwaltung statt fremdem CMS

Anfragen, Seitentexte, Kunden und Rechnungen liegen in einem System mit einem Inhaltsmodell, nicht aufgeteilt zwischen einem Anbieter und einer Datenbank. Dass die Plattform vollständig selbst gebaut ist, ist außerdem der Punkt des Portfolios.

Was es kostet

Ich baue den Editor selbst, statt einen zu installieren. Bis er fertig ist, liegen die Texte in typisierten Dateien — ehrlich statt bequem.

Ein deutscher Server, den ich selbst administriere, statt Serverless

Kundendaten, Leads und Rechnungen gehören auf eine Maschine in Deutschland, das macht die DSGVO-Antwort kurz. Cron und Hintergrundjobs laufen dort nativ, und eine lokale Datenbank hat kein Serverless-Pooling-Problem, um das man herumbauen müsste.

Wo das gerade steht

Das ist eine Entscheidung, noch keine Tatsache: Die Seite läuft heute auf Vercel, und der Umzug zu Hetzner mit Coolify ist der nächste Infrastruktur-Schritt. Wenn er kommt, gehören Backups und Sicherheitsupdates mir — Snapshots, ein nächtlicher pg_dump, unattended upgrades und ein Restore, den ich tatsächlich getestet und nicht bloß angenommen habe.

Eine Motion-Schicht ohne Animationsbibliothek

Der erste Versuch lief mit GSAP, ScrollTrigger und Lenis. Er stürzte bei jeder clientseitigen Navigation weg von der Startseite ab und animierte Abschnitte, die niemand freigegeben hatte. Ich habe ihn gelöscht und alles neu gebaut, auf CSS-Transitions, IntersectionObserver, ResizeObserver und Pointer-Events.

Was es gekostet hat

Eine weggeworfene Arbeitswoche und Easing-Kurven, die ich jetzt von Hand schreibe. Dafür liefert die Seite gar keine Animations-Laufzeit aus, und bei Navigation bricht nichts.

Was ich ausgeliefert habe

Einen Onlineshop mit gefiltertem 500-Produkte-Katalog, Stripe-Checkout, Bestellungen und den Pflichtseiten, die ein deutscher Shop braucht. Eine Schreibplattform mit Editor, Uploads, Kommentaren, Reaktionen und Benachrichtigungen. Ein Immobilien-Verwaltungssystem, noch im Bau, auf dessen Architektur diese Seite läuft.

Projekte ansehen