idverde, back-office et vitrine des agences

2025

idverde

Développement full-stack (Laravel + Filament), pour l’agence Point Cédille · Back-office Filament + vitrine cartographique Leaflet

Contexte

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.

Objectifs & livrables

Centraliser agences, chantiers et territoires

Un back-office Filament complet, avec un CRUD sur toutes les entités métier.

Une vitrine cartographique nationale

Carte interactive avec deux vues, implantations et territoires.

Des relations métier réelles

Agences liées aux chantiers, chantiers liés aux spécialités, en many-to-many.

Gestion des accès par rôle

Invitation utilisateurs par email, policies Laravel par ressource.

Admin

Back-office Filament complet

CRUD sur agences, chantiers, territoires, spécialités, qualifications et utilisateurs.

Géographie

Saisie et tracé territorial

Adresses via Google Maps, coordonnées GPS, périmètres GeoJSON dans l’admin.

Vitrine

Carte interactive, deux vues

Implantations en marqueurs clusterisés, territoires en polygones GeoJSON colorés par zone.

Fiches

Agences et chantiers détaillés

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é.

LeafletGeoJSON

01 / 04

Une carte à deux visages : implantations et territoires

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

LaravelFilament

02 / 04

Relations many-to-many au cœur du modèle

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

SanctumPermissions

03 / 04

Invitation utilisateurs par token sécurisé

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é

PHPEnum

04 / 04

Régions en enum, montants en cast personnalisé

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

Pourquoi ces choix techniques

Les deux ont été confiés par l’agence Point Cédille, sur des projets différents.

Suite

Un back-office et une vitrine cartographique sur-mesure ?

Filament pour l’administration, Leaflet pour la carte publique : deux interfaces, une seule source de données.