Checklist pour le projet
1 : Installer et configurer son environnement de travail
Est-ce que je peux montrer un environnement de travail complet et adaptable ?
Pour le PHP
⬜ WAMP, XAMP, MAMP qui fonctionne
OU
⬜ Environnement avec une stack docker qui fonctionne
OU
⬜ J'ai installé une stack LAMP (Linux, Apache, MySQL, PHP) directement sur mon poste
Pour React
⬜ J'ai bien Node et nom d'installés sur mon post
Mon IDE
⬜ Je peux installer et configurer un IDE (faites une liste des extensions que vous utilisez)
Pour le versionning
⬜ Git est installé et fonctionne sur mon poste
⬜ Git fonctionne depuis mon IDE
Pour le déploiement
⬜ FileZilla est installé sur mon poste
⬜ Je sais comment envoyer des fichiers sur un serveur distant
Évolutivité
⬜ Je sais comment faire pour utiliser une version différente de PHP sur mon poste
⬜ Je sais comment faire pour utiliser une version différente de MySQL sur mon poste
Veille technologique
⬜ Je sais où trouver les infos sur les nouveautés de PHP
⬜ Je sais où trouver les infos sur les nouveautés de MySQL
⬜ Je sais où trouver les infos sur les nouveautés HTML / CSS
⬜ Je sais où trouver les infos sur les nouveautés de JavaScript
⬜ Je sais où trouver les infos sur les nouveautés de React
⬜ Je sais où trouver les infos sur les nouveautés de mon IDE
2 : Maquetter des interfaces utilisateur web ou web mobile
Design
⬜ Mes maquettes respectent la charte graphique
⬜ Mes maquettes répondent aux exigences du Cahier des Charges
⬜ Je peux montrer l'enchainement entre mes pages
Accessibilité
⬜ Mes maquettes tiennent compte des règles d'accessibilité :
⬜ Contrastes
⬜ Tailles des polices
3 : Réaliser des interface utilisateur statiques web ou web mobile
Général
⬜ Mes intégrations respectent mes maquettes
⬜ Mon site peut être indexé par les moteurs de recherche
⬜ Mes balises SEO sont bien remplies sur les pages publiques
⬜ Mes intégrations passent la validation W3C
⬜ Mes intégrations utilisent au maximum les balises sémantiques appropriées
Accessibilité
⬜ Toutes mes balises `<img>` ont des `alt` réellement descriptifs
⬜ Tous mes `<input>` ont des `<label>`
⬜ Toutes mes `<sections>`, `<div>`, `<article>` et `<nav>` ont des titres (je peux les rendre lisibles uniquement par les screen readers)
⬜ Je respecte les règlementations en matière de contrastes
⬜ Mes polices sont de tailles suffisantes pour être lisibles
Sécurité
⬜ Mes formulaires utilisent le type d'`<input>` approprié pour la saisie des informations (email, password, ...)
⬜ Mes formulaires effectuent une première validation des saisies lorsque cela est possible (limite de caractères, patterns, required=true, ...)
Responsive
⬜ Mes intégrations s'adaptent à la taille de l'écran
⬜ Desktop
⬜ Tablette
⬜ Mobile
⬜ Mes intégrations s'adaptent à la disposition de l'écran
⬜ Portrait
⬜ Paysage
4 : Développer la partie dynamique des interface utilisateur web ou web mobile
Utilisation d'asynchrone
⬜ J'utilise au moins une fois `fetch` pour mettre à jour une information sans recharger ma page.
⬜ Je sais convertir du JSON pour l'utiliser dans mon code JavaScript
Utilisation d'API externes
⬜ Je sais mettre en place et appeler une API externe depuis mon JavaScript (exemple le plus classique : une carte pour localiser une entreprise)
Écoute des évenements
⬜ J'ai mis en place une écoute et un traitement des évenements du DOM (exemple le plus classique : la soumission d'un formulaire)
UX
⬜ J'ai mis en place une expérience utilisateur adaptée (par exemple sur le traitement de mes formulaires)
Tests
⬜ Je peux citer le nom d'une librairie permettant de faire des tests unitaires en JavaScript (Jest)
5 : Mettre en place une base de données relationnelle
Implémentation
⬜ L'implémentation de ma base de données est conforme à mon modèle de données
⬜ Si mon implémentation est différente, je peux le justifier et j'ai mon nouveau modèle de données disponible
Conventions
⬜ Mes noms de tables et de colonnes sont en anglais
⬜ Mes noms de tables et de colonnes sont en snake case (tout en minucule et des _ à la place des espaces)
⬜ Mes colonnes utilisent les types appropriés (int, varchar, datetime, ...)
Sécurité
⬜ Les mots de passe ne sont pas stockés en clair dans ma base de données
Relations
⬜ J'ai moins une relation simple dans ma base de données avec sa foreign key
⬜ J'ai au mons une relation complexe avec table de liaison dans ma base de données
Sauvegarde et restauration
⬜ J'ai un jeu de données de test complet qui me permet de réinitialiser ma base
⬜ Je sais comment sauvegarder et restaurer ma base de données
Requêtes
⬜ J'ai au moins un exemple de SELECT *
⬜ J'ai au moins un exemple de SELECT WHERE
⬜ J'ai au moins un exemple de JOIN
⬜ J'ai au moins un exemple de INSERT INTO
⬜ J'ai au moins un exemple de UPDATE
⬜ J'ai au moins un exemple de DELETE
6 : Développer des composants d’accès aux données SQL et NoSQL
NoSQL
⬜ J'ai bien à disposition les requêtes de mon évaluation de MongoDB
SQL
Models
⬜ Chaque table de ma base de données qui n'est pas une table de liaison a un Model Correspondant
⬜ Mes models reprennent bien les colonnes de mes tables ainsi que leur type et si elles peuvent être nulles ou non
⬜ Les relations entre mes tables sont représentées par une composition dans ma POO
⬜ Les relations simple : en attribut, la classe correspondante
⬜ Les relations complexes : en attribut, un array de la classe correspondante
Gestion d'erreur
⬜ Mes managers gèrent le cas où ma base de données ne retourne rien et n'affiche pas d'erreur
⬜ Mon AbstractManager gère le cas où mes informations de connexion ne fonctionnent pas et n'affiche pas d'erreur
⬜ Les informations de connexion à ma base de données ne sont pas versionnées (j'utilise un .env non versionné)
Managers
⬜ Toutes les requêtes de ma base de données sont dans mes managers
⬜ Mes managers se chargent d'hydrater mes modèles
7 : Développer des composants métier coté serveur
Implémentation
⬜ Les comportements sont conformes au cahier des charges
⬜ J'ai réalisé des tests unitaires pour au moins une de mes classes
Sécurité
⬜ J'ai sécurisé les accès aux pages privées
⬜ Je me protège des failles XSS
⬜ Je me protège des failles CSRF
⬜ Je me protège des injections SQL
⬜ J'exige une authentification forte
Qualité du code
⬜ Je respecte les bonnes pratique de POO
⬜ Classes avec attributs private et methodes public
⬜ Classes abstraites et héritage
⬜ La seule chose qui n'est pas une classe c'est mon index.php, mes fichiers de configuration et mes templates
⬜ Mon code source est commenté, en anglais
⬜ Toutes mes méthodes sont type hintées
8 : Documenter le déploiement d’une application dynamique web ou web mobile
⬜ Dans le README de mon repository j'explique comment installer mon projet
⬜ Filezilla est installé sur mon poste et je sais l'utiliser
03 September 2025