Application web • Gestion de stock pour une pépinière
1. Contexte
Pépi+ est une application web de gestion de stock conçue et développée pour une pépinière.
Le client gérait deux types de stocks bien distincts : un stock réel composé des plants cultivés
et détenus physiquement, et un stock virtuel correspondant aux plants disponibles chez des
partenaires fournisseurs non stockés sur place.
L'enjeu principal était de proposer un catalogue de plants réservable avec une traçabilité
complète, en distinguant à tout moment l'origine du stock. J'ai pris en charge la conception
et le développement intégral de l'application, de la modélisation de la base de données
jusqu'à la livraison finale.
L'objectif central était de concevoir une application fiable permettant à la pépinière de
piloter son stock en temps réel, avec une distinction claire entre stock réel et stock virtuel.
Le système devait gérer des réservations, déclencher automatiquement la mutation de stock lors
d'une livraison, et donner à chaque partenaire fournisseur un accès restreint à son propre
inventaire.
Sur le plan technique, le projet impliquait de concevoir une base de données complexe (MCD/MLD),
de maîtriser Symfony 7.4 avec Doctrine, d'intégrer des notifications par email via Symfony Mailer,
et de gérer des filtres dynamiques en JavaScript pour l'interface de visualisation du stock.
3. Travail réalisé
Authentification & gestion des rôles
Mise en place d'un système de connexion sécurisé avec trois niveaux d'accès : administrateur
(accès complet), collaborateur et partenaire fournisseur (espace restreint à son propre stock
et ses réservations). La gestion des utilisateurs et des partenaires est intégralement pilotée
depuis l'interface admin.
Gestion des utilisateurs — rôles Admin, Collaborateur et PartenaireListe des partenaires fournisseurs et leur volume de stock
Tableau de bord administrateur
Vue d'ensemble des indicateurs clés de l'activité : alertes de stock faible, nombre de
commandes en cours, partenaires actifs et dernières activités. L'administrateur peut suivre
l'état global de l'application en un seul coup d'œil.
Tableau de bord admin — alertes stock, commandes actives et dernières activités
Catalogue des plants
Référentiel complet des plants géré par l'administrateur : nom latin, nom commun et type
(feuillu, arbuste, résineux, fruitier). Ce catalogue sert de base à l'ensemble du système
de stock et de réservation.
Catalogue des plants — référentiel avec nom latin, nom commun et type
Stock global
Visualisation consolidée du stock réel (Pépi+) et du stock virtuel (partenaires) sur une
même interface. Chaque ligne indique clairement l'origine du stock, la saison, le
conditionnement et la quantité disponible. Les collaborateurs peuvent passer commande
directement depuis cette vue.
État du stock global — vue consolidée stock réel (Pépi+) et stock virtuel (partenaires)
Gestion des commandes & mutation automatique
Lorsqu'une commande est marquée comme livrée, un script déclenche automatiquement la mutation
de stock : la quantité est retirée du stock virtuel du partenaire fournisseur et ajoutée au
stock réel de Pépi+. Cette logique garantit une traçabilité complète sans aucune intervention
manuelle.
Inventaire des commandes — statuts Réservation, Livrée et Annulée avec traçabilité complète
Espace partenaire
Chaque partenaire fournisseur dispose d'un espace dédié et restreint : tableau de bord
personnel avec ses indicateurs, gestion de son stock propre et suivi des réservations
effectuées sur son inventaire — sans aucun accès aux données des autres partenaires.
Tableau de bord partenaire — indicateurs personnalisés et dernières activités
Mes réservations — suivi des commandes passées sur le stock du partenaire
Stock personnel du partenaire — gestion de son inventaire avec nom latin et quantités
Notifications par email
Intégration de Symfony Mailer pour envoyer des notifications automatiques aux partenaires
lors de nouvelles réservations sur leur stock. Configuration de Mailtrap pour intercepter
et valider les emails en environnement de développement avant mise en production.
DoctrineORM – modélisation et gestion de la base de données
Tailwind CSSMise en page responsive et interface utilisateur
JavaScriptFiltres dynamiques sur l'interface de gestion des stocks
Symfony MailerNotifications email automatiques aux partenaires
MySQLBase de données relationnelle (MCD / MLD)
Environnement
VS CodeSymfony CLIMailtrapphpMyAdminGitTrello
5. Compétences mobilisées
C1 – Gérer le patrimoine informatique
→ Versionnement du code source avec Git et gestion des droits
d'accès par rôles (admin, collaborateur, partenaire) intégrée à l'application
C4 – Travailler en mode projet
→ Suivi du projet avec Trello : découpage en tâches, priorisation
et points d'avancement réguliers tout au long du développement
C5 – Mettre à disposition un service informatique
→ Tests fonctionnels complets (dont emails via Mailtrap) avant
chaque livraison et mise à disposition de l'application au client
C6 – Organiser son développement professionnel
→ Montée en compétences sur Symfony 7.4, Doctrine, Tailwind CSS
et Symfony Mailer en conditions réelles avec contraintes métier et délais définis
Compétences E5 mobilisées
C1Patrimoine informatique
C4Mode projet
C5Mise à disposition du service
C6Développement professionnel
6. Résultats obtenus
L'application Pépi+ est fonctionnelle et livrée : authentification sécurisée avec trois
niveaux de rôles, tableau de bord des indicateurs, catalogue des plants et conditionnements,
gestion complète du stock réel et virtuel, logique de mutation automatique à la livraison,
espace dédié pour chaque partenaire fournisseur et notifications email opérationnelles.
État du projet
Livré ✓3 niveaux de rôles ✓Mutation automatique ✓Notifications email ✓
7. Bilan personnel
Difficultés rencontrées
Deux défis techniques ont particulièrement marqué ce projet. Le premier : les emails
n'étaient pas reçus en développement. Après investigation, j'ai configuré Mailtrap avec
Symfony Mailer pour intercepter les emails en local et valider leur bon fonctionnement
avant la mise en production. Le second : l'intégration des filtres dynamiques en JavaScript.
J'ai dû comprendre la logique interne d'une bibliothèque JS externe sans expérience
préalable, puis l'adapter précisément au contexte du projet.
Solution apportée
Dans les deux cas, la méthode a été la même : décomposer le problème, lire la documentation
officielle, tester étape par étape et isoler la source du blocage avant de corriger. Cette
approche méthodique m'a permis de résoudre chaque problème de façon autonome.
Ce que j'ai appris
Pépi+ est le projet le plus complet et le plus complexe que j'ai développé. Concevoir une
base de données avec des relations multiples, implémenter une logique métier précise et
gérer des niveaux d'accès différenciés m'ont donné une vision concrète du développement
d'applications web professionnelles. C'est aussi le projet qui m'a le plus fait progresser
sur Symfony.