techbra.in / lab — Open Source & Experimente
Open Source & Experimente

Gebaut, weil mich das Problem nicht losgelassen hat.

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.

Flagship / LaraGraph — Graph-basierte Workflow-Engine
Package PHP / Laravel Flagship

LaraGraph

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

  • Stateful Workflows mit Datenbank-Persistenz
  • Bedingte Transitions & Branch-Routing zur Laufzeit
  • Parallele Fan-out / Fan-in Verarbeitung
  • Human-in-the-Loop (interruptBefore / interruptAfter)
  • Queue-backed, resumable nach Unterbrechungen
  • Custom State Reducers, Sub-Workflows, Saga & Compensation
  • Prism- und Laravel-AI-Integration für LLM-Nodes
Portyard — Self-hosted Container Registry
Produkt PHP / Laravel / Livewire Live Beta

Portyard

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

  • Spaces & Namespaces mit Storage-Quotas
  • RBAC: Owner, Maintainer, Developer, Viewer
  • Multi-Arch Support (OCI Index / Manifest Lists)
  • Image Inspector: Tags, Layers, Config, Metadaten
  • Webhooks per Repository auf konfigurierbaren Events
  • Activity-Log: Auth, Pushes, Pulls, Member-Änderungen
  • 2FA via TOTP (Laravel Fortify)

Stack

Laravel Livewire Flux UI JWT Auth CNCF Distribution
laravel-dockhand — OCI Registry Package
Package PHP / Laravel

laravel-dockhand

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

  • distribution
  • zot

Auth-Treiber

  • jwt (ECDSA)
  • basic
  • bearer
  • apikey
  • null

Was unter der Haube ordentlich ist

  • Volle PHPStan-Typsicherheit auf hohem Level
  • CI für Tests, Code-Style und statische Analyse
  • Codecov-Integration, Testabdeckung öffentlich einsehbar
  • Semantic Versioning mit Changelog
  • Kompatibel mit Laravel 10, 11, 12, 13
Standards — Wie ich Packages baue

Wie ich Packages baue

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.

PHPStan auf hohem Level

Statische Analyse, damit Typ-Fehler nicht erst in der Produktion auffallen.

Tests mit Codecov

PHPUnit Feature- und Unit-Tests, Coverage öffentlich einsehbar.

CI auf jedem Commit

Tests, Code-Style, PHPStan laufen automatisch. Kein Merge auf rot.

Semantic Versioning

Breaking Changes stehen im Changelog, nicht im Stacktrace.

Lesbare README

Mit Installations-Anleitung, ein paar echten Beispielen und einer Übersicht über die wichtigsten Konzepte.

Multi-Version Support

Läuft auf den aktuellen Laravel-Versionen. Wenn eine neue Major-Version rauskommt, wird das Package angepasst, statt zu verwaisen.