Spécifications fonctionnelles et techniques - Pauooo/MateFinder GitHub Wiki
Spécifications fonctionnelles
Scenarii d'utilisation : user stories
Accueil/Landing
- En tant qu'utilisateur non connecté, j'ai besoin de deux boutons "sign-up"/"sign-in" afin de pouvoir choisir si je m'identifie ou si je crée un compte.
Identification
-
En tant qu'utilisateur non connecté, si j'ai cliqué sur "sign-up", j'ai besoin d'un formulaire de création de compte afin de me créer un compte.
-
En tant qu'utilisateur non connecté, si j'ai rempli correctement et validé le formulaire de création de compte, j'ai besoin d'une confirmation de création de compte.
-
En tant qu'utilisateur non connecté, si j'ai cliqué sur "sign-in", j'ai besoin d'un formulaire d'identification afin de m'identifier.
-
En tant qu'utilisateur non connecté, si j'ai cliqué sur "sign-in" et que je ne me souviens plus de mon mot de passe, j'ai besoin d'un formulaire où renseigner mon e-mail pour qu'un nouveau mot de passe me soit envoyé.
Navigation générale
- En tant qu'utilisateur connecté, j'arrive par défaut sur la page de recherche de partenaire.
- En tant qu'utilisateur connecté, je peux accéder à mon profil grâce à "mon compte" du menu de navigation.
- En tant qu'utilisateur connecté, je peux me déconnecter grâce à "me déconnecter" du menu de navigation.
- En tant qu'utilisateur connecté, je peux accéder aux mentions légales grâce au lien situé en bas de l'écran.
- En tant qu'utilisateur connecté, je peux accéder au contact grâce au lien situé en bas de l'écran.
Recherche de partenaires
- En tant qu'utilisateur connecté, j'ai besoin d'un bouton de switch afin de choisir si je suis "solo" ou en "team".
- En tant qu'utilisateur connecté, "solo" ou "team", j'ai besoin d'un formulaire pour préciser ma recherche de partenaire en fonction de la langue, du jeu et du format de jeu.
- En tant qu'utilisateur connecté, une fois ma recherche soumise, j'ai besoin d'un loader pour me signifier que ma recherche est en cours.
- En tant qu'utilisateur connecté, une fois ma recherche soumise, j'ai besoin d'un bouton "annuler la recherche" afin de pouvoir annuler ma recherche si je le souhaite.
- En tant qu'utilisateur connecté, une fois ma recherche soumise, du contenu en lien avec ma recherche m'est proposé en dessous du loader.
- En tant qu'utilisateur connecté, une fois ma recherche terminée, j'ai besoin de recevoir une alerte (toast) qui me notifie la fin de recherche.
Notification de fin de recherche
-
En tant qu'utilisateur connecté, si ma recherche a abouti sur la rencontre de partenaires, je choisi d'accepter ou non d'être mis en lien avec les autres partenaires de jeu trouvés :
- si j'accepte : dans la même boite de dialogue, je peux voir en temps réel si les autres partenaires acceptent d'être mis en relation.
- si je n'accepte pas (si je clique sur non ou que le temps maximal de temps s'est écoulé) : je suis redirigé sur la vue de recherche et les autres partenaires sont notifiés que la recherche de partenaire reprend dû à un désistement.
-
En tant qu'utilisateur connecté, si ma recherche n'a abouti sur aucune rencontre de partenaires, la notification me propose de relancer une recherche avec des critères moins stricts.
Mise en relation des partenaires
- En tant qu'utilisateur connecté et qui a accepté la mise en relation avec les partenaires de jeu trouvés, si tous les partenaires de jeu acceptent l'invitation à rejoindre une chatroom, l'ensemble des utilisateurs seront simultanément redirigés vers la chatroom.
Description de l'interface : wireframes
- version beta 0.1 premier modèle
Charte graphique
- Colors
Grey - N50 - #C1C7D0
Yellow - Y200 - #FFC400
Purple Grey - N400 - #505F79
White - N0 - #FFF
Ombre : c'est le noir par défaut, seule l'opacité vari
- Fonts
du + au - gros :
- Maiden Crimes
- Roboto Slab
- Montserrat les 3 sont libres de droit (enfin pas la première en cas de commercialisation)
Questions techniques d'importance
- Durée de vie de la chatroom : Que devient la chatroom quand il n'y a plus d'utilisateurs ?
Spécifications techniques
Technologies utilisées
Back
- Techno principale : NodeJS
- ExpressJS (pour faciliter l'utilisation de NodeJS)
- Socket.io (pour l'échange avec le Front)
- MongoDB (Base De Données)
- Mongoose (simplification de MongoDB) http://atinux.developpez.com/tutoriels/javascript/mongodb-nodejs-mongoose/
- https://nodemailer.com/about/
Front
- Techno principale : ReactJS
- Redux (Gestion de state/Middleware)
- React-Router (Gestion des vues)
- Socket.io-client (pour l'échange avec le Back)
Authentification
Dictionnaire des données
Name | Type | Default | Other |
---|---|---|---|
Users | |||
id | int | Auto-increment | |
username | VARCHAR(255) | ||
VARCHAR(255) | |||
password | VARCHAR(255) | ||
room_id | int | -1 | |
date_signup | DATE | current date | |
Rooms | |||
id | int | Auto-increment | |
max_user | int | ||
current_user | int | ||
open | bool | true | |
Messages | |||
id | int | Auto-increment | |
user_id | int | ||
room_id | int | ||
message | VARCHAR(255) | ||
date | DATE | current date | |
ip_address | int | ||
Games | |||
id | int | Auto-increment | |
name | VARCHAR(255) | ||
formats | VARCHAR(255) |