(S9) Itération 3 - Site web transactionnel
Au cours de cette itération, vous finaliserez le site Web transactionnel rendu serveur en implémentant les achats (sans paiement).
Vous aurez à remettre le code complet du site Web transactionnel
Votre mission
Développer et finaliser le site Web transactionnel rendu serveur d'achat de produits.
Assurez-vous de bien lire les spécifications plus bas, il ne s'agit pas d'une copie 1:1 de Snowfall!
Pour cette mission (en individuel), valant pour 40% de la session, vous devrez remettre le site Web transactionnel d'achat en ligne (sans paiement).
Les fonctionnalités suivantes sont demandées:
- Inscription et authentification d'utilisateurs (clients)
- Seul les utilisateurs ayant un compte peuvent acheter sur le site
- Les utilisateurs n'ayant pas de compte peuvent voir les produits et ajouter des produits à leur panier, mais ne peuvet PAS procéder à l'achat
- Afficher les produits disponibles pour achat sur la page d'accueil ou encore dans une page "produits".
- Un produit est associé à une catégorie
- Possibilité de filtrer les produits sur la page d'accueil par catégorie, en plus d'un filtre supplémentaire au choix. La seule contrainte est que les deux filtres doivent pouvoir être appliqués en même temps.
- Afficher le détail des produits dans une page de détails affichant les toutes informations pertinentes sur le produit
- Permettre aux utilisateurs connectés d'ajouter, modifier et supprimer une évaluation (qui leur appartient) pour un produit. Une évaluation comprends:
- Un texte
- Une note (soit binaire de type pouce en haut et pouce en bas, soit une note de 1 à 5)
- L'évaluation est bien entendue associée à l'utilisateur par la suite
- Afficher les évaluations d'un produit sur la page de détails du produit
- Gestion d'un panier
- Le panier doit utiliser la session
- Ajouter des produits au panier. Votre panier doit pouvoir contenir plusieurs items et il doit être possible de spécifier la quantité d'un item lors de l'ajout.
- Afficher le contenu du panier.
- Afficher le prix total du panier
- Supprimer un produit du panier un à la fois (vous n'avez pas à gérer les modifications de quantités)
- Vider le panier complètement.
- Acheter un ou des produits via le contenu du panier (sans gestion du paiement).
- L'utilisateur doit passer par une étape de confirmation (checkout) avec un résumé de son achat
- Les produits achetés
- Les informations de facturation et d'expédition (sont les mêmes)
- Les renseignements sur le prix total:
- Sous-total
- Frais d'expédition (voir détails plus bas)
- Taxes (voir détails plus bas)
- Total
- À partir de la page de résumé, l'utilisateur peut passer la commande
- La sauvegarde des produits achetés et du détail de la transaction doit se faire en utilisant une transaction SQL puisque cela touche plusieurs tables (la facture et la table pivot des produits achetés).
- L'utilisateur doit passer par une étape de confirmation (checkout) avec un résumé de son achat
- Calcul de la taxe. Les taxes doivent être calculées sur l'achat
- TPS: 5 %
- TVQ: 9,975 %
- Gestion simple de l'expédition:
- 9.99$ si le prix de la commande est de moins de 100$ (ou autres montants s'appliquant mieux à votre concept)
- Gratuit si le prix de la commande est égal ou supérieur à 100$ (ou autre montant s'appliquant mieux à votre concept)
- L'adresse d'expédition est automatiquement celle de l'utilisateur et donc la même que l'adresse de facturation
- Afficher la confirmation d'une commande avec le détail de la facture
De plus, quelques critères sont à respecter:
- Votre projet doit être structuré selon une architecture en couche (N-Tier)
- Vous devez faire usage de migrations et seeders pour les données de la base de données. Autant les migrations
Down
queUp
doivent fonctionner. - Vous devez utiliser les fichiers ressources pour la gestion des messages d'erreur et des libellés
BONUS (OPTIONNEL): Un choix parmis une des fonctionnalités supplémentaires suivantes
- Ajouter et supprimer un produit de sa liste de souhaits. Vous devez en plus ajouter un filtre des produits de sa liste de souhaits sur la page d'accueil
- Supporter les produits à venir. Les jeux à venir ne doivent pas avoir d'évaluation possible ainsi que des achats. Vous devez en plus ajouter un filtre des jeux à venir sur la page d'accueil.
- Supporter les rabais sur les produits. Le prix régulier doit être affiché, ainsi que le prix en rabais. De plus, le montant doit être ajusté au moment de l'achat pour prendre en considération le rabais. Vous devez en plus ajouter un filtre des produits en promotion sur la page d'accueil.
- Supporter une variation de style pour les produits (ex.: grandeur, couleur, etc.). Vous devez en plus ajouter un filtre permettant de filtrer par cette variation de style.
Modalités de remise
- Remis via Léa et GitLab
- Déposer le code de votre projet sur un repo GitLab. Associez un tag, comme
iteration_3
, pour identifier le commit correspondant à votre remise. - Important: Inclure un export
pg_dump
(fichier.sql
) de votre BD à la racine du repo. Voir la procédure plus bas - Remettre un fichier
.txt
sur Léa avec l'URL de votre repo GitLab - Vous assurer que je sois
maintainer
oudeveloper
sur votre repo - Remis avant le 28 mars 2025 23:59
Grille d'évaluation
Critère | Points |
---|---|
Architecture en couches du projet (Application, Domain, Data, Shared, MVC) | 5 |
Migrations de base de données | 10 |
Inscription et authentification | 10 |
Liste de produits et affichage de la page de détail d'un produit | 10 |
Filtre de produits par catégorie et filtre supplémentaire | 5 |
Affichage des évaluations sur la page de détail d'un produit | 5 |
Ajout, modification et suppression d'une évaluation de produit | 15 |
Gestion du panier | 10 |
Transaction: achat d'un produit (sans paiement), expédition et confirmation | 15 |
Documentation et qualité générale | 10 |
TOTAL | 95 |
Bonus | Pourcentage |
---|---|
Fonctionnalité supplémentaire parmi les choix offerts | 3% |
Export de votre BD avec pg_dump
Pour exporter le contenu et l'état de votre base de données, utilisez DataGrip
, conjointement avec pg_dump
.
Clic droit sur la BD
->Export with pg_dump
- Cliquez sur le dossier du champ
Path to pg_dump
pour localiser l'exécutablepg_dump
- Localisez le fichier
pg_dump.exe
qui devrait être dans le dossierProgram Files\PostgreSQL\15\bin
si vous avez la version 15 de PostgreSQL et avez conservé les paramètres par défaut du dossier d'installation. - Cliquer sur
OK
- Choisir le nom du fichier sous lequel sauvegarder l'export (dois être un fichier avec l'extension
.sql
) - Cliquer sur
Run
- Mettre le fichier
.sql
généré à la racine de votre repo