alizharb/filament-modular-luncher
Filament Modular Luncher adds a modular launcher to Filament panels, helping you organize modules, resources, and navigation into a customizable entry point. Register sections, configure modules, and extend the launcher to fit your admin workflow.
This package is a Filament control center for Laravel Modular 1.2 applications — it does not manage modules itself, it gives you a UI and a set of ops tools on top of the core package. Install order matters:
composer require the package (it requires laravel-modular ^1.2, Laravel 12/13, PHP 8.3–8.5).vendor:publish for the tagged config and Filament assets).->plugin(...)), typically on an admin or ops panel rather than a customer-facing one.php artisan migrate if the package ships any tables, then open the module resource in the panel.Where to look first, in this order:
resources/boost/guidelines/core.blade.php — the Laravel Boost guidelines shipped in this release. Even if you don't use Boost, this file is the most concise statement of how the package expects to be used and is a good source of prompts when you ask an AI assistant to scaffold module install flows.config/ — specifically the Composer vendor allowlist and remote URL host allowlist keys. These are optional and off by default, which is the single most important thing to know before you expose the install UI to anyone.README.md — feature coverage was expanded in 1.1.0 and is now a decent map of the action surface.First realistic use case: open a module and run the Module Doctor action. It reads the manifest, checks ecosystem metadata (requires, conflicts, provides, middleware, policies, events), and returns diagnostics without mutating anything. That gives you a baseline before you touch installs.
Panel-scoped registration. Register the plugin only on the panel where ops staff live. Health badges and the Module Doctor action are read-heavy and expose dependency topology you probably don't want in a tenant or customer panel. If you run multiple panels, gate registration behind an environment or role check in the provider rather than relying on Filament authorization alone.
Badges as a dashboard signal. The four badge states (healthy, disabled, dependency review, conflicts) map cleanly onto a table column and a widget. A common pattern is a ModulesHealthWidget that counts by badge state, plus the badge as a column on the module resource table. Treat "dependency review" as advisory — it flags that a module's requires/conflicts set changed relative to what's installed, not that anything is broken.
Action chaining for triage. The four new actions form a natural escalation path: Explain Module (what is this and what does it need) → Status Report (current runtime state) → Module Doctor (why is it unhealthy) → Debug JSON (raw manifest for bug reports). Wire the last one to a "copy to clipboard" or download so support tickets carry structured evidence instead of screenshots. Debug JSON output is also the right thing to attach to a Laravel Modular issue.
Install flows behind allowlists. Four install sources now exist: Composer, ZIP, URL, and Git. The pattern that holds up in production is deny-by-default: set the Composer vendor allowlist and the remote URL host allowlist in config, and treat the install actions as super-admin-only. Git installs need the PHP process to have credentials (deploy key or SSH agent) — decide deliberately whether that's the web user or whether Git installs are restricted to a queue worker running as a deploy user.
Ecosystem metadata over code reading. Rather than grepping a module's service provider to find its middleware or policies, surface middleware, policies, and events from the manifest in the resource's infolist or a relation manager. This is especially useful during code review of a third-party module before you enable it.
CI alignment. If you maintain modules against this package, mirror its own CI posture: Pint scoped to package-owned paths, PHPStan in the main workflow, and a test matrix that skips Laravel 11 (Composer security advisories block those installs). Running Pint unscoped on a monorepo is what the 1.1.0 fix was working around — scope your formatting checks the same way.
removeable vs removable. Both manifest spellings are now accepted. If you generate manifests programmatically or validate them in your own code, accept both, and don't "fix" one into the other in a migration without checking what Laravel Modular 1.2 reads.~, environment variable substitution in a URL) will no longer expand. Pass explicit values.../ traversal are rejected. Archives that installed fine on 1.0.x may now be refused — that's correct behavior, but it's the most likely upgrade surprise. Repackage with relative, non-escaping paths.How can I help you explore Laravel packages today?