Manche Probleme tauchen in meinen Projekten immer wieder auf, manche fand ich privat interessant genug, um ein Wochenende daran zu sitzen. Daraus ist über die Jahre eine Handvoll Tools entstanden, die ich auf GitHub gestellt habe. Open Source, weil ich selbst ständig fremde Pakete einsetze, und weil es nett ist, der Community ab und zu etwas zurückzugeben.
cainydev/laragraph
Eine graph-basierte Workflow-Engine für Laravel, gedacht für alles, was über einen einfachen API-Call hinausgeht. Nodes, Transitions, parallele Fan-outs, bedingte Verzweigungen, Freigabeschritte an beliebigen Stellen im Graph. Persistiert in eurer Datenbank, ausgeführt über Laravel Queues, ohne zusätzliche Infrastruktur.
Entstanden ist das aus eigenem Bedarf: in mehreren Projekten brauchte ich genau diese Art von Workflow und wollte nicht jedes Mal von vorne anfangen. Mittlerweile ist es ein eigenständiges Package, das ich aktiv pflege und auch in Kundenprojekten einsetze.
# Bedingte Transition, zur Laufzeit entschieden
$this->addNode('classify', ClassifyNode::class)
->addNode('review', HumanReviewNode::class)
->addNode('archive', ArchiveNode::class)
->transition(Workflow::START, 'classify')
->transition('classify', 'review',
fn(array $state) => $state['confidence'] < 0.7)
->transition('classify', 'archive',
fn(array $state) => $state['confidence'] >= 0.7);
Was es kann
cainydev/Portyard · portyard.de
Wer Docker-Images selbst hosten will, landet meistens bei der CNCF Distribution Registry. Die ist solide, aber sie bringt nur eine HTTP-API mit. Keine UI, kein Team-Management, kein Audit-Trail.
Portyard schließt diese Lücke. Eine vollständige Verwaltungsoberfläche rund um die Distribution Registry: Docker- und OCI-kompatibel, mit Spaces, RBAC, Webhooks, 2FA und einem Activity-Log, das zeigt, wer wann was gepusht hat.
Features
Stack
cainy/laravel-dockhand
Wenn man aus Laravel heraus mit einer OCI-Registry reden will, blieb bisher nur, sich einen HTTP-Client selbst zurechtzubasteln. Kein Typsystem, jede Auth-Variante manuell behandelt, jede Registry-Eigenheit nochmal von vorne.
laravel-dockhand ist die typsichere Alternative dazu. Multi-Connection- Architektur, austauschbare Backend-Treiber (Distribution, Zot) und austauschbare Auth-Treiber (JWT, Basic, Bearer, API-Key). Falls eine Registry irgendwann mal eigene Extensions mitbringt, lässt sich das sauber als eigener Treiber abbilden, statt im if-else zu versinken.
Unterstützt
Backend-Treiber
Auth-Treiber
Was unter der Haube ordentlich ist
Im Großen und Ganzen mit den gleichen Standards, die ich auch in Kundenprojekten anlege. Was ich selbst von einem Laravel-Package erwarte, wenn ich es einbinde, will ich auch liefern, wenn ich selbst eines pflege.
Statische Analyse, damit Typ-Fehler nicht erst in der Produktion auffallen.
PHPUnit Feature- und Unit-Tests, Coverage öffentlich einsehbar.
Tests, Code-Style, PHPStan laufen automatisch. Kein Merge auf rot.
Breaking Changes stehen im Changelog, nicht im Stacktrace.
Mit Installations-Anleitung, ein paar echten Beispielen und einer Übersicht über die wichtigsten Konzepte.
Läuft auf den aktuellen Laravel-Versionen. Wenn eine neue Major-Version rauskommt, wird das Package angepasst, statt zu verwaisen.