Apparence
L'As des dĂ©s! â
Votre passion pour les jeux de société vous pousse à créer une application Vue pour visualiser et gérer votre collection de jeux de société.
L'application Vue devra permettre d'effectuer différentes actions en lien avec la gestion de votre collection.
Vous devrez Ă©galement utiliser l'API suivante pour la gestion des donnĂ©es. Vous devez ĂȘtre connectĂ© au VPN ou ĂȘtre sur le rĂ©seau du cĂ©gep pour utiliser l'API.
- Swagger/documentation de l'API
- http://10.10.0.5:8581/ -> URL de base de l'API
PondĂ©ration â
Le Projet Vue vaut pour 35% de la note finale du cours.
Lors de la quatorziÚme semaine, il y aura la remise d'avancement qui se fera en classe. Je passerais voir chaque personne/équipe afin de voir l'avancement du projet et de vous donner une note sur 5% (voir plan de cour).
Structure du projet â
Vous devrez obligatoirement utiliser le template de projet Vue suivant : Template vue - 2W1
Composition des Ă©quipes â
Le projet peut se faire seul ou en équipe de 2 personnes. Les gens en équipe devront effectuer des fonctionnalités supplémentaires.
L'utilisation de git est fortement recommandĂ©e si vous ĂȘtes en Ă©quipe. Vous devez me confirmer la composition de votre Ă©quipe avant de commencer le projet, et ce le plus tĂŽt possible.
Fonctionnement du projet â
Si vous ĂȘtes seul :
- Vous devez implémenter les fonctionnalités obligatoires de bases.
- Vous devez implémenter 2 fonctionnalités supplémentaires.
Si vous ĂȘtes en Ă©quipe de 2 personnes :
- Vous devez implémenter les fonctionnalités obligatoires de bases et avancées.
- Vous devez implémenter les 3 fonctionnalités supplémentaires.
FonctionnalitĂ©s obligatoires â
Application de base â
- Navbar
- Les diffĂ©rents liens de navigation devront ĂȘtre prĂ©sents.
- Une icĂŽne reprĂ©sentant le logo de l'application devra ĂȘtre prĂ©sente dans la navbar. Cette image ne doit pas excĂ©der la taille de la navbar. Ajuster le scss au besoin.
- Footer
- Il devra contenir le nom de l'application, votre nom ou celui de votre équipe et l'année en cours (de maniÚre dynamique).
- Page d'Accueil
- Bouton consultation de la collection
- Page de consultation de la collection
- Affichage de tous les jeux de société dans la collection avec tous leurs détails (nom, description, nombre de joueurs, etc.). Seuls les champs
id,createdAtetupdatedAtne sont pas obligatoires Ă afficher. - Pour chaque jeu, un bouton "Supprimer" pour supprimer le jeu de la collection. Un modal devra ĂȘtre affichĂ© avec les tous les dĂ©tails du jeu et un bouton pour confirmer la suppression du jeu. Le modal devra se fermer automatiquement aprĂšs la suppression du jeu et un toast devra ĂȘtre affichĂ© pour confirmer que le jeu a Ă©tĂ© supprimĂ© de la collection. Le nom du jeu et la date/heure de suppression doivent se trouver dans le toast.
- Pour chaque jeu, un bouton "Modifier" pour modifier les détails du jeu. Ce bouton devra nous amener vers la page de modification de jeu.
- Pour chaque jeu, un bouton 'Extensions' pour voir les extensions du jeu. Ce bouton devra nous amener vers la page d'affichage des extensions du jeu.
- Affichage de tous les jeux de société dans la collection avec tous leurs détails (nom, description, nombre de joueurs, etc.). Seuls les champs
- Page de modification de jeu
- Un formulaire prérempli avec les détails du jeu sélectionné, permettant à l'utilisateur de modifier les informations du jeu (toutes les informations, sauf les champs
id,createdAt). - Ă l'aide de
vee-validate, des validations devront ĂȘtre effectuĂ©es afin de respecter la documentation de l'api quant aux valeurs des champs. - Un toast devra ĂȘtre affichĂ© pour confirmer que le jeu a Ă©tĂ© modifiĂ© avec succĂšs. Le nom et la date/heure doivent se trouver dans le toast.
- Ajouter un bouton "Retour Ă la collection" pour retourner Ă la page de consultation de la collection.
- Un formulaire prérempli avec les détails du jeu sélectionné, permettant à l'utilisateur de modifier les informations du jeu (toutes les informations, sauf les champs
- Page d'ajout de jeu
- Un formulaire pour ajouter un nouveau jeu à la collection. Le formulaire devra avoir 2 sections distinctes : Les champs obligatoires et les champs optionnels. Se référer a l'API pour les champs obligatoires et optionnels.
- Ă l'aide de
vee-validate, des validations devront ĂȘtre effectuĂ©es afin de respecter la documentation de l'api quant aux valeurs des champs. - Un toast devra ĂȘtre affichĂ© pour confirmer que le jeu a Ă©tĂ© créé avec succĂšs. Le nom et la date/heure doivent se trouver dans le toast.
- Ajouter un bouton "Retour Ă la collection" pour retourner Ă la page de consultation de la collection.
- Page d'affichage des extensions du jeu
- Affichage de toutes les extensions du jeu sélectionné avec tous leurs détails (nom, description, nombre de joueurs, etc.). Seuls les champs
id,createdAtetupdatedAtne sont pas obligatoires Ă afficher. - Ajouter un bouton "Retour Ă la collection" pour retourner Ă la page de consultation de la collection.
- Affichage de toutes les extensions du jeu sélectionné avec tous leurs détails (nom, description, nombre de joueurs, etc.). Seuls les champs
Application avancĂ©e (Ă©quipe) â
Si vous ĂȘtes en Ă©quipe, vous devez en plus des fonctionnalitĂ©s de base, vous devez implĂ©menter la fonctionnalitĂ© de favoris (whislist).
- Page d'Accueil
- Ajouter un bouton pour accéder à la page de favoris.
- Page de favoris
- Affichage des jeux de société marqués comme favoris (whislist). Il devra y avoir pour chaque jeu dans la liste des favoris, un formulaire permettant de modifier la note et la priorité du jeu. Je vous conseille d'utiliser une
table. - Bouton pour supprimer un jeu de la liste des favoris. Un modal devra ĂȘtre affichĂ© avec les tous les dĂ©tails du jeu et un bouton pour confirmer la suppression du jeu de la liste des favoris. Le modal devra se fermer automatiquement aprĂšs la suppression du jeu et un toast devra ĂȘtre affichĂ© pour confirmer que le jeu a Ă©tĂ© supprimĂ© de la liste des favoris. Le nom du jeu et la date/heure de suppression doivent se trouver dans le toast.
- Affichage des jeux de société marqués comme favoris (whislist). Il devra y avoir pour chaque jeu dans la liste des favoris, un formulaire permettant de modifier la note et la priorité du jeu. Je vous conseille d'utiliser une
- Page de consultation de la collection
- Ajouter un bouton "Ajouter aux favoris" pour chaque jeu, permettant à l'utilisateur de marquer un jeu comme favori. Un modal s'ouvrira avec 2 champs pour pouvoir spécifier la note et la priorité. Assurez-vous de faire les validations avec
vee-valdiatepour que les champs soient dans les valeurs acceptables selon la documentation de l'API. - Le modal devra se fermer automatiquement aprĂšs l'ajout du jeu aux favoris et un toast devra ĂȘtre affichĂ© pour confirmer que le jeu a Ă©tĂ© ajoutĂ© Ă la liste des favoris. Le nom du jeu et la date/heure d'ajout doivent se trouver dans le toast.
- Ajouter un bouton "Ajouter aux favoris" pour chaque jeu, permettant à l'utilisateur de marquer un jeu comme favori. Un modal s'ouvrira avec 2 champs pour pouvoir spécifier la note et la priorité. Assurez-vous de faire les validations avec
FonctionnalitĂ©s supplĂ©mentaires au choix â
Choix 1 : Ajout de catĂ©gories de jeu â
Ajouter la fonctionnalité de gestion des catégories de jeu. Les éléments à implémenter sont les suivants :
- Page d'accueil
- Ajouter un bouton pour accéder à la page de gestion des catégories de jeu.
- Page de gestion des catégories de jeu
- Affichage de toutes les catégories de jeu existantes.
- Ajouter un bouton pour créer une nouvelle catégorie de jeu. Ce bouton devra nous amener vers la page de création de catégories de jeu.
- Page de création de catégories de jeu
- Un formulaire pour créer une nouvelle catégorie de jeu (ex.: Deck-building, enchÚre, etc.) avec un champ pour le nom de la catégorie.
- Ă l'aide de
vee-validate, des validations devront ĂȘtre effectuĂ©es afin de respecter la documentation de l'api quant a la valeur du champ. - Un toast devra ĂȘtre affichĂ© pour confirmer que la catĂ©gorie a Ă©tĂ© créée avec succĂšs. Le nom et la date/heure doivent se trouver dans le toast.
- Vous devrez rediriger l'utilisateur vers la page de gestion des catégories de jeu aprÚs la création de la catégorie.
Choix 2 : Tri par note BGG, durĂ©e maximum du jeu et nombre minimum de joueurs â
Ajouter une fonctionnalité de tri des jeux de société. Les éléments sur lesquels trier seront les suivantes :
- Note BGG
- Durée maximum du jeu
- Nombre minimum de joueurs
- Les tris devront pouvoir se faire en ordre croissant et décroissant.
Vous devez ajouter une liste dĂ©roulante pour sĂ©lectionner le critĂšre de tri ainsi qu'un bouton de tri dans la page de consultation. Selon la valeur de la liste dĂ©roulante, la liste de jeu de sociĂ©tĂ© devra ĂȘtre triĂ©e en consĂ©quence.
Choix 3 : Barre de recherche â
Implémenter la fonctionnalité de recherche pour permettre à l'utilisateur de rechercher des jeux de société dans la collection en fonction d'un critÚre de recherche. Vous devrez ajouter à la liste de jeux :
- Un champ de recherche pour permettre Ă l'utilisateur de saisir un critĂšre de recherche.
- Un champ permettant de saisir une valeur de recherche (ex.: "Catan" pour le nom du jeu, "jeu de stratégie" pour la catégorie, etc.)
- Un bouton de recherche pour lancer la recherche.
- Selon le critĂšre de recherche sĂ©lectionnĂ©, la liste de jeux de sociĂ©tĂ© devra ĂȘtre filtrĂ©e pour n'afficher que les jeux correspondant au critĂšre de recherche.
Style â
Le site devra ĂȘtre responsive et ĂȘtre utilisable sur les appareils suivants :
- Ordinateur de bureau
- Tablette
- Téléphone mobile
Vous devrez utiliser une palette de couleurs contenant au moins 3 couleurs différentes pour le style de votre site. Assurez-vous que le choix de vos couleurs soit harmonieux et que le contraste soit suffisant pour assurer une bonne lisibilité du site.
Vous devrez modifier les variables de bootstrap avec le SCSS afin que vos couleurs soient prises en compte.
Ăgalement, je vous demande d'utiliser un minimum de 5 classes scss afin de personnaliser le style de votre site et d'Ă©viter la rĂ©pĂ©tition de code.
Truc đĄ
Au besoin, utiliser l'outil WAVE (Web Accessibility Evaluation Tool) pour vous aider avec le contraste de couleur.
Documentation â
Toutes les fonctions de vos services devront ĂȘtre documentĂ©es comme vu en classe. Il devra ĂȘtre de mĂȘme pour vos diffĂ©rents modĂšles de donnĂ©es (classe dans @typings) et toutes les fonctions créé dans les composants.
ESLint â
Assurez-vous d'effectuer rĂ©guliĂšrement des vĂ©rifications avec ESLint afin de corriger les erreurs de linting. Tout est dĂ©jĂ configurĂ© dans le template, prĂȘt Ă l'emploi.
Appropriation du code â
Je tiens Ă vous rappeler que vous devez faire le projet par vous-mĂȘme. En aucun temps, vous ne devriez jamais copier tel quel le code d'internet ou d'une autre personne.
Pour ceux qui sont en équipe, il est de votre devoir de vous assurer que vous comprenez ce qui a été fait par vous, mais aussi par votre coéquipier.
Remise â
Vous devrez me remettre sur LĂA votre projet sous forme d'un fichier zip contenant tous les fichiers de votre projet.
Si vous dĂ©sirez me remettre le projet via git, vous devrez m'inviter sur votre repos git. Le cas Ă©chĂ©ant, aucune remise ne sera Ă faire sur LĂA, je vais prendre le dernier push avant la date de remise comme Ă©tant la version finale du projet. Assurez-vous de me donner accĂšs Ă votre repo git avant la date de remise.
Date de remise â
La remise d'avancement doit se faire en présence en classe lors de la 14e semaine du cours (8 mai 2026).
La remise finale doit ĂȘtre remise au plus tard avant 23h55 le 20 mai 2026. Tout projet remis aprĂšs cette date sera considĂ©rĂ© comme en retard et une pĂ©nalitĂ© s'appliquera.
CritĂšre de correction - Remise d'avancement (5%) â
La remise d'avancement se fait en classe et sera évaluée de la maniÚre suivante :
- Qualité du travail réalisé à la mi-projet.
CritĂšre de correction Projet final (35%) â
- Qualité générale (20%)
- Respect des consignes.
- Qualité générale du code.
- Une pénalité de 0.25% par faute sera appliquée pour l'interface utilisateur et les commentaires, jusqu'à concurrence de 10% de la note finale du travail.
- Fonctionnalité (40%)
- Respect des éléments demandés.
- Qualité de l'intégration des fonctionnalités.
- Choix de fonctionnalités (20%)
- Respect des éléments demandés.
- Qualité de l'intégration des fonctionnalités.
- Style et aspect responsive (10%)
- Respect des éléments demandés.
- Qualité de l'interface visuelle.
- Documentation (10%)
- Qualité et pertinence de la documentation produite.