Rapport Final EDCampus

=L'équipe=
 * Samuel Courthial (chef de projet)
 * Sebastian Fougère
 * Robin Delbos

Supervisé par : Gérard Pollier, Anthony Geourjon, Didier Donsez

=Qu'est ce qu'EDCampus?=



EDCampus est une plateforme de gestion de projet développé par Disrupt Campus Grenoble il y a 4 ans. Elle est actuellement en production avec 2400 comptes utilisateurs, 500 utilisateurs actifs et plus de 500 projets. Au cours de son histoire la plateforme a eu de multiples contributeurs ; 50 étudiants + Anthony Geourjon EDCampus à été développé principalement pour les que les professeurs puissent créer des projets pour leurs étudiant et pouvoir communiquer plus facilement au cours de celui-ci. Mais la plateforme regroupe de nombreuses autre fonctionnalités comme la création de sondages, un calendrier, une fonctionnalité de gestion des finances...

Notre objectif au cours de ce projet était de contribuer à EDCampus par de la correction de bugs et de l'ajout de fonctionnalités, ainsi que par la refactorisation d'un chat.

=Architecture du système=



Nous voyons donc que l'architecture est plutôt classique avec une partie front, une partie back et une base de données. Cependant il y a également une deuxième partie back-node utilisée pour la fonctionnalité de chat. Cette partie contient le serveur SocketIO qui permet d'informer les utilisateurs lors d'envoi de message.

= Technologies et outils=

Technologies

 * PHP : technologie utilisée pour le BackEnd
 * AngularJS : technologie utilisée pour le FrontEnd
 * SQL : technologie utilisée pour la base de données
 * SocketIO : technologie utilisée pour le chat

Outils

 * GitLab : Plateforme pour le travail collaboratif
 * GitKraken : Outil pour utiliser Git plus facilement
 * PHPStorm : Editeur pour le developpement BackEnd
 * WebStorm : Editeur pour le developpement FrontEnd
 * MySQL : Outil pour accéder a la base de données
 * Docker :

= Réalisations techniques=

Correction de bugs
Nous avions plusieurs types d'issues de correction de bugs
 * Traduction manquante
 * Erreurs d'affichage
 * Fonctionnalités ne se comportant pas de la bonne façon

Ajout de fonctionnalités

 * Envoi de notifications aux utilisateurs
 * Ajout d'un bouton de suppression
 * Affichage des prochaines échéances dans un projet

Ajout du chat
Le chat d'EDCampus était déjà présent mais de nombreuses fonctionnalités ne fonctionnaient pas correctement. Nous avons donc du débuguer les fonctionnalités mais aussi remplacer Firebase (qui était l'outil utilisé pour faire fonctionner le chat) par SocketIo afin que EDCampus ne soit pas dépendant d'outil externe comme Firebase. =Organisation=

Méthode
Nous avons travaillé en méthodologie agile avec GitLab. Nous avons repartis notre travail en sprints d'une semaine chacun pour un total de 6 sprints. A chaque sprint nous organisions au moins une réunion le lundi matin avec Anthony Geourjon afin de s'organiser pour la semaine et faire un récapitulatif de la semaine précédente. Pendant chaque sprint nous avions des issues données par Anthony Geourjon que nous nous répartitions selon nos préférence et notre avancement.

Le contenu
Notre travail s'organisait en deux parties :
 * Dans les 4 premiers sprints nous avons travaillé sur de la correction de bugs et de l'ajout de fonctionnalités, choisies chaque semaine par Anthony Geourjon.
 * Dans les 2 derniers sprints nous avons travaillé sur la fonctionnalité de chat.

Rôles

 * Dans la première partie nous choisissions les issues selon nos préférences, certaines issues nécessitaient doc des modifications coté front et back, Nous avions donc tous un rôle de développeur FullStack.
 * Dans la deuxième partie Samuel travaillait sur SocketIO alors que Robin et Sebastian travaillaient sur des issues d'ajout de fonctionnalités du chat et de la correction de bugs des fonctionnalités existantes. Puis une fois les fonctionnalités ajoutées nous avons tous travaillés sur l'intégration de SocketIO et sur les tests.

=Métriques=

Répartition du travail
Nous avons réalisés des métriques sur le nombre de lignes de code ainsi que sur le nombre d'issues; Cependant celles ci ne sont pas forcement représentatives puisque certaines issues nécessitaient plus de travail que d'autres sans forcement nécessiter plus de code.
 * Lignes de code :
 * Nombre d'issues :

Cout développeur
=Conclusion= Finalement le projet était enrichissant nous avons pu travailler sur un projet concret et même avoir des retours d'utilisateur sur notre travail. De plus nous avons eu l'occasion de travailler sur des fonctionnalités front et back avec des langages que nous n'avions que peu utilisé jusqu'à présent.

Cependant le projet manque de documentation. De plus le projet ayant eu de nombreux contributeurs il est parfois compliqué de comprendre comment fonctionne le code avec toute les façons différentes de coder.

=Glossaire= Bug : Défaut de conception d'un programme informatique à l'origine d'un dysfonctionnement.

Back/BackEnd : Partie d'un système avec laquelle un utilisateur n'interagis pas directement.

Chat : Fenêtre de discussion.

Front/FrontEnd : Partie d'un système avec laquelle un utilisateur interagis.

Fullstack : Un développeur fullstack travaille sur toute les parties du système.

Git : Git est un logiciel de gestion de versions décentralisé.

Issue : Tâche à réaliser lors d’un sprint.

Refactorisation : réécriture d'un programme pour l’améliorer.

Sprint : Période de travail définie avec un certain nombre d'issues.

=Bibliographie=

EDCampus

Gitlab EDCampus

Fiche de suivi

Flyer

Poster

Pitch

[ Présentation finale]