Après la playlist découverte Laravel Nova, voici le live promis : une session avec Laravel Cameroun où, en partant d’un Laravel quasi neuf, on monte un mini-CRM (projets + tickets) avec ressources, recherche, filtres, actions, stats et policies.
Vidéo plus longue que les épisodes courts : on code, on explique, et on voit la réaction d’Arthur (Filament au quotidien) quand Nova enchaîne les briques en quelques minutes. Version réupload : échos / micros du début du live nettoyés, collab Laravel Cameroun conservée.
Le contexte
Meetup en ligne avec Laravel Cameroun (premier meetup 2026) : introduction à Laravel Nova, live coding + Q&A.
- Annonce / page communauté : Meetup Laravel Cameroun 2026 : Introduction à Laravel Nova
- Replay sur ma chaîne (son nettoyé, collab conservée) : youtu.be/IaCbcmiXEZg
Objectif de la session : montrer qu’avec une licence ~100 $, on évite des jours de CRUD maison, et que le résultat tient pour un back-office client réel (retour d’expérience depuis 2018, annonce Nova à Laracon Amsterdam…).
Le scénario démo : mini-CRM
Stack de départ (préparée hors live pour aller à l’essentiel) :
- Laravel + Nova déjà installés ;
- modèles User (natif), Project, Ticket ;
- relations classiques : un projet a des tickets, un ticket appartient à un projet et peut être assigné à un user ;
- seeders + compte admin pour se connecter.
Cas métier simple : chef de projet / tickets / développeurs : le type de CRUD qu’on refait sur tous les projets clients.
1. Ressources & champs (le CRUD en quelques minutes)
Pour chaque modèle Eloquent → une ressource Nova (php artisan nova:resource).
Sur Project : Text, Textarea, Select (statuts actif / archivé)… Refresh → le menu s’enrichit, index / show / edit / delete sont là.
Sur Ticket : mêmes idées + relations BelongsTo (projet, user assigné) et HasMany côté projet (liste des tickets liés).
Points clés vus en live :
- l’UI Nova est stable (menu, sidebar, index) : pas un design 100 % custom, parfait pour un outil interne ;
sortable(),nullable(),rules()Laravel classiques sur les fields ;$titlepour afficher le name / title plutôt que des IDs dans les relations.
Sans toucher aux routes web.php : la ressource suffit.
2. Recherche locale & globale
Deux niveaux (comme dans la partie recherche de la playlist) :
| Où | Portée |
|---|---|
| Champ sur l’index | Uniquement cette ressource |
| Barre du haut | Toute la base (ressources cherchables) |
Configuration : $search (name, statut, titre, user.name, etc.). Affichage des résultats : $title / méthode title() + subtitle() (ex. titre du ticket + nom du user).
Bonus doc évoqué : full-text, JSON, relations polymorphiques via searchableColumns().
3. Filtres (et cumuls magiques)
- Filtre custom
php artisan nova:filter:options()+apply(), ex. projets actifs / archivés ; - filtre tickets par projet (select des projets) ;
->filterable()sur unDateTime(created_at) → plage de dates native Nova 5.
Le vrai gain : filtres + recherche + tri se cumulent (et restent dans l’URL pour partager une vue avec un collègue), sans recoder la fusion à la main.
4. Actions en masse
Besoin type chef de projet : réassigner plusieurs tickets à un user sans éditer fiche par fiche.
php artisan nova:action → fields() (select user) + handle() (boucle / update) → branchement dans actions() de la ressource Ticket.
Sélection de lignes → menu Actions → run. Même logique pour exports, changements de statut, bons de commande… sur des projets SaaS réels.
5. Metrics (stats)
Cards Nova : Value, Trend, Partition, Progress, table…
En live : partition « projets par statut », trends / totaux sur le dashboard. Cache possible (cacheFor). Calculs helpers (count, sum, average…) ou données custom si le métier l’exige.
6. Lenses & policies (pour finir le back-office)
- Lenses : vues préfiltrées (raccourcis « mes tickets », etc.) : pas magique, mais très pratique pour les clients.
- Policies Laravel reprises par Nova (
viewAny,view,create…) ;Nova::whenServing()ou policies dédiées Nova si le front métier et l’admin divergent (épisode policies).
À ce stade : CRUD + recherche + filtres + actions + stats + droits : il ne manque quasi rien pour un back-office client classique.
Nova vs Filament (questions du live)
| Nova | Filament | |
|---|---|---|
| Positionnement | Officiel Laravel, payant (~100 $ / projet) | Open source, communauté très active |
| Stack front | Vue / Inertia (custom fields = un peu de Vue) | Livewire / TALL |
| Vitesse CRUD | Très rapide (fields unifiés index + form) | Un peu plus de déclarations, plus de souplesse UI |
| UI | Sobre, stable | Plus libre / customisable |
Message du live : Filament est excellent ; Nova reste mon outil quotidien depuis 2018 pour les clients. ROI licence vs jours de dev. Arthur (plutôt Filament / React) redécouvre Nova après plusieurs années… et le rythme de la démo fait son effet.
Pour qui regarder ce replay ?
- Développeurs Laravel qui veulent voir Nova en conditions réelles (pas seulement des slides) ;
- freelances / leads qui veulent montrer l’outil à un client ou un patron ;
- ceux qui ont suivi la playlist courte et veulent le fil complet d’un coup.
Pour approfondir Laravel (middleware, gates, policies, jobs…) : formations.thibault-chazottes.fr.
Vidéo du live
Conclusion
Ce live clôt la série découverte Nova « en vrai » : on part de zéro (ou presque) et on empile ressources, recherche, filtres, actions, metrics et policies jusqu’à un back-office crédible, en une soirée de meetup, pas en une semaine de CRUD maison.
Merci à Arthur et à toute la communauté Laravel Cameroun pour l’invitation. Abonnez-vous à la chaîne et suivez laravel.cm pour les prochains meetups.