A Vipe Coding POC – Prompt 3 – Migrations & Domain-Layer

Prompt 3 — Migrations & Domain-Layer

Prompt 3 ist der Moment, in dem das Projekt zum ersten Mal nach „echtem Backend“ aussieht.
Bis hierhin war alles Struktur, Setup, Routing, Docker.
Jetzt kommen Tabellen, Entities, Repositories – das Grundgerüst der eigentlichen Anwendung.

Der Prompt selbst war klar definiert:
Migrations für alle MVP-Tabellen erstellen und einen minimalen Domain-Layer anlegen.
Keine Business-Logik, keine Services, keine Use-Cases.
Nur Konstruktoren, Getter und die Interfaces, die später alles zusammenhalten.

Nach dem obligatorischen „Ja, ich habe SPEC.md vollständig gelesen und verstanden“ legt Codex los.
Und diesmal merkt man, dass die Maschine richtig arbeitet: prüfen, planen, abgleichen, korrigieren.
Ein technischer, fast schon chirurgischer Ablauf. (ich brauche eine andere Metapher, vielleicht choreografierte Routine?)

Zuerst die Migrations. Sechs Stück, wie in der SPEC gefordert:
employee, skill, employee_skill, evidence, consent, audit_log.
Alle mit UUIDs, Timestamps, Constraints.
Sogar der XOR-Check für employee_skill (entweder skill_id oder custom_label) ist drin.

Dann der Domain-Layer: Entities für Employee, Skill, EmployeeSkill, Evidence, Consent, AuditLog.
Minimalistisch, wie gefordert: Konstruktoren, Getter, keine Logik.
Dazu Repository-Interfaces und die passenden RepositoryDb-Implementierungen – leer oder mit Platzhaltern, aber vorhanden.

Codex prüft nebenbei noch die PHP-Struktur, die Migrations-Konfiguration, die UUID-Typen, die Verzeichnisstruktur.
Alles wird einmal gegen die SPEC gehalten.
Danach folgen die obligatorischen Syntax-Checks, und am Ende landet alles in einem Commit.
Der PR wird erstellt, neues Feature, neues Glück.

Was wurde umgesetzt?

  • Sechs Phinx-Migrationen für alle MVP-Tabellen gemäß SPEC.md.
  • Minimaler Domain-Layer mit Entities, Value Objects und Aggregate Roots.
  • Repository-Interfaces für alle Aggregate.
  • Minimalistische RepositoryDb-Implementierungen (save: no-op, byId: null).
  • Alle Änderungen committed und PR aktualisiert.

Testing

PHP Syntax: alle Migrations- und Domain-Dateien fehlerfrei.
Scripts: nicht betroffen.
Docker: weiterhin nicht testbar in dieser Umgebung.

Damit ist Prompt 3 abgeschlossen.
Die Datenstruktur existiert jetzt nicht nur als Idee in der SPEC, sondern als echte Dateien im Repository.
Der Domain-Layer steht, die Migrations sind da – und das Projekt fühlt sich wieder ein Stück greifbarer an.