Un socle commun pour plusieurs domaines viticoles
Socle applicatif Symfony développé en 2012-2013 en prestation pour l'agence web Eenov, puis déployé sur plusieurs domaines viticoles bordelais : une union de producteurs viticoles de Bordeaux et un château viticole du Haut-Médoc.
J'ai conçu et développé ce socle : un bundle Symfony réutilisable couvrant catalogue de vins, fiches millésimes, oenotourisme, export PDF, QR codes et back-office.
Contexte
L'agence Eenov accompagnait plusieurs acteurs viticoles du Bordelais dans leur présence en ligne. Leurs besoins se ressemblaient : présenter des vins et leurs millésimes, raconter un domaine, accueillir des visiteurs. Seuls l'identité visuelle et une partie des modules changeaient d'un client à l'autre.
Le problème à résoudre
- Ne pas redévelopper chaque site — mettre en commun ce qui est identique d'un domaine à l'autre.
- Modéliser le vin correctement — familles, vins, millésimes, cépages, sols, vinification, dégustation et récompenses.
- Relier la bouteille au site — fiches techniques imprimables et QR codes renvoyant à la fiche millésime en ligne.
- Rendre chaque domaine autonome — un back-office pour gérer catalogue, millésimes et actualités.
Contraintes
- Une identité par client — chaque domaine garde sa charte graphique et ses propres contenus.
- Des modules à la carte — oenotourisme, événements ou partenaires selon les besoins du domaine.
- Plusieurs noms de domaine — une même application doit servir des sites distincts.
- Multilingue — contenus et fiches millésimes disponibles en plusieurs langues.
Choix techniques et pourquoi
- Un bundle Symfony générique — le modèle de données et les fonctionnalités communes vivent dans un bundle paramétrable ; chaque déploiement n'ajoute que sa charte, ses contenus et les modules activés. Une correction profite à tous les sites.
- Routage selon le nom de domaine — l'application choisit le site à servir d'après le hostname, ce qui permet d'exposer un site par château ou par famille de vins depuis une seule base de code.
- Un modèle de données viticole — conçu avec Doctrine autour du millésime, pour que chaque année d'un vin porte ses propres caractéristiques et récompenses.
- Génération de PDF et de QR codes côté serveur — FPDF pour les fiches techniques, phpqrcode pour les codes destinés aux étiquettes : aucun outil externe à manipuler par le client.
Ce qui a été livré
- Catalogue de vins — navigation par châteaux et marques, recherche et pagination.
- Fiches millésimes — description, cépages, sols, vinification, conservation, accords mets-vins et dégustation, avec navigation entre millésimes.
- Récompenses — médailles et distinctions affichées par millésime.
- Oenotourisme et événements — visites, dégustations, carte de localisation, événements professionnels et familiaux.
- Export PDF et QR codes — fiche technique par millésime et code pour l'étiquetage des bouteilles.
- Actualités — articles avec flux RSS, liés aux millésimes si besoin.
- Back-office — vins, millésimes, récompenses, actualités, images et contenus éditables.
Résultats
Le socle a été déployé sur plusieurs domaines viticoles bordelais, chacun avec sa propre identité et ses propres modules : un catalogue de vins pour l'union de producteurs, un site vitrine avec oenotourisme pour le château du Haut-Médoc. Chaque domaine gère ensuite ses catalogues, millésimes et actualités depuis son back-office.
Stack
- Back-end — PHP, Symfony 2, Doctrine ORM, Twig, FPDF, phpqrcode
- Front-end — jQuery
- Données — MySQL
- Hébergement — OVH
Pour aller plus loin
Ce projet relève de mon offre de développement web sur mesure. Servir plusieurs clients depuis une même base de code pose la question de l'isolation, traitée dans l'article application multi-tenant : quel modèle d'isolation ?