Reines SQL als Output
ETL-Prozesse automatisch aus Metadaten. Der erzeugte Code ist der Vertrag - versioniert, diffbar, ohne zusätzliche Abstraktionsschicht.
Ein eigenes Projekt, von der Spec über die UX bis zum produktiven Deploy selbst gebaut. Diese Seite zeigt nicht nur, was DI² ist - sondern auch wie es entwickelt wird.
Vision, Output-Format, Methoden-Herkunft und Datenqualitäts-Philosophie - komprimiert auf vier Absätze.
DI² erzeugt wartbare, lesbare und auditierbare ETL-Prozesse aus den Metadaten deines Quellsystems - automatisch, in reinem SQL. Der Output läuft heute auf PostgreSQL und SQL Server.
Ausgangspunkt sind Tabellen, Spalten, Typen und Beziehungen - sie werden zum Modell, angereichert um fachliches Wissen wie zulässige Werte, Business Keys und Historisierungsregeln. Aus diesem Modell entstehen automatisch Extraktion und SCD2-Historisierung; die Transformation in DWH oder OLTP bleibt bewusst Handarbeit - DI² liefert das Gerüst, ihr schreibt die fachliche Logik.
Datenqualität ist das Produkt, nicht ein Feature. Fachliche Regeln als WHERE-Klauseln in den Metadaten; fehlerhafte Datensätze landen in einer Fehler-Tabelle statt still im DWH. Drei Protokoll-Ebenen - Prozess, Schritt, Stacktrace - auswertbar per SELECT.
Keine Neuerfindung: Die Methode existiert seit 2015 in ständiger Iteration - initial als VBA/Excel-basierter Codegenerator, heute als PostgreSQL-native Engine mit Next.js-Web-Layer. DI² ist die Re-Implementation einer über 10 Jahre erprobten Vorgehensweise auf modernem Stack.
Jedes Tool macht Annahmen über das, was wichtig ist. Diese sind die unsrigen - explizit, damit sie diskutierbar bleiben.
ETL-Prozesse automatisch aus Metadaten. Der erzeugte Code ist der Vertrag - versioniert, diffbar, ohne zusätzliche Abstraktionsschicht.
Der Prozess entsteht direkt aus Tabellen, Spalten, Typen, Beziehungen - datenmodell-getrieben statt klick-getrieben.
Versioniertes SQL läuft heute auf PostgreSQL und SQL Server. Eine Portierung auf andere Dialekte (Snowflake, BigQuery, Oracle, DuckDB) ist überschaubar, weil der Output reines SQL bleibt.
Jeder Code-Change als Git-Diff sichtbar. Reines SQL ohne DSL - Engineers und Analysten verstehen es ohne Einarbeitung.
Drei Protokoll-Ebenen - Prozess, Schritt, Stacktrace - alles auswertbar per SELECT. Nicht spürbar, sondern messbar.
Zulässige Werte, Wertebereiche, Business und Alternate Keys, Historisierungsregeln leben im Modell - nicht als Kommentare im Code.
Extraktion und SCD2-Historisierung werden automatisch erzeugt; die DWH/OLTP-Transformation bleibt Handarbeit - bewusst.
Fachliche Regeln als WHERE-Klauseln. Fehlerhafte Datensätze landen in einer Fehler-Tabelle - nicht still im DWH.
Self-hosted auf Hetzner (EU-Rechenzentrum, Deutschland) - kein Vercel, kein Supabase, kein US-Managed-Service für sensible Layer. Daten-, Auth- und Mail-Stack durchgängig im EU-Raum, DSGVO-konform. Docker Compose mit Multi-App-Layout, Nginx als Reverse Proxy, Let's Encrypt für SSL.
AI-driven Development heißt nicht „Claude schreibt allein Code“. Es heißt: spezialisierte Skills pro Workflow-Schritt, klare Checkpoints, und an jeder Phase wartet das System auf eine Entscheidung.
Feature-Spec mit User Stories, Acceptance Criteria, Edge Cases - und der Markierung, was nur am Klick prüfbar ist.
Technische Architektur, PM-tauglich, ohne Code.
UX-Kritik + Mockups (HTML / React + shadcn) als Vorlage - dazu die Klick-Testfälle, bevor gebaut wird.
API-Routen, DB-Schema, Stored Procedures, RLS-Policies.
UI mit shadcn/ui - gegen echte APIs, keine Mocks.
Fährt die deklarierten Testfälle und protokolliert den Lauf. Acceptance + Edge Cases + feature-scoped Security-Checks.
Diff gegen Spec & Conventions; Approve / Request Changes.
GitHub Actions: dev → int → test → prod, jede Stufe mit Gate - rote Tests heißen: kein Deploy.
Pflicht-Gate vor prod: OWASP, Auth, Headers, Dependencies.
/bug - docs/bugs/bug-NNNN-<slug>.md
Jederzeit triggerbar - Doku, gezielter Fix, QA-Re-Test, Close. Bugs werden nie reopened; Regression bekommt neue ID.
/check-updates · npm · Docker · Actions · VPS
Periodische Wartung: Dev-Dependencies und VPS-Komponenten - read-only Befunde, kein Auto-Apply.
AI-driven Development steht im Verdacht, Tests als Erstes zu streichen. Hier steht, was geprüft wird, wie es geprüft wird und wann die Erwartung festgelegt ist.
Vitest · Unit- und Komponenten-Tests
Logik mit Verzweigungen, Validierung, Sortierung, Texte je Sprache. Die Tests liegen direkt neben dem Code, den sie prüfen, und wandern bei jedem Umbau mit.
docs/test-cases · Klick-Testfälle
Nur, was sich nicht rechnen lässt: das Zusammenspiel mehrerer Ansichten, der Zeitpunkt, zu dem ein Ergebnis sichtbar wird, Meldungen, Anmeldung und Abmeldung.
Rot heißt: kein DeployBei jedem Push laufen Lint, Konventions-Prüfungen, Tests und Build. Vor jedem Deploy laufen die Tests ein zweites Mal - schlagen sie fehl oder fehlt eine Testdatei im Lauf, startet der Deploy nicht.
Der Katalog umfasst 158 aktive Testfälle in 22 Suiten. Jeder ist so geschrieben, dass ihn jemand abarbeiten kann, der den Code nie gesehen hat.
In der klassischen Aufstellung verhindert die Trennung von Tester und Entwickler, dass ein Test an der fertigen Implementierung entlang geschrieben wird. Bei AI-driven Development gibt es diese Trennung nicht. Sie wird deshalb zeitlich hergestellt statt personell.
Das erwartete Ergebnis steht als Acceptance Criterion in der Spec - bevor eine Zeile Code existiert.
Der Testfall übernimmt diese Erwartung wörtlich und ergänzt die Klick-Schritte aus den Mockups. Erst danach beginnt der Bau.
Nach dem Bau wird der Fall gefahren und protokolliert. Weicht das Ergebnis ab, ist das ein Befund - die Erwartung wird nicht nachgezogen.
Zwei Schreibregeln halten die Trennung fest: Im erwarteten Ergebnis steht kein Begriff, der nicht auf dem Bildschirm vorkommt. Und jeder Testfall enthält mindestens eine Aussage darüber, was nicht passieren darf.
Auch dieser Abschnitt ist so entstanden: seine Testfälle standen im Katalog, bevor er gebaut wurde.