+
+Un simple lancement (bis)
+
+
Lancez le serveur web qui est censé servir le site. Celui ci ne
+doit produire aucune erreur.
+
+Si cela n'est pas le cas, la question est comptée fausse et
+vous pouvez arrêter la. La webapp doit fonctionner en l'état
+en démarrant le serveur.
+
+
+
+Création de compte utilisateur
+
+
Le site doit pouvoir proposer un formulaire d'enregistrement de
+nouvel utilisateur. Vous devez pouvoir renseigner:
+
+
+- un nom d'utilisateur
+- un nom et prénom
+- un mot de passe sécurisé (un simple mot de francais ne
+doit pas être accepté)
+- une adresse mail
+
+
+Le formulaire doit posséder des validateurs coté client et
+serveur pour s'assurer que les bonnes données soient bien
+transmises. A la fin de l'inscription, celle ci doit être
+complétée par l'envoi d'un mail demandant la confirmation du
+compte par lien unique.
+
+Vous ne pouvez pas vous connecter avec ce compte tant que le
+lien n'a pas été cliqué.
+
+Si l'un des points ci-dessus n'a pas été respecté, la
+question est comptée fausse et vous passez à la suivante.
+
+
+
+Connexion
+
+
L'utilisateur doit pouvoir se connecter avec ses identifiants,
+et doit pouvoir recevoir un mail de réinitialisation de son mot
+de passe en cas d'oubli. Un utilisateur connecté doit pouvoir
+remplir un profil étendu, et doit être capable de modifier ces
+informations, ainsi que celles fournies lors de son inscription,
+à n'importe quel moment.
+
+Il est toléré qu'un utilisateur puisse accéder à la
+recherche de profils, mais il ne doit pas pouvoir faire plus
+tant que son profil étendu n'est pas rempli.
+
+La déconnexion doit être possible depuis n'importe quelle page
+du site.
+
+Si l'un des points ci-dessus n'a pas été respecté, la
+question est comptée fausse et vous passez à la suivante.
+
+
+
+Profil étendu
+
+
L'utilisateur doit pouvoir compléter les champs suivants :
+
+
+- Son genre.
+- Son orientation sexuelle.
+- Une bio courte.
+- Une liste d'interêts, sous la forme de tags ( #Bio,
+#NoMakeup, #Fixie4Ever... )
+- Des images, maximum cinq, dont une servant de photo de
+profil.\
+
+
+Si la seed est correctement implémentée, vous pouvez faire une
+proposition de tags sous une certaine forme (autocompletion,
+proposition des top trends tags...) Une fois son profil
+renseigné, il peut accéder à tout le site. Ces informations
+peuvent être changées à tout moment, une fois connecté.
+
+Si l'un des points ci-dessus n'a pas été respecté, la
+question est comptée fausse et vous passez à la suivante.
+
+
+
+Consultations
+
+
L'utilisateur doit pouvoir consulter les personnes ayant
+consulté son profil. Il doit donc y avoir un historique des
+visites du profil, ainsi que les personnes qui l'ont "liké".
+
+Si l'un des points ci-dessus n'a pas été respecté, la
+question est comptée fausse et vous passez à la suivante.
+
+
+
+Propositions de profils
+
+
L'utilisateur doit pouvoir trouver, lorsqu'il se connecte, une
+liste de suggestions de profils. Cette sélection ne sera pas
+possible tant que le profil étendu de l'utilisateur n'est pas
+renseigné. Normalement, si ce profil étendu n'est pas encore
+renseigné, vous devriez être invité à le remplir !
+
+Des profils pertinents doivent être proposés à l'utilisateur,
+correspondant à son orientation sexuelle. Si l'utilisateur ne
+renseigne pas sa sexualité, celui-ci sera considéré comme
+bisexuel.
+
+Vérifiez avec l'étudiant que les propositions de profils sont
+pondérées selon trois critères:
+
+
+- même zone géographique que l'utilisateur
+- maximum de tags d'intérêt communs
+- maximum de popularité
+
+
+L'affichage ne doit pas planter ou excéder un chargement de
+plus de 5 secondes. Par chargement, j'entends le temps total
+entre le click d'affichage et le rendu complet avec les profils.
+
+Vous pouvez demandez à l'étudiant d'expliquer sa stratégie
+pour afficher une liste de suggestions pertinentes.
+
+Si l'un des points ci-dessus n'a pas été respecté, la
+question est comptée fausse et vous passez à la suivante.
+
+
+
+Recherche
+
+
L'utilisateur doit être capable d'effectuer une recherche
+avancée en sélectionnant un ou plusieurs critères tels que :
+
+
+- intervalle d'âge
+- intervalle de score de popularité
+- localisation
+- un ou plusieurs tags d'intérêt
+
+
+L'affichage doit être cohérent. Si l'un des points ci-dessus
+n'a pas été respecté, la question est comptée fausse et vous
+passez à la suivante.
+
+
+
+Tris et filtres
+
+
La liste de propositions de profils, ainsi que les résultats de
+recherche, doivent être triables et filtrables par :
+
+
+- âge
+- localisation
+- popularité
+- tags
+
+
+Si l'un des points ci-dessus n'a pas été respecté, la
+question est comptée fausse et vous passez à la suivante.
+
+
+
+Geolocalisation
+
+
L'utilisateur doit être géolocalisé à l'arrondissement
+près. Si l'utilisateur ne veut pas être géolocalisé, des
+stratégies doivent être mises en place pour le faire malgré
+lui. L'utilisateur doit pouvoir modifier sa localisation sur son
+profil.
+
+Si l'un des points ci-dessus n'a pas été respecté, la
+question est comptée fausse et vous passez à la suivante.
+
+
+
+Score de popularité
+
+
Chaque utilisateur doit avoir un score de popularité. Demandez
+à l'étudiant d'expliquer sa stratégie pour calculer ce score,
+elle doit être cohérente et un minima pertinente.
+
+Si l'un des points ci-dessus n'a pas été respecté, la
+question est comptée fausse et vous passez à la suivante.
+
+
+
+Notifications
+
+
Vous devez être notifié, en temps réel (on tolère une marge
+de 10 secondes), des évènements suivants:
+
+
+- un "like" de son profil
+- quelqu'un a visité son profil
+- un utilisateur "liké" a "liké" en retour
+- un utilisateur connecté ne "like" plus l'utilisateur courant
+
+
+A vous de faire les simulations nécessaire (nouveau compte,
+utiliser un compte de la seed de l'évalué ... ) Il doit
+pouvoir voir depuis n'importe quelle page qu'une notification
+n'a pas été lue.
+
+Si l'un des points ci-dessus n'a pas été respecté, la
+question est comptée fausse et vous passez à la suivante.
+
+
+
+Profil des autres utilisateurs
+
+
Le profil public d'un utilisateur doit comporter toutes les
+informations qu'il a fourni, hormis son adresse mail et son mot
+de passe. Il doit également comporter son score de popularité
+et son statut de connexion. Si l'utilisateur apparait
+déconnecté, on doit voir la date de sa dernière visite.
+
+Si l'un des points ci-dessus n'a pas été respecté, la
+question est comptée fausse et vous passez à la suivante.
+
+
+
+Connexion entre utilisateurs
+
+
Un utilisateur peut liker, et unliker, le profil d'un autre
+utilisateur. Lorsque deux utilisateurs se sont mutuellement
+"likés", on dit qu'ils ont matchés: ils peuvent alors engager
+la conversation. Un utilisateur qui ne possède pas de photo ne
+doit pas pouvoir liker le profil d'un autre utilisateur.
+
+Le profil d'un autre utilisateur doit afficher clairement s'il
+est connecté à l'utilisateur courant ou s'il "like"
+l'utilisateur courant.
+
+Si l'un des points ci-dessus n'a pas été respecté, la
+question est comptée fausse et vous passez à la suivante.
+
+
+
+Report et bloquage
+
+
On peut reporter un profil comme "faux compte", et bloquer un
+utilisateur donné. Un utilisateur bloqué ne doit plus
+apparaître dans les résultats de recherche (ni les
+suggestions), et ne doit plus générer de notifications. Un
+administrateur peut visualiser les demandes de blocages
+directement sur l'appli, et agir en conséquence.
+
+Si l'un des points ci-dessus n'a pas été respecté, la
+question est comptée fausse et vous passez à la suivante.
+
+
+
+Chat
+
+
Deux utilisateurs connectés peuvent chatter en temps réel (on
+tolère une marge de 10 secondes). L'utilisateur doit pouvoir
+voir depuis n'importe quelle page qu'il a reçu un message.
+
+Si l'un des points ci-dessus n'a pas été respecté, la
+question est comptée fausse et vous passez à la suivante.
+
+
+
+