M1 Miage 2011 - 2012 Ecrire un facebook-like

De $1

 

Introduction

Vous allez réaliser une ébauche d'un site "à la Facebook", avec des relations à déterminer entre les utilisateur, les posts (différents types de posts), les commentaires, + gestion de connexion, beaucoup de données (plusieurs pages d'utilisateurs, de posts, des commentaires, etc.)  et aussi que ce soit joli !

Réaliser une ébauche de Facebook

Il s'agit d'un Facebook très simplifié, avec au minimum des utilisateurs, des posts, et des commentaires.

  • Vous devrez gérer des sessions utilisateurs, avec connexion par login/password. Une fois loggé, les champs pour entrer le login et le password ne sont plus affichés, puisqu'une session est ouverte.
  • Vous appliquerez un "layout" aux pages, avec un menu sur la gauche et un bandeau au-dessus. Vous utiliserez du templating comme pour le TP que vous avez rendu.
  • Votre base de données devra être suffisement remplie pour illustrer de quoi votre application est capable,  vous la remplissez au démarrage de l'application à l'aide d'une classe annotée @WebListener qui implémente l'interface ServletContextListener, comme nous l'avons vu dans le cours sur les servlets.

 Voici une liste de fonctionnalités que votre application devra avoir, dans l'ordre de priorité décroissante. 

  • En tant que personne non connectée, je peux
    • m'authentifier 
    • accéder à la liste des inscrits
    • voir le profil d'un utilisateur (ses informations publiques)
    • m'inscrire
  • En tant qu'utilisateur, je peux:
    • modifier les informations de mon profil. Certaines informations sont publiques et certaines sont réservées à mes amis, vous pourrez améliorer ça comme vous voudrez, mais  dans un premier temps:
      • informations publiques: nom, prénom, ville, posts publiques
      • informations visibles par les amis: date de naissance, téléphone, liste d'amis, posts privés.
    • accéder à la liste des inscrits
    • voir le profil d'un utilisateur
      • si il n'est pas mon ami 
        • je peux voir ses informations publiques 
      • si il est mon ami,
        • toutes les informations de son profil
        • la liste de ses amis
      • je peux l'ajouter comme ami  (l'amitié sera acceptée automatiquement dans un premier temps)
    • accéder à la liste de mes amis, supprimer une amitié ou voir le profil d'un ami
  • En tant qu'utilisateur connecté, je peux:
    • écrire un post public,
    • écrire un post que seuls mes amis pourront voir,
    • écrire un post sur le profil ("le mur") d'un ami
  • En tant que personne non connectée, je peux
    • voir la liste des posts publiques
    • voir le détail d'un post avec tous ses commentaires
  • En tant qu'utilisateur, je peux
    • voir la liste des posts publiques,
    • voir la liste de mes posts et ceux de mes amis.
    • voir le détail d'un post avec tous ses commentaires, et ajouter un commentaire

Comme vous connaissez tous Facebook, j'imagine que vous aurez plein d'idées pour étendre et améliorer ce prototype... vous devrez indiquer quelles fonctionnalité vous avez ajouté/améliorer, ce qu'on peut faire, ce qui marche, ce qui ne marche pas, et utiliser des petit scénario illustratifs. Avant d'ajouter des fonctionnalités élaborées comme le tagging (ajouter un mot-clé aux posts et recherche de posts par mot-clé), les messages privés à une personne ou à un groupe, la messagerie instantanée avec une personne ou un groupe, le partage des photos, l'internationnalisation du site, les groupes, voir les villes des personnes sur une carte google maps, etc... Je vous propose d'améliorer les fonctionnalités déjà existantes dans le prototype (ex: l'amitié doit être acceptée par la personne, bonne ergonomie de l'application, profil plus complet, utiliser un editeur WYSIWYG comme par exemple TinyMCE ou autre pour ajouter des liens et des photos dans les posts, etc...)