Lokale Entwicklung

Die Entwicklungsumgebung im Projektverzeichnis starten:

bash child/dev.sh

Voraussetzungen: Goat CLI, qtc, Docker, Python 3 und Projektkonfiguration. Ports kommen aus GOAT_DEV_APP_PORT und GOAT_DB_MAIN_PORT in .env.

Der Host-Supervisor generiert in einem neuen Goat-Prozess und startet herd/dev.goat: PostgreSQL, Backend und Angular-Watcher für Grundlage und child. Er überwacht Modell, Generatorvorlagen, child-Backend und statische Dateien. Bei Änderungen beendet er die Prozesse vor der erneuten Generierung und startet sie anschließend neu. Neue Prozesse vermeiden das bereits initialisierte Modell einer laufenden CLI-Sitzung.

Datenbank und Fixtures

Vorhandene PostgreSQL-Daten bleiben erhalten. Beim Start laufen zuerst Grundlage-Migrationen, danach child-Migrationen; db:clean wird nie automatisch ausgeführt. Fixtures und pgAdmin werden ausdrücklich gestartet:

goat run:script --path=herd/fixture.goat
goat run:script --path=@goatcms/herd/db/admin.goat

Die Grundlage läuft unter /app/, die separate child-Anwendung unter /child/. Angular-Watcher bauen die jeweiligen Workspaces; gemeinsame Bibliotheken stammen aus den generierten Quellen.

Build und Tests

bash child/build.sh
goat run:script --path=herd/test.goat
GOWORK=off go test ./...
(cd goatapp && GOWORK=off go test ./...)

Der Build generiert Quellen, baut beide Frontends und kompiliert .tmp/bin/goatcms. Statische raw-Dateien werden bei der Kompilierung eingebettet. Auch das Dockerfile baut beide Frontends und verpackt ihre Ergebnisse im Produktionsimage.

Integrationstests benötigen GOAT_TEST_DSN für eine Testdatenbank mit temporären Schemas. GOAT_TEST_LEGACY_SCHEMA verweist für Upgrade-Tests auf einen gespeicherten SQL-Snapshot vor dem Upgrade. Ohne diese Eingaben werden die Datenbanktests ausdrücklich übersprungen.