Vino est une application web permettant à chaque utilisateur de gérer un ou plusieurs celliers de vin.
Elle intègre le catalogue officiel de la SAQ via une API GraphQL, permet d’ajouter des bouteilles personnalisées, de noter ses dégustations et de trier/rechercher facilement.
Développée en équipe selon la méthode Agile/Scrum dans le cadre du cours 582-41W au Collège de Maisonneuve.
Permettre à un utilisateur de :
- Gérer un ou plusieurs celliers de vin.
- Ajouter, modifier et supprimer des bouteilles.
- Importer et consulter le catalogue officiel de la SAQ.
- ✅ Maquettes mobiles (Accueil, Cellier, Authentification)
- ✅ Base technique Laravel avec support MySQL/SQLite
- ✅ Import automatisé du catalogue SAQ via GraphQL (Adobe Commerce API)
- ✅ Authentification complète (connexion / inscription / déconnexion)
- ✅ Gestion multi-celliers par utilisateur (création, modification, suppression)
- ✅ CRUD complet sur les bouteilles de cellier (ajout, modification, suppression, affichage)
- ✅ Système de notes de dégustation (notes textuelles et notation par étoiles 0-10)
- ✅ Recherche & filtres avancés (par nom, pays, type, quantité, format, prix, date d'ajout)
- ✅ Ajout de bouteilles depuis le catalogue SAQ au cellier
- ✅ Ajout manuel de bouteilles (pour les vins non répertoriés à la SAQ)
- ✅ Système de notifications toast (succès/erreur)
- ✅ Affichage détaillé des bouteilles (avec images, informations complètes)
- ✅ Gestion des quantités (augmentation/diminution rapide)
- ✅ Liste d'achat
- ✅ Partage social
| Couche | Technologie |
|---|---|
| Backend | Laravel 12, PHP 8.2 |
| Frontend | Blade, Tailwind CSS v4, Vite |
| Base de données | SQLite (migrations incluses) |
| API externe | GraphQL (Adobe Commerce – SAQ) |
| HTTP client | Guzzle 7.10 |
| Tests | PHPUnit 11.5 |
| Design | Figma (mobile-first) |
| Gestion projet | Jira (Scrum/Agile) |
| JavaScript | ES6 Modules, Vanilla JS |
Le service SaqScraper permet d'importer automatiquement le catalogue de produits de la SAQ dans la base de données locale via l'API GraphQL d'Adobe Commerce.
Pour une documentation complète sur le service, consultez SAQSCRAPER_README.md.
Utilisation rapide :
# Importer 10 produits pour tester
php artisan saq:import --limite=10- Inscription avec validation des données
- Connexion avec gestion de session
- Déconnexion sécurisée
- Protection des routes par middleware
auth
- Création de plusieurs celliers par utilisateur
- Modification et suppression de celliers
- Affichage en grille avec compteur de bouteilles
- Navigation cliquable vers les détails d'un cellier
- Depuis le catalogue SAQ : Ajout rapide avec sélection de quantité
- Manuelle : Création de bouteilles personnalisées avec tous les détails
- Modification : Édition des bouteilles manuelles (les bouteilles SAQ sont en lecture seule)
- Suppression : Retrait de bouteilles du cellier
- Affichage détaillé : Page complète avec image, informations, notes de dégustation
- Gestion des quantités : Boutons +/- pour ajuster rapidement
- Notes textuelles libres (jusqu'à 5000 caractères)
- Notation par étoiles (0 à 10)
- Modification des notes à tout moment
- Affichage dans la page de détails de la bouteille
- Import automatisé via API GraphQL
- Affichage paginé des bouteilles
- Recherche dans le catalogue
- Téléchargement automatique des images
- Normalisation des données (pays, type de vin)
- Toasts de succès (vert) et d'erreur (rouge)
- Affichage automatique en bas à droite
- Disparition automatique après 2.5 secondes
- Support de plusieurs toasts simultanés
- Maquettes Figma
- Backlog & Sprint Board (Jira)
- Dépôt GitHub
Samaneh Mahboudi Philippe Cossette Adil El Amrani Tommy Bourgeois
- PHP 8.2+
- Composer
- Node.js
- MySQL
-
Cloner le dépôt
git clone https://github.com/ProjetFinal-Maisonneuve/ProjetFinal.git cd ProjetFinal -
Installer les dépendances PHP
composer install
-
Configurer l'environnement
cp .env.example .env php artisan key:generate
-
Configurer la base de données
Modifiez le fichier
.envpour configurer votre base de données (SQLite recommandé pour le développement) :DB_CONNECTION=sqlite SESSION_DRIVER=file
-
Configurer la localisation (français)
Pour que l'application affiche les messages en français, configurez la locale dans le fichier
.env:APP_LOCALE=fr APP_FALLBACK_LOCALE=fr APP_FAKER_LOCALE=fr_FR
Note : Les fichiers de traduction sont déjà présents dans
lang/fr/etlang/fr.json. Si certains messages restent en anglais, vérifiez que :APP_LOCALE=frest bien défini dans.env- Les serveurs ont été redémarrés
Créez le fichier de base de données SQLite :
touch database/database.sqlite
-
Exécuter les migrations
php artisan migrate
-
Installer les dépendances frontend
npm install
-
Créer le lien symbolique pour le stockage
php artisan storage:link
-
Lancer le serveur de développement
php artisan serve
L'application sera accessible à
http://localhost:8000 -
Compiler les assets frontend
npm run build
# ou pour le développement avec hot-reload
npm run dev-
Importer le catalogue SAQ (optionnel)
php artisan saq:import --limite=10
Voir SAQSCRAPER_README.md pour la documentation complète du service.