CAW1 2017 Projet de Julien BASSON, Vincent BONNECUELLE et Jibril SAFFI

De Ensiwiki
Aller à : navigation, rechercher
Logchan logo.png
Titre du projet Logchan
Cadre Ensimag

Équipe Julien BASSON
Vincent Bonnecuelle
Jibril SAFFI
Encadrants Sébastien Viardot


Présentation générale

Contexte

L'objectif de ce projet vise à construire une application web en respectant un cahier des charges préalablement établi. Ce dernier définit les technologies et les techniques à utiliser pour mener ce projet à bien.

Description du projet

Logchan appartient à une certaine catégorie de site appelée Imageboard, soit un « forum à image », dont le représentant le plus connu est sans nul doute 4chan. Aussi, ce projet consiste à réaliser un service semblable, soit un forum de discussions où les publications textuelles peuvent être enrichies par des images. La structuration du site se fait selon un découpage en boards contenant eux-mêmes plusieurs threads portant sur le même sujet. L'utilisateur est « anonyme » et peut répondre aux différents threads sans nécessairement avoir besoin de s'authentifier. Bien que l'architecture de l'application soit a priori assez simple, les imageboards les plus fréquentés doivent tout de même répondre à certaines contraintes de performances qu'il faut prendre en considération.

Objectifs du projet

Le principal objectif du projet Logchan est d'acquérir une meilleure maîtrise des outils mis en œuvre lors de la création d'un site internet. Nous avons choisi d'implémenter un Imageboard car le fonctionnement et l'interface de ce genre de site nous sont déjà familiers, nous permettant ainsi de focaliser notre attention sur l'apprentissage et la bonne utilisation des outils qui nous sont proposés.

Cahier des charges

Ce projet est soumis aux contraintes suivantes :

  • Utilisation du framework Django (Python) ou Play (Java) ;
  • Gestion des rôles avec des utilisateurs différents ayant des droits et des rôles différenciés (2 rôles au minimum) ;
  • Site adapté à plusieurs terminaux dont une version mobile (par exemple en utilisant Bootstrap) ;
  • Mise en place de jeux de tests unitaires pour tester le modèle ainsi que le contrôleur ;
  • Mise en place de jeux de tests fonctionnels avec des technologies de type Selenium ;
  • Utilisation d'un web service.

Spécification

Rôles et permissions

Utilisateur

L'utilisateur classique est anonyme. En effet, il n'est pas nécessaire de posséder un compte personnel pour utiliser Logchan. Cet utilisateur, surnommé « anon », peut effectuer les actions suivantes :

  • Sélectionner un board : chaque board regroupe plusieurs threads portant sur un même thème ;
  • Sélectionner un thread : chaque thread regroupe plusieurs posts qui constituent un fil de discussion sur un même sujet ;
  • Créer un thread : cela revient à créer le premier post du nouveau thread. Ce post contient le plus souvent une image pour solliciter l'attention des autres utilisateurs ;
  • Créer un post : pour créer un post, l'utilisateur doit inscrire un texte et peut également joindre une image. Le nom d'utilisateur est facultatif : s'il n'est pas renseigné, le nom « anonymous » sera utilisé par défaut. Pour valider la publication de son post, l'utilisateur classique doit au préalable se soumettre à une vérification par CAPTCHA.

Modérateur

Naturellement, le modérateur hérite des actions de l'utilisateur classique, et peut effectuer ces actions supplémentaires :

  • Supprimer un thread : si un modérateur supprime un thread, alors tous les posts qu'il contient seront supprimés en cascade ;
  • Supprimer un post : il peut de ce fait supprimer un post quelconque ;
  • Créer un post : la création est identique à celle de l'utilisateur classique, à la seule différence que la publication n'est pas soumise à la vérification par CAPTCHA.

Administrateur

L'administrateur possède les pleins pouvoirs car, en plus d'hériter des actions du modérateur, il peut :

  • Supprimer ou renommer un board : si l'administrateur supprime un board, alors tous les threads qu'il contient seront supprimés en cascade.

Cas d'utilisation

Logchan UseCases.png

Modèle de données

Logchan ClassDiagram.png

Environnement de développement

Technologies utilisées

En plus des technologies web usuelles, nous avons utilisé :

  • Le framework web Django (Python) pour architecturer notre application ;
  • Le framework REST de Django pour que Logchan soit utilisable sous forme d'API ;
  • La plateforme (PaaS) Heroku pour assurer un développement en intégration continue ;
  • Le framework Selenium pour conduire les tests d'intégration ;
  • L'outil en ligne Trello pour se répartir les différentes tâches et ainsi assurer une gestion de projet ;
  • L'API reCAPTCHA pour valider la publication des posts utilisateurs.

Installation

  1. Récupérer le code source depuis : Github
  1. Installer python
  2. Installer pip
  3. Installer les dépendances
    • Unix
    1. postgresql
    2. postgresql-server-dev-X.Y
    3. python-dev
    4. Pillow
      • libjpeg
      • python-imaging
    • Installer les dépendances python
      • pip install -r requirements.txt

Dépendances optionnelles :

  1. Herroku cli

Pour les tests d'integration

  1. Installer phantomJS PhantomJS
  2. L'ajouter au path

Configuration de la base de données

  • python manage.py migrate

Lancement de l'application

  • python manage.py runserver

Disponible à http://127.0.0.1:8000

Screencast

Média:Screencast_logchan.mp4

Sources