Aller au contenu principal

(S9) Itération 3 - Site web transactionnel

Thème: Site Web transactionnel rendu serveur

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

Votre objectif

Développer et finaliser le site Web transactionnel rendu serveur d'achat de produits.

Assurez-vous de bien revisiter les maquettes de Steamy (pour les fonctionnalités), 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 de jeux vidéos Steamy (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, mais ne peuvent les ajouter à leur panier ou 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 (voir plus bas pour les filtres supplémentaires)
  • 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
  • Ajouter un produit au panier (vous n'avez pas à gérer les quantités)
  • Supprimer un produit du panier (vous n'avez pas à gérer les quantités)
  • Acheter un ou des produits via le contenu du panier (sans gestion du paiement).
  • Gestion simple de l'expédition:
    • 9.99$ si le prix de la commande est de moins de 100$
    • Gratuit si le prix de la commande est égal ou supérieur à 100$
    • 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

Un choix parmis une des fonctionnalités supplémentaires suivantes

  1. 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
  2. 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.
  3. 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.
  4. 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.

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
  • Vous devez utiliser les fichiers ressources pour la gestion des messages d'erreur et des libellés
  • Afin de ne pas alourdir le chargement de la page d'un produit, le chargement asynchrone des évaluations doit être mis en place. Idem pour la création d'évaluations.

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 ou developer sur votre repo
  • Remis avant le 28 mars 2025 23:59

Grille d'évaluation

CritèrePoints
Architecture en couches du projet (Application, Domain, Data, Shared, MVC)5%
Migrations de base de données10%
Inscription et authentification10%
Liste de produits sur l'accueil et affichage de la page de détail d'un produit10%
Filtre de produits par catégorie sur l'accueil et filtre supplémentaire5%
Affichage des évaluations sur la page de détail d'un produit5%
Ajout, modification et suppression d'une évaluation de produit15%
Utilisation de htmx pour requêtes asynchrones liées aux évaluations5%
Transaction: panier, achat d'un produit (sans paiement), expédition et confirmation20%
Choix de fonctionnalité supplémentaire5%
Documentation et qualité générale10%

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.

  1. Clic droit sur la BD -> Export with pg_dump Imgur
  2. Cliquez sur le dossier du champ Path to pg_dump pour localiser l'exécutable pg_dump Imgur
  3. Localisez le fichier pg_dump.exe qui devrait être dans le dossier Program 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. Imgur
  4. Cliquer sur OK
  5. Choisir le nom du fichier sous lequel sauvegarder l'export (dois être un fichier avec l'extension .sql) Imgur
  6. Cliquer sur Run
  7. Mettre le fichier .sql généré à la racine de votre repo