Ceci est le projet d'évaluation du cours d'accessibilité du web pour les MTI 2023. Ce projet se fait en groupes de 3 à 4 personnes. Le but sera d'implémenter les deux pages présentées dans les maquettes dans le framework web de votre choix.
- Clicker sur le logo en haut à gauche revient sur la page d'accueil
- Entrer du texte dans le champ "Navigate the nile..." et clicker sur la loupe redirige vers la page de recherche ( cf. seconde maquette)
- Clicker sur "Profile" ou l'icône associée ouvre un sous-menu
- Clicker sur "Cart" ou l'icône associée ouvre un sous-menu
- Les pages "Deals", "Gift Cards", "Categories" et "Sell" ne sont pas à implémenter
- Les cards de produit sont entièrement clickable et ouvre le détail du produit (page qui n'est pas à implémenter)
- Clicker sur le bouton en jaune ajoute le produit au panier
- Les cards de catégories sont entièrement clickable et redirigent vers la page de recherche avec le filtre sur la catégorie déjà set.
- Aucune des pages dans les sections "Get to Know Us", "Make Money with Us" et "Let Us Help You" ne sont à implémenter
- Clicker n'import où sur une card renvoi vers la page du produit
- Mais clicker sur le nom du vendeur renvoi vers la page du vendeur
- Les pages de détail de produit et de vendeur ne sont pas à implémenter
- Clicker sur "Filter" filtre la liste des produits.
Vous trouverez dans ce dépôt plusieurs dossiers :
.
├ assets/
│ ├ *.svg # Les assets statiques
│ └ data.json # Les données utilisée pour générer les maquettes
│
├ screenshots/
│ └ *.png # Les screenshots utilisées dans ce document
│
├ src/
│ ├ cart.ts # Export des fonctions utilisée pour gérer le panier (cf. [Gestion du panier](#gestion-du-panier))
│ └ style.css # Les couleurs et la police utilisés
│
└ README.md
Notez que les images des produits et des catégories se trouvent sous la forme d'URLs dans les données
(fichier ./assets/data.json
).
Le fichier ./src/cart.ts
exporte 4 fonctions :
// Récupérer le contenu du panier au format `["Laptop", "Tablet", ...]`
function retrieveCart();
// Ajouter un item au panier `addToCart("Laptop")`
function addToCart(itemName);
// Supprimer un item du panier `["Laptop"] ==> removeFromCart("Laptop") ==> []`
function removeFromCart(itemName);
// Vider entièrement le panier `clearCart()`
function clearCart();
Vous êtes libre de modifier ces fonctions pour vos besoins et façons de faire.
Vous trouverez les différentes couleurs ainsi que la police utilisée dans le fichier ./src/style.css
.
Les couleurs sont définies en Custom Properties.
e.g. :
.mon-truc-avec-couleur-primaire {
background-color: var(--color-primary);
color: var(--color-primary-text);
border: 1px solid var(--color-accent);
}
La police est set par défaut sur tout le document et devrait être appliquée dès que vous importerez le fichier style.css
.
Dans le framework web de votre choix (React, VueJS, Angular, Django, ...), implémenter les pages présentées dans les maquettes.
Tous les bonus sont bienvenus (tant qu'ils ont un lien avec l'accessibilité), qu'ils soient techniques ou fonctionnels ! Par exemple, vous pourriez :
- Implémenter des liens d'évitement (Skip links en anglais)
- Implémenter des pages optionnelles (détail d'un produit, détail du panier, ...)
- Ajouter des fonctionnalités sur les pages existantes
- Implémenter des tests automatiques d'accessibilité
- ...
Vous êtes complètement libres du détail d'implémentation, vous pouvez modifier les fichiers donnés, utiliser les bibliothèques de votre choix, ... .
Vous pouvez utiliser des <div>
et <span>
mais attention à la sémantique !
Par groupe :
- Fork le repo sur GitLab
- Préfixer le slug du repo par
mti-2023-a11y
- Préfixer le slug du repo par
- Inviter chacun des membres du groupe
- Inviter @gauthier.fiorentino avec le role "Maintainer" (Project Information > Members)
- Ajouter à ce README.md la liste des bonus réalisés
Le but de cet exercice n'est pas de faire du "pixel perfect", il n'est pas nécessaire de reproduire à l'identique la maquette (les espacements, ...) mais tout changement majeur doit être justifié d'un point de vue accessibilité (changer une couleur, la mise en page, ...).
Deadline : Vendredi 6 janvier 18h30 (heure de début des soutenances)