henryavila/filament-health-dashboard
Filament Health Dashboard adds a health-check dashboard to your Filament admin panel, giving you a quick overview of your Laravel app's key services and dependencies so you can spot problems before they affect users.
Architecture fit
This is a thin presentation layer over spatie/laravel-health — no migrations, no persistence, no new datastore, no queue workers. It reads the health check registry at runtime and renders it inside Filament. That is a low-blast-radius shape: it can be added to an existing panel and removed without residue. The three-surface design (standalone page, widget, embeddable <livewire:filament-health-dashboard />) is the strongest architectural signal — one install can serve an ops-only dashboard, a panel home widget, or an inline embed on an existing page, which removes a class of bespoke blade work teams typically write themselves. The CheckIntegration layer is the meaningful extension point: it lets us attach rich per-check tables and remediation actions without forking the package, which is the difference between a demo and something we can own.
Integration feasibility
Install is a composer require plus plugin registration in a panel provider. The inlined stylesheet removing the php artisan filament:assets step is a genuine operational win — that step is a recurring source of "works locally, unstyled in prod" failures and of deploy-pipeline special-casing. The hard constraint is Filament v4 only. Any panel still on v3 is excluded outright, and v4 itself is early enough that the surrounding ecosystem (other plugins, custom panel themes) may not be fully migrated. We should treat this as usable only in panels already committed to v4.
Technical risk
CheckIntegration contract, config keys, and component names should all be assumed to move.Result->meta rendering is a data-exposure risk, not just a feature. Auto-rendering scalars, nested JSON, and record tables means whatever a check puts in meta — connection strings, hostnames, env values, exception traces — becomes visible to anyone who can see the dashboard. This needs a policy decision before enablement, not after.style-src CSP and duplicates payload if the widget is embedded more than once per page.Key questions
meta rendering filterable/allowlisted per check, or all-or-nothing?<style> injection?CheckIntegration considered stable, and are there published examples beyond the source?laravel-health's own scheduling and notification channels without double-reporting?Stack fit
Best fit is a Laravel app already running spatie/laravel-health with at least one Filament v4 panel. If health checks exist but the panel is v3, this is not adoptable today. If neither exists, the package is not a reason to introduce either dependency — sequence it after health checks are already valued.
Migration path
Greenfield, no data migration. The realistic "migration" is retiring hand-rolled health blade views or ad-hoc /health JSON polling dashboards once parity is demonstrated. Keep those in place until the package has run a full on-call cycle, since it changes how operators see failures, not just the cosmetics.
Compatibility
Treat the dependency as pinned-exact, not caret-ranged, for the first few months. Verify Livewire alignment with the panel's Filament v4 minor, and confirm laravel-health's version constraint in the package's composer.json rather than assuming latest. Test with our actual CSP headers in staging — that is the most likely silent breakage.
Sequencing
meta exposure policy per check.CheckIntegration adapters for the top 3–5 checks that actually page people — this is where the value compounds.Maintenance Ongoing cost is dependency-tracking, not code. A 0.x package with no deprecation policy means each minor release is a potential break; budget a review per release and pin versions in between. Secondary cost: we now depend on Filament v4's release cadence, so a Filament major becomes a two-package upgrade rather than one.
Support
Community-supported, likely small maintainer footprint. Internal escalation realistically means reading the source. Mitigate by keeping our CheckIntegration implementations in our own codebase, not as patches to the vendor package — that is the only part we genuinely own.
Scaling The scaling axis is polling fan-out, not data volume. Cost ≈ (concurrent dashboard viewers) × (refresh interval) × (cost of every registered check). Checks that hit the network, database, or Redis are the expensive ones and they run because someone left a tab open. Default to manual re-run on shared/large screens; reserve auto-refresh for a single ops display with a long interval.
Failure modes
meta drill-down exposing credentials or internal hostnames to a broader audience than intended.CheckIntegration.Ramp-up
Low for anyone fluent in Filament — a developer can have it on a panel in an afternoon. The real ramp-up is the CheckIntegration layer and the meta-exposure policy, which require understanding what each health check actually puts in its result. Plan roughly a day of engineering plus a security/policy review before it faces operators.
How can I help you explore Laravel packages today?