teknoo/recipe
Teknoo Recipe is a lightweight PHP package for defining and running recipes as reusable, ordered steps. It helps you compose simple workflows and task sequences with a clean API, minimal dependencies, and testable code, making automation straightforward in PHP projects.
teknoo/recipe is a viable build short-cut: it supplies the execution model (ordered middleware, conditional requirements, sub-flows, error handlers) so the team only writes business steps.DynamicBowl and runtime ingredient resolution let the workflow decide which callable runs at execution time from the workplan — useful for plugin-style extensibility and customer-defined steps, as long as inputs are trusted.Recipe/Plan, train(), given()) means flows can be versioned, tested and injected like any other service. That supports a roadmap of “customer-configurable pipelines” without inventing a DSL from scratch.CookingSupervisor give cooperative concurrency inside a request/worker — relevant for fan-out enrichment, batch validation, and multi-provider calls. It is not durable long-running orchestration.PlanInterface implementations can be shipped as injectable classes, letting multiple product surfaces (API, CLI, queue workers) reuse the same vetted flow definitions — a governance win for consistency across teams.Consider it when:
A → B → C chain.Look elsewhere when:
DynamicBowl and object-type ingredients make user-driven composition a hard no without a strict allow-list layer.For executives: We have a candidate library, teknoo/recipe, that lets us express business workflows as composable, testable “recipes” — ordered steps that run when their required inputs are present. In plain terms, it lets Product ship configurable flows (routing, approvals, enrichment, tiered rules) faster, without licensing a BPM platform and without vendor lock-in: it is BSD-3, forks cleanly, and is pure PHP with no external services. It is a build-vs-buy accelerator, not a platform bet. The material risk is maturity: a tiny maintainer base and near-zero adoption mean we must own the code — pin it, review it, and keep the option to fork. Recommendation: run a bounded pilot in one flow with clear rollback, then decide. Do not put it on the critical path of revenue-critical orchestration until the pilot and a security review clear.
For engineering: It is a DI-friendly, immutable, middleware-style execution engine for PHP 8.4+ — recipes compile into trained Chef instances, bowls map workplan ingredients onto callable parameters, and sub-recipes, relative ordering, loops, and fiber-based concurrency are built in. The engineering hygiene is genuinely strong: 100% coverage, PHPStan max, PSR-12, Behat features, a documented changelog and strict “never modify an existing test” discipline — that is a meaningful signal for a small project. The costs are conceptual weight (fibers, east-style promises, stated classes, ingredient resolution order) and operational surface (we drive the supervisor ourselves; no persistence). Two security rules must be enforced in code review: never map a user-controlled key into dynamic bowls, and never let user input satisfy object/class-name ingredients. Suggested adoption path: a spike on one non-critical flow, vendored and pinned, with an internal wrapper so our domain code does not import the library directly — that keeps an exit cheap if the maintainer disappears.
How can I help you explore Laravel packages today?