M2 MBDS Madagascar 2022-2023 Introduction à Angular

De $1

Introduction

Dans ce cours, vous aurez une introduction à Angular, un framework front-end populaire. Nous utiliserons un back-end NodeJS/Mongoose/MongoDB et vous verrez également comment héberger le tout dans le cloud.

Séance 1 : découverte d'Angular, mise en place d'un projet, premiers composants

Cette partie du cours propose une introduction au framework front-end Angular. Vous réaliserez une application complète incluant un back-end basé sur NodeJS, la base de données NoSQL MongoDB, et un hébergement du tout dans le cloud. Vous mettrez en oeuvre les principaux éléments proposés par Angular, dont la plupart sont également présents dans les frameworks concurrents.

Séance 2 : fin communication entre composants, implémentation de services

Séance 3 : routeur

On utilise toujours le même repository GitHub : https://github.com/micbuffa/Angular2022_2023_MBDS_MadagascarFront 

Séance 4 : ajout d'un back-end, module angular HttpClient

On utilise maintenant deux repositories GitHub : 

Séance 5 : utilisation de data table, d'un composant de pagination, scrolling infini rxjs operateurs

On utilise les deux mêmes repositories GitHub que pour la séance 4.

Pas de support de cours pour Scrolling Infini et Data table. On a fait du live coding. Regarder le code source du front-end (composant app.assignments.html et .ts, aussi le service de gestion des assignments).

Séance 6 : Hébergement sur render.com, début du mini projet 

Mêmes repositories que précédemment.

Sujet du mini projet : améliorer le TP sur les Assignments

Contraintes :

  • A faire en binôme.
     
  • Au moins 1000 assignments dans la base de données (utilisez un générateur de données), déjà fait dans les TPs qu'on a eu ensemble.
     
  • A rendre sur github et hébergé sur render.com. Penser à faire un README qui détaille vos contributions et qui m'explique en détail ce que je dois faire pour le faire tourner sur ma machine.
     
  • facultatif : Vidéo pas trop longue illustrant une démo et un point remarquable de votre projet (ce que vous avez fait mais que les autres n'ont pas fait, un point difficile dont vous êtes fiers, etc.)
     
  • Date de rendu : le 20 Juin 2023, non négociable. Je mets zéro après cette date.  


  • Mr  Razafiarison Heriniaina Bruel Cyril doit me renvoyer une feuille excel ou google spreadsheet avec colonnes pour groupe, github front, github back, lien video, lien du projet testable sur render.com). 

     
  • Pompage = zéro (je l'ai fait pour 4 personnes l'an dernier)  Vous avez le droit de récupérer des bouts d'un autre groupe mais en le disant clairement ("J'ai repris ce bout de code ici sur le net voilà l'URL, et ça du groupe xxx et yyy qui m'ont aidé", chatGPT m'a aidé ici...)

Détail du travail attendu

Vous apporterez les améliorations optionnelles suivantes à ce TP :

  • Ajouter une Toolbar et une SideBar/Sidenav pour la présentation.
     
  • Ajouter une gestion de login/password
    • Cas simple : vous codez en dur dans le service d'authentification une liste de login/passwords valides.
       
    • Cas mieux (mais pas mal de travail sur back-end): en créant une collection Utilisateurs dans MongoDB, et en validant que le user/password est correct.
       
    • Encore mieux : authentification à l'aide de JSON Web Tokens (JWT), par exemple en suivant par exemple ce tutoriel
       
    • Comme dans le TP on gérera le cas particulier admin (qui lui seul peut faire EDIT et DELETE des assignments).
       
  • Ajouter de nouvelles propriétés au modèle des Assignments:
    • Auteur (nom ou photo de l'élève)
    • Matière (Base de données, Technologies Web, Grails, etc.)
      • Une image sera associée à chaque matière et une photo du prof
    • Note sur 20, on ne peut marquer "rendu" un Assignment qui n'a pas été noté.
    • Remarques
       
  • Améliorer l'affichage des Assignments
    • Puisqu'on a ajouté de nouvelles propriétés, il faudra mettre à jour les différents endroits où les Assignments sont affichés/édités/saisis, en particulier :
      • Par exemple, afficher dans la liste des Assignments chaque Assignment sous forme d'une Material Card, avec le titre, la date, l'élève, une petite image illustrant la matière, la photo du prof en petit en haut à droite.
    • La vue détails montrera en plus les remarques, la note s'il a été rendu, etc.
    • Les formulaires d'ajout et de détails proposeront un choix fixe de matières (et associeront automatiquement le prof et l'image illustrant la matière)
       
  • OPTIONNEL : Afficher les Assignments dans deux onglets séparés selon qu'ils ont été rendus ou pas encore rendus
    • Lorsqu'on met une note à un Assignment et il devient rendu et apparaitra dans l'onglet "Rendu"
    • Optionnel : drag'n'drop pour passer d'un état à l'autre. On attrape la card d'un assignment non rendu, on la droppe dans la liste des rendus et ça demande de rentrer une note, de mettre les remarques, et l'assignment devient rendu.
       
  • Optionnel (mais simple à faire): utiliser un Formulaire de type Stepper (formulaire en plusieurs étapes) pour l'ajout d'Assignments (éventuellement pour la modification)
     
  • Rendre le tout plus joli, essayez de ne faire tous la même chose.
     
  • Hébergement sur render.com OBLIGATOIRE

  • Le sujet est ouvert, vous pouvez ajouter ce qui vous semble amusant/pertinent:
    • (difficulté moyenne) drag and drop entre la liste des Assignments non rendus et rendus, qui déclenchera la notation,
    • (facile) Ajout de messages de notification (SnackBar Material)
    • (bcp de travail) Collection d'élèves et de profs pour faciliter l'association devoir/élève et matières/profs
    • Etc.
    •