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/module-api remains a Slick Framework contract package, not a Laravel package: no service providers, facades, container bindings, config publishing, or Laravel-native module lifecycle. The new release also adds slick/di as a hard dependency, which means installing the contracts now pulls Slick's own DI container into the dependency graph. That directly undercuts the previous "framework-agnostic contracts" hypothesis — the package is no longer a thin, standalone interface set. Adopting it would introduce a second module abstraction and a second container abstraction alongside Laravel's service container.ConsoleModuleInterface::configureConsole() is a signature change (a container argument is now injected), which is a breaking change for any implementer and evidence that the interface surface is still moving at v0.x. With 0 stars, 0 dependents, and no Laravel ecosystem adoption, there is still no evidence of production use. The spike must now additionally verify what slick/di brings transitively and whether the passed container is type-hinted against a Slick-specific ContainerInterface (likely) versus a PSR-11 interface (materially better for Laravel, since Laravel's container is PSR-11 compliant).slick/di dependency increases the blast radius of adoption: more transitive packages, more version constraints to reconcile against Laravel and PHP, and a stronger gravitational pull toward Slick runtime concepts. The configureConsole() signature change confirms interface churn ahead of a 1.0 stabilisation. The release notes themselves announce "v0.3.1" in the body while the tag is v0.4.0 — a small but telling signal about release hygiene on a package you would be standardizing against.ContainerInterface or PSR-11? Can a Laravel application pass its own container, or does it require a Slick DI instance? What does slick/di pull in transitively, and does it conflict with Laravel's illuminate/container? Are there other breaking changes in the v0.3.1 → v0.4.0 diff beyond configureConsole()? Is the interface now stable enough that an adapter would not need rewriting each minor release? Does the Slick Framework itself remain actively maintained? Can the interfaces still be vendored or wrapped if the upstream stalls? What is the replacement cost?slick/di.slick/di at runtime. Never let Slick\ModuleApi\...\ContainerInterface appear in Laravel domain signatures. If slick/di cannot be avoided, treat it as a separate, explicitly-justified dependency decision rather than an incidental side effect of installing a contracts package.slick/di and illuminate/container, duplicate PSR-11 implementations, and autoload/namespace collisions. Because the interface signature changed in a minor release, pinning matters more than before: an unpinned ^0.3 or ^0.4 constraint could break adapter code on the next release. Compatibility must be proven by prototype, not inferred.slick/di — its transitive tree, its container interface, and whether it accepts a PSR-11 delegate — before writing any adapter. Then proceed as before: isolated proof of concept with one adapter and one console command, clean-app install against the target PHP/Laravel matrix, then an adopt/reject decision. If adopted, pin exactly, wrap behind internal interfaces, and document the exit path. If the container coupling cannot be contained, reject and use Laravel-native package structure.configureConsole() signature change is a concrete example of upstream churn becoming internal rework; expect more before 1.0. slick/di also becomes an internally-owned dependency by proxy — if it stalls, the contracts package may become unusable regardless of its own health. Pin exact versions and keep the Slick surface confined to the bridge layer.slick/di never reaches runtime in the Laravel app at all.slick/di vs illuminate/container), PHP version incompatibility, namespace/autoload collisions, container type mismatches when passing Laravel's container into a Slick-typed parameter, module lifecycle mismatches, further undocumented breaking changes in minor releases, and abandonment of either package. Container wiring in particular can fail at boot rather than at call time, so isolate it so failures are contained to the bridge layer rather than blocking package discovery.How can I help you explore Laravel packages today?