Centraliser agences, chantiers et territoires
Un back-office Filament complet, avec un CRUD sur toutes les entités métier.

2025
Développement full-stack (Laravel + Filament), pour l’agence Point Cédille · Back-office Filament + vitrine cartographique Leaflet
idverde, leader français de l’entretien et de la création d’espaces verts, avait besoin d’une application qui centralise la gestion de ses agences, chantiers et territoires, et d’une vitrine publique pour présenter son implantation nationale. L’agence Point Cédille m’a confié le développement, comme pour JeromeBTP.
L’application combine un back-office Filament pour la gestion de contenu (agences, références chantiers, territoires géographiques, médias) et une vitrine publique avec une carte interactive Leaflet, basculable entre implantations (marqueurs clusterisés) et territoires (polygones GeoJSON par zone). Chaque agence, chantier et territoire est relié aux autres via des relations many-to-many, avec une gestion des utilisateurs par invitation email et par rôles.
Livré fin 2025.
Un back-office Filament complet, avec un CRUD sur toutes les entités métier.
Carte interactive avec deux vues, implantations et territoires.
Agences liées aux chantiers, chantiers liés aux spécialités, en many-to-many.
Invitation utilisateurs par email, policies Laravel par ressource.
Admin
CRUD sur agences, chantiers, territoires, spécialités, qualifications et utilisateurs.
Géographie
Adresses via Google Maps, coordonnées GPS, périmètres GeoJSON dans l’admin.
Vitrine
Implantations en marqueurs clusterisés, territoires en polygones GeoJSON colorés par zone.
Fiches
Coordonnées, directeur, effectifs, chiffre d’affaires, galeries photo et vidéo.
Sous le capot
Laravel 10 et Filament 3 pour le back-office, Blade et Alpine.js pour le front, Leaflet et MarkerCluster pour la cartographie publique, Google Maps côté admin pour la géolocalisation. Spatie Media Library pour les galeries, Spatie Laravel Permission pour les rôles, Laravel Sanctum pour l’authentification. Identifiants en UUID, régions modélisées via un enum PHP, montants gérés via un cast personnalisé.
Leaflet
La même carte bascule entre marqueurs clusterisés (agences) et polygones GeoJSON colorés (territoires).
Laravel
Agences, chantiers et spécialités reliés entre eux, avec mise en avant possible sur chaque liaison.
Sanctum
Invitation par email avec token sécurisé, valable 7 jours, avant création du mot de passe.
PHP
Régions modélisées en enum PHP, montants gérés via un cast personnalisé, pas des chaînes ou des flottants bruts.
01 / 04
Problème
Présenter à la fois l’implantation précise des agences et le découpage territorial du groupe, sans multiplier les cartes ni surcharger l’affichage à l’échelle nationale.
Approche
La page d’accueil expose une carte Leaflet avec MarkerCluster, basculable entre deux vues : les implantations, en marqueurs groupés par zoom, et les territoires, en polygones GeoJSON colorés par région. Les tuiles Esri assurent le rendu, sans dépendance à Google Maps côté public.
Une carte à deux visages : implantations et territoires
02 / 04
Problème
Modéliser qu’un chantier peut relever de plusieurs agences ou spécialités, et qu’une agence peut mettre certains chantiers en avant sur sa fiche, sans dupliquer les données.
Approche
Les relations many-to-many (agences liées aux chantiers, chantiers liés aux spécialités) portent des attributs pivot, dont la mise en avant. Le back-office Filament expose ces liaisons directement dans les formulaires d’édition, sans manipulation SQL manuelle.
Relations many-to-many au cœur du modèle
03 / 04
Problème
Donner accès au back-office à de nouveaux utilisateurs sans leur transmettre de mot de passe généré à la main, ni laisser un lien d’invitation valable indéfiniment.
Approche
Un email d’invitation est envoyé via Laravel Mail avec un token sécurisé, valable 7 jours. L’utilisateur crée lui-même son mot de passe à l’activation, puis se voit attribuer un rôle (administrator ou manager) contrôlé par Spatie Laravel Permission et des policies Laravel par ressource.
Invitation utilisateurs par token sécurisé
04 / 04
Problème
Garder des données métier fiables (régions administratives, montants financiers) sans les laisser filer en texte libre ou en flottants sujets aux erreurs d’arrondi.
Approche
Les régions (Méditerranée, Nord IDF, Grand Ouest, Est/Bourgogne-RA) sont modélisées via un enum PHP plutôt qu’une colonne texte libre. Les montants passent par un cast Laravel personnalisé (MoneyCast), pour un typage et un formatage cohérents partout dans l’application.
Régions en enum, montants en cast personnalisé
Décisions
Les deux ont été confiés par l’agence Point Cédille, sur des projets différents.
Projets

2026
Boutique Shopify Plus pour Näak, marque de nutrition et d’hydratation ultra-trail partenaire de l’UTMB® World Series. Refonte produit, abonnements et déploiement multi-marchés.

2026
Thème Shopify OS 2.0 écrit from scratch pour Slicy, protections et stickers vélo sur-mesure : configurateur de matching et personnalisation SVG en direct.

2026
Migration WooCommerce vers Shopify pour GoodBro, animalerie en ligne : 760 produits, 37 130 commandes, 1 177 abonnements, zéro email client.
Suite
Filament pour l’administration, Leaflet pour la carte publique : deux interfaces, une seule source de données.