Filament Dashboard Widgets
Construisez des tableaux de bord Filament cohérents avec quinze widgets prêts à étendre : métriques, objectifs, tendances, funnels, quotas, comparaisons et plus.
Explorez visuellement l’architecture d’une application Laravel et Filament : modèles, relations Eloquent, composants Livewire, ressources et panels réunis dans un graphe interactif.
| PHP | ^8.3 |
|---|---|
| Laravel | ^12.0|^13.0 |
| Filament | ^4.0|^5.0 |
| Version | v1.1.1 |
| Licence | MIT |
Installation
composer require laboiteacode/filament-dependency-graph
Comprendre une application Laravel importante oblige souvent à ouvrir des dizaines de modèles, ressources Filament et composants Livewire avant de percevoir comment l’ensemble s’articule. Les diagrammes écrits à la main vieillissent, tandis que l’architecture réelle continue d’évoluer. Filament Dependency Graph construit cette carte directement depuis le code de l’application.
Une seule page réunit les modèles Eloquent, leurs relations, les composants Livewire, les ressources, les pages et les panels Filament. L’exploration se fait dans un graphe interactif, un arbre ou des tables natives Filament. La recherche, les filtres et le mode focus permettent ensuite de passer d’une vue d’ensemble au voisinage exact d’un modèle.
Le plugin découvre automatiquement les relations Eloquent, y compris les relations polymorphiques et les morph maps. Il repère aussi les modèles utilisés par les composants Livewire sans les instancier : propriétés typées, signatures de méthodes et références statiques explicites sont analysées en lecture seule.
Le résultat répond rapidement aux questions qui ralentissent une reprise de projet :
Le graphe privilégie la navigation visuelle, avec une disposition hiérarchique ou libre. L’arbre rend les dépendances faciles à parcourir. Les tables offrent recherche, tri et pagination par type d’élément. Un inspecteur latéral détaille enfin la classe, la table, les relations, les casts, les traits, les ressources et les diagnostics de découverte.
Les exports JSON et Mermaid sont déterministes : à architecture identique, le fichier produit reste identique. Ils peuvent ainsi être versionnés dans la documentation ou comparés en intégration continue pour repérer une dérive.
La découverte est mise en cache et peut être préparée pendant un déploiement. Les erreurs de métadonnées sont isolées par modèle afin qu’une classe atypique (y compris un modèle sans clé primaire) n’empêche pas d’explorer le reste de l’application.
Les noms de classes, de tables et de relations sont sensibles. La page est donc limitée à l’environnement local par défaut. L’ouvrir ailleurs demande de fournir explicitement une règle d’autorisation.
Le plugin est open source, distribué sous licence MIT, compatible avec Filament 4 et 5, et livré en français et en anglais.
Installez le package avec Composer :
composer require laboiteacode/filament-dependency-graph
Enregistrez le plugin dans le provider du panel :
use LaBoiteACode\DependencyGraph\DependencyGraphPlugin;
public function panel(Panel $panel): Panel
{
return $panel
->plugins([
DependencyGraphPlugin::make(),
]);
}
La page est alors disponible sur /admin/dependency-graph dans l’environnement local. Le plugin peut être enregistré sur plusieurs panels, avec une configuration propre à chacun.
Après une installation ou une mise à jour en production, republiez les assets Filament :
php artisan filament:assets
Le graphe propose une disposition hiérarchique pour lire les dépendances de haut en bas et une disposition libre pour explorer des ensembles plus denses. La sélection d’un nœud atténue le reste du graphe et ouvre son inspecteur.
L’arbre organise les dépendances sous forme de branches repliables. Les tables utilisent les composants natifs Filament et séparent modèles, composants Livewire, ressources et autres éléments ; elles sont recherchables, triables et paginées.
L’inspecteur affiche les métadonnées utiles de l’élément sélectionné. Le mode focus restreint le graphe à ses voisins, avec une profondeur et une direction configurables. Son état est conservé dans l’URL afin de partager ou mettre en favori une vue précise.
Deux portées sont disponibles :
Les filtres portent notamment sur le panel, le type de nœud, le type de relation, le namespace, l’appartenance au projet et les orphelins.
| Touche | Action |
|---|---|
/ |
Placer le curseur dans la recherche |
F |
Focaliser sur le nœud sélectionné |
Esc |
Fermer l’inspecteur ou quitter le focus |
R |
Réinitialiser le graphe |
G, T, L |
Afficher le graphe, l’arbre ou les tables |
E |
Exporter en JSON |
La barre d’outils exporte la vue courante, filtres compris, en JSON ou Mermaid. La même opération est disponible en ligne de commande :
php artisan filament-dependency-graph:export \
--format=mermaid \
--scope=laravel \
--output=docs/dependency-graph.mmd
Les options permettent de choisir les panels, un nœud de focus, la profondeur et la direction. Ajoutez --force pour remplacer un fichier existant.
L’API est également accessible par la façade :
use LaBoiteACode\DependencyGraph\Facades\DependencyGraph;
$snapshot = DependencyGraph::discover();
$graph = DependencyGraph::graph();
$graph->nodeCount();
$graph->edgeCount();
La réflexion et le parcours des fichiers sont mis en cache sous forme de snapshot :
# Préparer le cache, par exemple pendant le déploiement
php artisan filament-dependency-graph:cache --scope=laravel
# Supprimer tous les snapshots
php artisan filament-dependency-graph:clear
La clé tient compte de la version du schéma interne, des versions d’exécution et de chaque réglage de découverte. Un changement de configuration ne peut donc pas servir un ancien graphe.
Publiez la configuration pour personnaliser la navigation, les chemins inspectés, les filtres ou le cache :
php artisan vendor:publish --tag=filament-dependency-graph-config
Les mêmes réglages principaux existent sous forme d’API fluide :
use LaBoiteACode\DependencyGraph\Domain\Enums\GraphScope;
DependencyGraphPlugin::make()
->defaultScope(GraphScope::Filament)
->defaultDepth(2)
->allowLaravelScope()
->registerModelPath(app_path('Domain'))
->registerModelNamespace('App\\Domain\\')
->registerLivewirePath(app_path('Domain/Livewire'))
->registerLivewireNamespace('App\\Domain\\Livewire\\')
->excludeModels([AuditLog::class]);
La découverte heuristique des relations non typées est désactivée par défaut, car appeler une méthode arbitraire peut produire des effets de bord. Un type de retour ou un docblock reste la méthode la plus sûre pour rendre une relation détectable.
La page révèle des informations d’architecture. Elle n’est accessible par défaut que lorsque app()->isLocal() renvoie true.
Pour l’activer dans un autre environnement, fournissez une autorisation explicite et stricte :
DependencyGraphPlugin::make()
->canAccessUsing(
fn (): bool => auth()->user()?->can('viewDependencyGraph') === true,
);
Cette callback remplace entièrement la règle « local uniquement ».
Les traductions anglaises et françaises sont incluses. Les vues et traductions peuvent être publiées si l’application doit adapter les libellés ou le rendu :
php artisan vendor:publish --tag=filament-dependency-graph-translations
php artisan vendor:publish --tag=filament-dependency-graph-views
À découvrir aussi
Construisez des tableaux de bord Filament cohérents avec quinze widgets prêts à étendre : métriques, objectifs, tendances, funnels, quotas, comparaisons et plus.
Transformez les journaux d’activité techniques en événements métier clairs, localisés et lisibles dans les widgets, pages et infolists Filament.
Confiez les horaires d'ouverture à votre client : grille hebdomadaire, fermetures exceptionnelles, congés et fuseaux horaires, stockés au format spatie/opening-hours.