sylius/installer-bundle
Sylius Installer Bundle provides a command-line installer for Sylius applications, checking environment requirements, configuring database and mailer settings, creating an admin user, and optionally loading sample data.
Architecture fit. sylius/installer-bundle is a first-party Symfony bundle from the Sylius commerce platform, not a framework-agnostic PHP library. It integrates through Symfony's kernel: service definitions and compiler passes in the DI container, routing and Twig templates for the web installer, console commands for the CLI installer, and event subscribers orchestrating the first-run sequence (environment requirement checks → database/schema creation → admin provisioning → fixture/sample-data loading → asset install). Every meaningful collaborator it invokes is a Sylius core service (sylius/resource-bundle, channel/product/order services, Doctrine mappings). Nothing targets Laravel's service container, Artisan, Blade, or Eloquent. For a Laravel team the honest architecture fit is none at the code level; the reusable asset is the pattern — gated prerequisite checks, idempotent and resumable setup steps, one shared service layer behind both a web and a CLI front end.
Integration feasibility. A direct composer require into a Laravel application is not viable. The bundle's dependency graph pulls Symfony component versions that will conflict with those pinned by our Laravel release, and even if resolution succeeded, its registered services reference Sylius services that do not exist in an Illuminate container. The only defensible topology is a separate Sylius runtime with its own Composer root, CI, and database, integrated with our Laravel app only over HTTP/queue boundaries — at which point this is a second platform adoption, not an "integration." There is no middle path worth prototyping.
Technical risk. The dominant risk is a scoping error: a stakeholder sees "PHP package, installer" and assumes it slots into our stack, burning a sprint before the mismatch is proven. Record the rejection explicitly and with rationale so it is not re-proposed. Secondary risks: dependency-hell if anyone attempts in-process use; and metric unreliability — the reported 0 score, blank star count, and 0 dependents are artifacts of Sylius's monorepo split (the bundle reaches users via sylius/sylius), not evidence of abandonment. Do not make a build/buy call on these numbers; verify cadence and support against Packagist download stats and the main Sylius repository. License is MIT, so reading and adapting the source for a native reimplementation is legally clean.
Key questions.
artisan, laravel/prompts, and a custom app:install command are the native answer?Stack fit. Poor, and this should be written down rather than debated. Our functional equivalents are php artisan migrate --seed, Laravel Prompts for interactive setup, a bespoke app:install command, and Forge/Envoy/Docker for provisioning. A Sylius bundle cannot hook into any of those extension points; its only entry points are Symfony commands and a Symfony-routed web wizard.
Migration path. There is no incremental path from our Laravel codebase to this bundle, and none is needed. Two legitimate paths exist, and the TPM decision is to pick one explicitly:
Compatibility. PHP constraint ranges track Symfony LTS lines and will diverge from the Symfony components pinned by our Laravel version. Keep Composer roots strictly separate; never attempt a shared vendor/. If both ever appear in one CI pipeline, they must be independent jobs with independent lockfiles. Pin any Sylius dependency to a standardized major so upgrades are coordinated rather than incidental.
Sequencing.
app:install with Prompts + migrate --seed.Maintenance. Maintained upstream by the Sylius core team, but released as part of the Sylius monorepo — this split repo is a read-only artifact and its version cadence is bound to Sylius majors. Our exposure is therefore zero if we do not adopt, and "whatever Sylius's support policy is, on their timeline" if we do. There is no meaningful custom-code ownership either way; the cost is entirely in platform coupling and upgrade coordination.
Support. Community channels (Sylius Slack, GitHub discussions) with no SLA. Commercial support exists only via Sylius Plus or a certified partner — a real budget line if the installer becomes part of a production-critical deploy pipeline. Bus factor is tied to Sylius the company, not to this repository.
Scaling. Not a runtime concern, and this should be stated plainly to anyone expecting capacity implications. The installer executes once per environment. It has no bearing on request throughput, queue depth, or horizontal scale; in a Sylius deployment the operational cost lives in the application and its database, not here. The only "scale" dimension is environment count — how many demo, sandbox, branch, and per-prospect stores we stand up — which argues for containerizing the install step, not for optimizing it.
Failure modes. If adopted, the realistic failure surface, each of which becomes an on-call incident during a deploy window:
var/cache permissions, missing PHP extensions, wrong locale.Ramp-up. For a Laravel-only team, productive use of this bundle implies learning Symfony's kernel/DI model plus Sylius's resource and checkout architecture: roughly 2–4 weeks to first meaningful contribution and several months to real depth. That is a platform-adoption cost, not a package-adoption cost, and any proposal citing this repository must price it as such. Ramp-up for the pattern port is effectively zero — a mid-level Laravel engineer can build and ship app:install within a sprint. That asymmetry, more than any technical detail, is the argument the TPM should carry into the decision meeting.
How can I help you explore Laravel packages today?