Devoir/projet/TP fil rouge : mini-site

2022-2023

Licence Informatique 3ème année

Alexandre Niveau — Jean-Marc Lecarpentier

Enseignement des technologies du Web

 

Devoir/projet/TP fil rouge : mini-site

2022-2023

Objectifs

L'objectif du projet est de réaliser un site qui met en oeuvre les principes de développement web vus tout au long du module Technologies Web.

Sujet

Vous devez réaliser individuellement un mini-site qui présente des choses listables ; dans la suite de l'énoncé, nous parlerons d'« objets », mais ce ne sont pas nécessairement des objets au sens propre. Cela pourra être par exemple des livres, loutres, chansons, pays, voitures, mots, pots de chambre, recettes, disques, personnes, événements historiques, arbres, boîtes de camembert…

Préférez un sujet original (en particulier, autre chose que votre page perso, et autre chose que les Pokémon) ; mais vous ne serez pas évalué·e sur le choix du sujet. Cependant, ne reprenez pas tels quels les objets « poème », « couleur » et « animal » manipulés en cours et en TP.

Attention, le contenu et le design graphique du site en lui-même ne seront pas pris en compte. Cependant, même avec un design très basique on veillera à avoir une présentation claire des pages, et à respecter les principes d'ergonomie et d'accessibilité vus en cours.

Contraintes techniques

  • Le site devra être hébergé sur le serveur web du département.
  • Le code source de votre site devra être déposé sur un dépôt git de l'université (voir plus loin).
  • Vous devrez stocker les objets dans une base de données MySQL sur le serveur du département.
  • Vous devrez utiliser l'architecture MVCR vue en cours et détaillée lors des TP, avec en particulier une bonne séparation des classes métier (le modèle), de l'affichage (vues), de la gestion des requêtes HTTP (routeur), de la gestion des actions (contrôleurs), de la validation des données (builders), et des détails de stockage en base de données.
  • Les pages générées devront être valides HTML5 selon le validateur du W3C («Validate by URI» devrait fonctionner).
  • Tout le code doit être écrit par vous : vous ne pouvez pas utiliser de frameworks et le plagiat sera sévèrement puni.

Consignes

Votre site devra remplir les consignes suivantes.

  • Il devra comporter une page listant tous les objets.
  • Chaque objet de la liste devra avoir une page dédiée, typiquement avec plus de détails.
  • Il doit être possible :
    • d'ajouter un nouvel objet à la liste, qui se comporte de la même façon que les autres ;
    • de supprimer n'importe quel objet de la liste ;
    • de modifier les caractéristiques de n'importe quel objet de la liste.
  • Le site devra contenir une page de type « à propos », avec
    • votre numéro étudiant
    • une liste des points réalisés (en particulier les compléments, voir plus loin)
    • d'éventuelles explications sur vos choix en matière de design, modélisation, code, si vous avez quelque chose d'intéressant à dire
    • tout ce qu'il vous semble utile de nous signaler.

Barème indicatif

Le nombre de points pourra être modifié si nécessaire. Voir plus haut pour les détails sur chaque élément.

Réalisation de base (17.5 points)

  • Liste d'objets, affichables indépendamment (TP07) : 3.5 points
  • Création basique d'objets (TP08) : 1.5 points
  • Modification basique d'objets (TP08) : 1.5 points
  • Builders pour la manipulation d'objets (TP08) : 3.5 points
  • Suppression d'objets (TP08) : 2 points
  • Redirection en GET après création/modif/suppression réussie (TP09) : 1 point
  • Gestion du feedback (TP09) : 1 point
  • Redirection en GET après POST même lors des erreurs (TP09) : 1 point
  • Utilisation d'une base de données MySQL (TP10) : 2.5 points

Compléments (2.5 points)

En outre vous devez réaliser un complément au choix dans la liste suivante :

  • routage via le chemin virtuel (PATH_INFO) dans les URL plutôt qu'avec des paramètres d'URL
  • possibilité de filtrer la liste des objets via un champ de recherche
  • possibilité de modifier l'ordre d'affichage de la liste (tri par date, ou suivant les attributs des objets…)
  • pagination de la liste (ne montrer que N objets par page)
  • possibilité d'illustrer un objet en uploadant une image (l'upload sera vu lors du dernier cours ; attention les images uploadées devront être placées dans un répertoire spécifique, voir plus bas).

