CAW1 2015 Projet de Maximilien Defourne et Raphaël Fouassier

De Ensiwiki
Aller à : navigation, rechercher
Project schedule.png
Titre du projet MetaFeed
Cadre Ensimag

Équipe Maximilien Defourne Raphaël Fouassier
Encadrants Sébastien Viardot


Présentation générale

Contexte

Dans le cadre de notre deuxième année à l'ENSIMAG, nous suivons un cours de Construction d'Applications Web. Ce cours aboutit à un projet de développement d'un site internet en binôme. Bien que de thématique libre, la réalisation de ce site est guidé par un certains nombre de contraintes techniques imposées, détaillées dans le cahier des charges.

Genèse

Le web est avant tout un média de communication, seulement pour pouvoir accéder à l'information, il faut entretenir une collection de sites et les consulter un par un. C'est là qu'intervient MetaFeed : il permet de rassembler les différentes news de certains site pour les afficher de manière unifiées.

Nous avons choisi de créer un agrégateur de flux RSS/ATOM accessible au plus grand nombre. Ce site permettra de récupérer le lien et le titre des différents flux pour les afficher à l'utilisateur sous une forme filtrée et adaptée à chacun.

Tout visiteur non enregistré sur le site, se verra afficher une agrégation non filtrée de sites pré-définis. Cela pourra être amélioré dans le futur si un nombre suffisant de membres sont actifs.

Cahier des charges

Le projet devra comporter les éléments suivants :

  • Utilisation d'un framework : nous utiliserons Play Framework[1]
  • Gestion des rôles avec des utilisateurs différents ayant des droits et des rôles différenciés : visiteurs, membres, administrateurs.
  • Site adapté à plusieurs terminaux dont une version mobile - Nous utiliserons le framework CSS Foundation[2].
  • Mise en place de jeux de tests unitaires : pour tester la partie modèle et contrôleur.
  • Souhaitable : Mise en place de jeux de tests fonctionnels avec des technologies de type selenium.
  • Souhaitable : utilisation webservice - Le serveur ira chercher toutes les 5 min les différents flux RSS de sa BDD
  • Optionnel : abonnement rss


Spécification - Cas d'utilisation

UML

Visiteurs

Consulter le flux par défaut temps réel

Description C’est la page d’acceuil du site internet. Cette page permet de consulter l’aggrégation de tous les flux par défauts. Tout le monde peut visiter cette page. La page contient un lien pour se connecter et un lien pour s’inscrire. La liste des feeds est générer via un appel ajax.

S’inscrire

Pré-condition:

  • non connecté

Description:
L’utilisateur non connecté se retrouve sur une page avec un formulaire, il faut remplir les 3 champs obligatoirement, et penser à vérifier en JS + HTML5 côté client.

  • Pseudo –> alphanumérique, max 56 char
  • email –> valide
  • mdp –> min 8 char
  • vérif mdp –> valide

Post-condition:
Si inscription validée on redirige vers la page de connexion.

Se connecter

Pré-condition:

  • avoir un compte

Description:
L’utilisateur non connecté se retrouve sur une page avec un formulaire, il faut remplir les 2 champs obligatoirement, et penser à vérifier en JS + HTML5 côté client.

  • Pseudo
  • mdp

Post-condition:
Si connexion valide, rediriger vers la page “tous mes flux”


Membres

Pré-condition:

  • être connecté à son compte

Se désinscrire

Description:
L’utilisateur connecté se retrouve sur la page “mon compte”, il clique sur le lien “supprimer mon compte”, on déplie alors en JS un formulaire demandant le mdp pour valider la suppression du compte.

Post-condition:
Si mdp valide, on supprime le compte, puis on rédirige vers la page d’acceuil

Ajouter/supprimer un flux

Flux personnel

Description:
L’utilisateur clique sur le lien pour “ajouter un flux perso”, un fenêtre modale apparait en JS. Il faut remplir 2 champs obligatoires et penser à vérifier en JS + HTML5 côté client.

  • URL du lien RSS/ATOM
  • Catégorie associée

Il est important pour la catégorie d’avoir un menu déroulant proposant les catégories existantes en auto-complétion (JS).

