arrowsgm/nova-phpinfo
A Laravel Nova tool that displays PHP configuration information (phpinfo) right inside your Nova dashboard, giving developers a quick view of the runtime environment, loaded extensions, and settings without leaving the admin panel.
Architecture fit. v0.1.0 is an initial public cut of a Laravel/PHP package. Package integration in Laravel is well-trodden: Composer install, service provider auto-discovery, vendor:publish for config/migrations, optional facade. That shape is low-friction against a standard Laravel app and does not require architectural change on our side. The caveat is maturity, not fit — at 0.1.0 the public API is effectively provisional, so anything we build directly on package internals becomes a rewrite candidate.
Integration feasibility. High on paper. Expected footprint is one Composer dependency plus a config file and possibly a migration; realistically a 1–2 day spike to prove it boots in our app and does what it claims. The unknown is dependency constraints — a package this young often pins a narrow Laravel/PHP range and can collide with existing transitive requirements.
Technical risk.
Key questions.
composer.json, and are those bounds tested in CI?Stack fit. Target is PHP 8.1+ on a currently supported Laravel line. Confirm the package's constraint floor before anything else; if it excludes our version, the evaluation ends there. Verify it is driver-agnostic if we run anything other than MySQL, and that it does not assume a queue driver we do not operate.
Migration path. Greenfield adoption is straightforward. For retrofit into an existing service, do not call the package directly from domain code — introduce a thin internal adapter interface and bind the package behind it. That costs perhaps a day and buys us the ability to swap the implementation or vendor a fork if the package stalls. Existing data paths: if the package ships migrations, review them for table namespacing and rollback safety before running anywhere shared.
Compatibility. Run composer require in a throwaway branch and inspect the resolved dependency graph for downgrades of packages we already depend on. Then exercise the app's test suite with the provider registered but the feature unused — that isolates boot-time breakage from feature-level breakage. Add a static analysis pass if we run PHPStan or Psalm.
Sequencing.
Pin to an exact version, not a caret range, until step 5.
Maintenance. Budget for manual upgrade review on every release — pre-1.0 packages cannot be safely auto-updated. Committing a lockfile pin plus a short internal note on why we adopted it prevents the dependency becoming orphaned knowledge. Expect at least one breaking upgrade before 1.0; cost is low while the adapter boundary holds, high if we have leaked package types into domain code.
Support. Community-supported only at this stage. No SLA, no security disclosure process we can point at, no commercial backstop. For an internal tool or non-critical path that is acceptable; for anything on a revenue or compliance path it is not, absent a maintainer conversation.
Scaling. Watch for the usual Laravel package failure patterns: N+1 queries introduced by convenience accessors, synchronous work that should be queued, and per-request work in the provider's boot method. Config caching (config:cache) is a common breakage point for young packages that read env() outside config files — test with caches warm, not just in local dev.
Failure modes.
composer update elsewhere in the app, forcing an unplanned upgrade.Ramp-up. Expect half a day for an engineer familiar with Laravel packages once documentation is located; longer if docs are a bare README. The adapter boundary is also the onboarding aid — new engineers learn our interface, not the package's surface area.
Recommendation. Proceed to a time-boxed spike, not to production adoption. Approve broader use on a non-critical path once the package shows a second or third release with a documented changelog and a stable public API. Re-evaluate formally at 1.0.
How can I help you explore Laravel packages today?