Attention, il s'agit d'intégrer ces fonctionnalités proprement dans l'architecture.

Critères d'évaluation

Les points suivants seront particulièrement importants pour l'évaluation de votre projet. Ils pourront occasionner de fortes pénalités, même si votre site fonctionne. La pénalité maximale pour chaque item est indiquée entre parenthèses.

  • Respect des consignes de rendu (-20)
  • Respect des principes de l'architecture MVCR vus en CM/TP (-20)
  • Qualité du code PHP réalisé (lisibilité, propreté, documentation) (-10)
  • Organisation des dossiers et fichiers (-5)
  • Qualité de l'ergonomie et de l'accessibilité du site (-10)
  • Non vulnérabilité aux principales failles de sécurité vues en cours (injections SQL et JavaScript, « fuite » de la base de données) (-10)

N'hésitez pas à vous entraider, mais ne copiez pas le code des autres. Nous serons sévères envers les fraudes.

Rendu du devoir

  • La date limite de rendu du devoir est le 28 novembre 23:59:59.
  • Vous devrez :
    • Déposer régulièrement votre code sur le dépôt Git que nous vous aurons créé sur https://git.unicaen.fr/ (vous recevrez les instructions très bientôt). Attention, il s'agit bien d'utiliser le dépôt normalement, avec des commits contenant du code, pas de déposer une archive en fin de projet comme sur ecampus.
    • Déployer votre site sur votre espace du serveur web de l'université, à l'URL https://dev-LOGIN.users.info.unicaen.fr/dm-tw4b-2022/. Vous devez créer le répertoire s'il n'a pas été créé automatiquement ; vous ne devez pas le supprimer ou le renommer. Après la date limite, il sera rendu inaccessible en écriture jusqu'à ce que la correction soit terminée (excepté le répertoire dm-tw4b-2022/upload, pour que l'upload de fichiers puisse continuer à fonctionner).
  • Un dump de votre base de données (voir la commande mysqldump) sera placé dans le dossier dump de votre Git.

Si vous n'utilisez que votre propre serveur pour développer votre site, prévoyez de la marge pour le déploiement sur le serveur du département. Entre la BD, les différences de versions de PHP et la configuration d'Apache, il peut y avoir énormément de problèmes imprévisibles.

En cas de problème au moment du rendu de votre travail, contactez-nous le plus rapidement possible. Nous ne vous aiderons pas une fois la date limite dépassée.

Remarques sur l'architecture

Un des objectifs du DM est de vous faire appliquer l'architecture présentée en cours et détaillée dans le gros exercice filé vu en TP. Certains des choix faits dans cet exercice sont destinés à en simplifier l'énoncé : ils ne représentent pas une consigne ferme. Par exemple, si vous regardez les sources du site des poèmes ou des couleurs, vous verrez qu'il y a des variations. Vous pouvez vous aussi tout à fait faire des choix différents.

Cependant, les principes de l'architecture MVCR doivent être respectés. Plus vous vous éloignerez de la structure présentée en cours/TP, plus vous vous exposerez à la critique. Réfléchissez bien avant de faire des choix architecturaux trop différents (vous pouvez aussi évidemment en discuter avec nous), et si vous décidez de les faire, justifiez-les sur votre page « à propos ».

Remarque pour les spécialistes du PHP : il n'est pas interdit de réutiliser des bouts de code que vous auriez déjà écrits, mais ne reprenez pas tout le super framework perso sur lequel vous travaillez depuis deux ans. C'est très difficile à évaluer, ça prend beaucoup de temps, ce n'est pas très juste par rapport aux autres (car on n'évalue alors pas un simple DM mais le travail de plusieurs mois/années), et on ne peut pas vérifier votre implication personnelle dans le développement. Ça peut être frustrant pour vous, mais ce type de frustration est courant en informatique — et rien ne vous empêche d'intégrer proprement vos idées dans l'architecture demandée.