Cas d’erreur:
Le lien RSS/ATOM est down ou ce n’est pas du RSS/ATOM valide. Le lien RSS/ATOM appartient déjà à nos flux persos.

Post-condition:
On ajoute le flux RSS/ATOM

Méta flux

Description:
L’utilisateur clique sur le lien pour “ajouter un méta flux”, un fenêtre modale apparait en JS. Il peut sélectionner différentes catégories existantes. Pour chaque catégories on peut choisir de filtrer un pourcentage de news les plus

Post-condition:
On ajoute le flux méta

Ajouter un flux proposé

Description Sur un menu à droite, l’utilisateur se vera afficher de nouveaux flux auxquels il peut souscrire. C’est liens sont calculés en fonctions de l’affinité de l’utilisateur avec les catégories. Plus un utilisateurs clique sur des liens d’une certaines catégorie, plus d’autres flux de cette catégorie lui sont affichés. Lorsqu’il clique sur un flux proposé, celui-ci est automatiquement ajouter à sa liste de flux personnel grâce en ajax

Post-condition Le flux cliqué est rajouté à la liste des flux personnel.

Activer/désactiver un flux

Description Sur un menu à gauche, la liste des différents flux seront affichés (les personnels + ceux par défauts). Ils seront regroupés par catégories, et l’utilisateur pourra grâce à un bouton switch activer/désactiver le flux à sa convenance.

Post-condition Le flux désactivés ne s’affichent plus, et ceux activés s’affichent.


Admins

La partie administration sera réalisée grâce au module CRUD[3] de Play Framework. Voici la liste exhaustive des cas d'utilisations pour cette partie :

  • Ajouter/supprimer un membre
  • Modifier les flux d'un membre (ajouter/supprimer/désactiver/activer)
  • Ajouter/supprimer un flux par défaut

Environnement de développement

Technologies utilisées

  • Java
    • Play Framework
    • ROME[4] (parsing RSS/ATOM)
  • BDD
    • H2 Database en DEV
    • postgreSQL en PROD
  • Workflow
    • Git pour le versionning
    • Github (issues + pull requests)

Liens utiles

Spécifications RSS et ATOM

Avancement

Avancement du projet

Avancement général :
75 %

Conception

Modélisation des cas d'utilisation :
100 %
Rédaction des cas d'utilisation :
100 %
Modélisation du schéma de données :
90 %
Conception du design de la page visiteur :
100 %
Conception du design de la page membre :
100 %

Développement

Développement du parseur de RSS/ATOM :
100 %
Consultation des flux par défauts sur la page d'accueil :
100 %
Génération d'un flux RSS et ATOM pour la page d'accueil :
100 %


Connexion :
100 %
Inscription :
100 %
Espace d'administration :
100 %


Ajouter/Voir/Supprimer un flux personnel :
100 %
Créer/Voir/Supprimer un Méta-flux :
0 %
Ajouter un flux proposé :
0 %
Désactiver/Activer un abonnement à un flux :
20 %

Autre

Réalisation de la page ensiwiki :
60 %
Mise en place d'un environnement de travail (git+github) :
100 %

Installation

1. Installez Play Framework (en version 1.3) (ajoutez-le dans votre PATH)

2. Télécharger les sources du projet (normalement fournis par email)

3. Décompressez les sources dans le dossier de votre choix

3. Ouvrez la console, allez (en utilisant la commande cd) dans le dossier du projet et tapez `play run`

4. Rendez-vous à l'addresse http://127.0.0.1:9000/

5. Par défaut, plusieurs users sont disponibles (username / password) :

* admin / test (aveec accès à l'administration CRUD)
* demo / demo (sans accès)

De plus, plusieurs flux RSS sont déjà disponibles et analysés par le site au lancement, il n'y a donc aucun travail à effectuer.

6. Il peut être nécessaire recharger la page quelques secondes après l'arrivée sur la page d'accueil, car l'analyse des flux RSS se fait en arrière-plan (et peut prendre du temps).

7. En cas de problèmes d'installation des flux RSS, regardez votre pare-feu