Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Web Installer Laravel Package

shipu/web-installer

Shipu Web Installer adds a browser-based setup wizard to Laravel apps. It checks server requirements and folder permissions, configures the .env and database connection, runs migrations, and creates the first admin user so you can ship a self-installing app.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. shipu/web-installer is a Laravel package that provides a browser-driven installation flow (environment file generation, database configuration, initial admin provisioning) rather than a runtime library. Architecturally it sits in the bootstrap/deployment layer, not the application request path. That makes it a good fit for greenfield Laravel deployments and internal tooling, and a poor fit for apps that already have an established, automated provisioning pipeline (Terraform/Ansible/CI-driven artisan commands).

Integration feasibility. Standard Laravel package mechanics apply: Composer install, service provider auto-discovery, config/asset publishing, and one or more installer routes. The v1.0.1 change is a concrete signal about how the package wires itself in — it fixes config:cache failures caused by closures in published configuration, which previously prevented the entire application config from being cached. Any team whose deployment pipeline runs php artisan config:cache would have hit a hard failure under v1.0.0. That the defect shipped in the initial release suggests the deployment path was not covered by CI.

Technical risk.

  • Security (highest). A web-reachable installer that writes .env and creates an administrator is effectively an unauthenticated privileged endpoint until it is disabled. The package's guardrails (post-install lock, route middleware, environment checks) are the single most important thing to verify and are not evidenced in the release notes.
  • Maturity. v1.0.x with one external contributor and a single patch release implies a thin test matrix, particularly around deployment-time behavior — the exact area v1.0.1 had to repair.
  • Bus factor. Single-maintainer project. Plan for the possibility of vendoring or forking.
  • Compatibility ambiguity. Supported Laravel/PHP ranges are not stated in the release data and must be confirmed against our target versions before adoption.

Key questions for the maintainer / spike.

  1. How is the installer disabled or locked after completion — automatic flag, file sentinel, or manual route removal?
  2. Which Laravel and PHP versions are supported, and is that enforced in composer.json?
  3. Are installer routes gated by middleware, signed URLs, or an environment allowlist?
  4. Does the package write .env directly, and how does it handle read-only filesystems and containerized deployments?
  5. Is there CI coverage for config:cache, route:cache, and optimize?
  6. What is the recovery path if installation fails midway (partial .env, half-migrated database)?

Integration Approach

Stack fit. Laravel-only. It offers no value to non-Laravel services and should not be considered a general provisioning tool. The natural home is a platform template or starter kit where a fresh Laravel instance needs first-boot configuration without shell access — for example, a self-service or on-premise distribution where the operator cannot run CLI commands.

Migration path. Treat it as an optional, environment-scoped dependency rather than a permanent one:

  1. Add the package in a feature branch and pin to ^1.0.1 (v1.0.0 must be explicitly excluded — it is known-broken under config caching).
  2. Publish config and assets; diff the published config against ours and confirm no closures or unserializable values remain.
  3. Exercise the full installer flow against a throwaway database in a disposable environment.
  4. Confirm the disable/lock mechanism works and document it as a mandatory post-install step.
  5. Only then evaluate promotion to shared templates.

Compatibility. The v1.0.1 fix directly removes a blocker for any pipeline using config:cache, which is the Laravel production default and effectively mandatory in autoscaled/containerized deployments where each instance rebuilds caches on boot. Teams that never cache config would have been unaffected; teams that do would have seen a total deployment failure. Verify our own pipeline's cache steps (config:cache, route:cache, view:cache) as part of acceptance testing, not just the interactive installer.

Sequencing. Because this touches deployment, sequence it behind, not alongside, other platform changes. Recommended order: (a) confirm Laravel/PHP support, (b) validate installer lock-down, (c) validate cache commands, (d) integrate into one non-critical environment, (e) add a deployment-runbook entry and an automated check that the installer is disabled, (f) roll out to templates. Do not bundle this with an unrelated framework upgrade.

Operational Impact

Maintenance. Low code surface, low release cadence, single primary maintainer. The realistic maintenance task is not upgrading the package but policing its lifecycle: ensuring it is disabled post-install, removed from production images where it is not needed, and re-validated on each Laravel major upgrade. Budget a small ongoing allowance for patching or forking if upstream stalls.

Support. Community-only (GitHub issues/PRs). No vendor SLA. Escalation for a production-blocking defect is effectively "fix it ourselves," which is acceptable for a bootstrap-time tool but not for anything in the request path.

Scaling. Negligible runtime scaling impact — the installer executes a handful of times per environment, not per request. The scaling-relevant concern is horizontal: in an autoscaled fleet, every new instance runs config:cache at boot, which is precisely where v1.0.0 failed and v1.0.1 now succeeds. Post-fix, this risk is retired; pre-fix it was a fleet-wide boot failure.

Failure modes.

  • Installer left enabled — unauthenticated privileged endpoint; highest-severity, and the failure mode most likely to be caused by operator error rather than the package itself.
  • Config cache failure — the v1.0.1 defect; now resolved, but indicates a class of bug (unserializable config values) worth regression-testing on every upgrade.
  • Partial installation — aborted runs leaving an inconsistent .env or partially migrated schema; needs a documented teardown/re-run procedure.
  • Filesystem permissions — writes to .env fail silently or noisily on read-only container filesystems.
  • Upstream abandonment — no security patches; mitigated by pinning and periodic review.

Ramp-up. Low for any Laravel-fluent engineer — the package follows conventional patterns and the installer is a UI over familiar operations. The non-obvious learning is operational, not technical: the team must internalize the "install once, then disable" discipline and encode it in the runbook and in automated post-deploy checks. Estimate roughly half a day for a first end-to-end evaluation in a disposable environment, plus runbook and guardrail work before any production-adjacent use.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
microsoft/fluentui-system-icons
mmccook/php-json-canonicalization-scheme
middlewares/firewall
qubiqx/montapacking
nyoncode/laravel-package-console
pnscripts/filament-broadquill-lite
pnscripts/laravel-sentfold-lite
vleap/mx-sdk-laravel-internal
twidpay/utils
htetmyathlaing/scout-elasticsearch-driver
artisan-toolbox/front-awesome
ls/client-assistant
users-au/laravel-client
cgv/localized-resource
noith/settings
kda/laravel-package
kda/filament-dynamic-navigation
bypersoft/signbox
pairus/product-data
fayne/laravel-filament-cms-core