Glisser

Live Laravel Nova avec Laravel Cameroun : un back-office complet en live coding

Live Laravel Nova avec Laravel Cameroun — back-office en live coding

Écrit par : Thibault Chazottes

Le contexte

Meetup en ligne avec Laravel Cameroun (premier meetup 2026) : introduction à Laravel Nova, live coding + Q&A.

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 ;
  • $title pour 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) :

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 un DateTime (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:actionfields() (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.