slick/module-api
Slick Module API gives Laravel applications a modular foundation for building maintainable APIs. Package endpoints into self-contained modules with their own routes, controllers, resources, and middleware, keeping large APIs organized, versionable, and easy to extend or remove.
slick/di's container abstraction. Contract-first is still the right pattern; the question is whether the contract and the container should be one decision or two.slick/module-api is no longer just a commitment to a set of interfaces — v0.4.0 adds slick/di as a hard dependency, so you are also betting on Slick's container. Evaluate against Laravel package conventions (service providers + container bindings) or Symfony bundles, especially if you want to keep your extension contract portable across frameworks.ConsoleModuleInterface implementation is now non-conforming and must be updated.Honest framing unchanged, and slightly worse: still near-zero public traction, and the release notes for v0.4.0 open by announcing "the v0.3.1 release" — a documentation-hygiene miss. PM value is as a pattern and a contract, not as a feature delivery.
Consider it when:
slick/di as part of that contract.ContainerInterface parameter is the only way to do that against this API.Look elsewhere when:
ConsoleModuleInterface implementations and no budget to update them — upgrading to 0.4.0 is a required code change, not a drop-in.To executives: Small, MIT-licensed contract library — no licensing cost and no commercial lock-in. Two things changed with v0.4.0: it now pulls in Slick's dependency-injection package, so it is no longer a self-contained set of interfaces; and it introduces a breaking change to the console-module contract (existing modules must be updated). The strategic recommendation stands: borrow the pattern or vendor the interfaces rather than adopting the ecosystem by default. Cost of switching later remains low, but "zero dependencies" is no longer a true statement in the deck.
To engineering: v0.4.0 passes a ContainerInterface (from the newly added slick/di dependency) into ConsoleModuleInterface::configureConsole(), enabling container-resolved command creation — genuinely useful for CLI modules. Treat it as breaking: every existing implementation of that method must be updated to accept the new argument. Also assume 0.x minor bumps can break generally, so pin exactly, review the changelog before each upgrade, and keep the diff surface small. Note the package is no longer interfaces-only — you now inherit a transitive DI dependency's release cadence. If we're not on Slick, copy the interfaces (and optionally the container hand-off pattern) into our own namespace and own them; the design is good, the supply chain is not.
How can I help you explore Laravel packages today?