Grégory Bourguin
SysReIC - LISIC - ULCO
Projet Web : Recettes de Cuisine

Sujet

L'idée générale est de créer/publier un livret "personnel" de recettes de cuisines.

Les recettes auront un nom, une liste d'ingrédients, une photo et une description textuelle. Elles pourront aussi éventuellement être taguées pour faciliter les recherches. Les tags pourront par exemple être dessert, au four, hivers, etc.

Chaque ingrédient aura un nom et une image et pourra participer à plusieurs recettes.

L'application devra permettre de lister les recettes, et de faire des recherches à partir du nom, des ingrédients ou encore des tags. Le but sera par exemple de rechercher toutes les recettes qui peuvent être réalisées avec le contenu du réfrigirateur.

Un mode administrateur permettra d'éditer l'ensemble de ces entités, c.a.d. la base de données qui sera associée à l'application.

Instructions

Le but de ce projet est de réaliser un site Web complet en mettant en oeuvre la plupart des connaissances que vous avez acquises dans les modules de Javascript et PHP.

VOUS DEVREZ METTRE EN OEUVRE EXCLUSIVEMENT LES BONNES PRATIQUES VUES EN COURS.

À moins d'un accord explicite de ma part, les techniques utilisées devront obligatoirement être tirées des exemples du cours et des corrections que j'ai fournis tout au long de l'année.

Sauf dérogation (au cas par cas), il vous est strictement interdit de copier/coller du code récupéré sur un/des site(s) tiers (github, tutoriels, etc.).

Organisation

Groupe

Ce projet sera réalisé en groupe de 3 personnes :

  • 1 Spécialiste front-end
    HTML, CSS, JavaScript : interactions clientes.
  • 1 Spécialiste back-end
    PHP Objet : structure du serveur, génération de pages.
  • 1 Spécialiste en Bases de Données
    PHP-PDO-MySQL : design de la BD, interface PHP-MySql, requêtes.

Il sera nécessaire de vous organiser autour de sous-objectifs à atteindre et en définissant des interfaces claires entre chaque partie.

Tous les spécialistes doivent pouvoir avancer en // sur le développement, et il ne doit que rarement y avoir 3 personnes sur la même machine.

Si chaque spécialiste focalisera sur "sa" partie, tous les membres du groupe doivent être capables d'expliquer l'ensemble du projet.

Evaluation en continu

L'évaluation du projet sera faire en continu pendant les séances.

Toute absence non justifiée pendant les séances de Projet sera sanctionnée par un 0.
Toute absence prolongée entraînera une exclusion du groupe.

La grille d'évaluation sera celle des Compétences suivantes :

Allure Générale

Le site doit présenter :

  • Une bannière avec le titre du site + menu de navigation (qui doit aussi permettre à l'administrateur de se connecter)
  • Une zone centrale qui affiche le contenu demandé par l'utilisateur.
  • Un footer indiquant la source des éléments que vous allez utiliser.

Le design est à votre convenance : faites quelque chose dont vous serez fiers.

Entités Manipulées

Recette

Une recette est définie par au moins :

  • Un titre.
  • Une liste d'ingrédients.
  • Une description textuelle.
  • Une photo.
  • Des tags éventuels (ex. dessert, légère, ...).

Ingrédient

Un ingrédient est défini par au moins :

  • Un nom.
  • Une image qui représente l'ingrédient.

Tag

Un tag est défini par au moins :

  • Un nom.

Mode Public

Le mode public est accessible à toute personne (sans authentification).

Affichage

L'utilisateur aura au minimum accès aux fonctionnalités d'affichage suivantes :

  • Affichage de l'ensemble des recettes.
  • Recherche de recette par :
    • Mot(s) du titre.
    • Ingrédient(s).
    • Tag(s).
    • ... une combinaison de ces éléments.

Mode Administrateur

Pour simplifier, on considérera que l'entrée dans le mode administrateur est réalisé grâce à une simple paire login/mot de passe (unique) qui pourra être écrit en dur dans votre code PHP : toute personne ayant donné ce login/mot de passe sera considérée administrateur pendant sa session.

Création de Recette

L'interface d'administration doit permettre d'ajouter de nouvelles recettes dans la base de données.

La création d'une recette s'appuie sur les ingrédients existants dans la base de données. Néanmoins, si l'ingrédient requis pour décrire une recette n'est pas dans la base, cet ingrédient doit pouvoir être créé.

Une recette doit pouvoir être taggée. Comme pour les ingrédients, l'interface doit aider au tagging en proposant les tags existants (sur les autres recettes), mais de nouveaux tags doivent pouvoir être créés.

Edition

Le mode administrateur doit permettre d'éditer :

  • Les recettes (nom, liste d'ingrédients, photo, tags, ...)
  • Les ingrédients (nom, image, ...)
  • Les tags (nom, ...)

Destruction

Le mode administrateur doit permettre de supprimer de la base :

  • Des recettes.
  • Des tags : dans ce cas, le tags n'apparaîtra plus sur aucune recette.

À propos des Validations

Les formulaires doivent être sujet à une double validation.
  • Une validation au niveau du client faite en Javascript avant la soumission du formulaire (pour ce qui peut l'être).
  • Une validation au niveau du serveur en PHP après soumission du formulaire
    (NB : l'utilisateur pourrait tenter de contourner la vérification Javascript).

Dans les 2 cas, les problèmes doivent être affichés dans le formulaire en demandant à l'utilisateur de bien vouloir vérifier les champs incriminés.