CAW1 2014 Projet de Romain Lhortolat

De Ensiwiki
Aller à : navigation, rechercher
Project schedule.png
Titre du projet CoRestauration
Cadre Construction d'applications Web

Équipe Romain Lhortolat
Encadrants Sebastien Viardot
Logo CoRestauration.png

Présentation du projet

Contexte

Dans le cadre de la seconde année d'études à l'Ensimag et du cours "Construction d'applications Web" avec M. Sébastien Viardot, nous avons l'opportunité de réaliser l'intégralité d'un site internet sur le thème de notre choix. J'ai donc décidé de réaliser un site de corestauration sur le principe du covoiturage.

Description générale

Le principe est de mettre en relation un hôte et des convives autour d'un repas chaleureux. C'est donc l'opportunité pour ces personnes de :

  • Passer un moment convivial
  • Baisser le coût de leur repas en partageant les frais
  • Choisir ce qu'ils veulent manger selon leurs envies
  • Rencontrer des gens
  • Goûter des spécialités régionales

---

  • Hôte
    • Si une personne souhaite organiser un repas et recevoir des convives, elle va pouvoir se rendre sur la page internet de création d'une annonce. Elle définit le lieu, la date et l'heure, les composants du repas qu'elle va préparer, le nombre maximum de convives à accueillir et va pouvoir ajouter des précisions supplémentaires. Le site va générer l'annonce et définir un prix à payer en fonction des composants choisis par l'hôte.
  • Convive
    • La personne qui souhaite participer à un repas doit se rendre sur la page d'accueil du site internet. Elle va pouvoir entrer la ville dans laquelle elle souhaite passer un repas convivial et la date à laquelle elle souhaite réserver. Désormais, une liste de résultats s'affiche : elle va pouvoir consulter les détails de l'annonce qui lui convient le plus. Si les informations entrées par l'hôte lui conviennent (lieu, date et heure, composants du repas, prix du repas, convives ayant déjà réservé, avis reçus par l'hôte, précisions supplémentaires) et s'il reste des places disponibles, elle va pouvoir réserver sa place pour cet évènement.
  • Après l'évènement
    • Les convives vont pouvoir évaluer et laisser un avis à l'hôte.

Cahier des charges

Pré-requis

Des contraintes nous sont imposées pour la réalisation de ce projet :

  • Utilisation d'un framework parmi Play, Symfony et Meteor [OK]
  • Gestion des rôles avec des utilisateurs différents ayant des droits et des rôles différenciés [OK]
  • Site adapté à plusieurs terminaux dont une version mobile [OK]
  • Mise en place de jeux de tests unitaires [OK]
  • Utilisation d'un WebService [OK]
  • Abonnement RSS [OK]
  • Une partie du site en gwt ou au moins avec un framework type smartclient

Cas d'usage

  • Identification

ScenarioIdentificationCoRestauration.png

  • Compte

ScenarioCompteCoRestauration.png

  • Annonces

ScenarioAnnonceCoRestauration.png

  • Avis

ScenarioAvisCoRestauration.png

  • Administration

ScenarioAdministrationCoRestauration.png

Pages du site et droits des utilisateurs

  • Annonces
    • Une page d'accueil contenant le champ de recherche d'annonces selon une ville et une date [1,2,3,4]
    • Une page de consultation des résultats de la recherche [1,2,3,4]
    • Une page de consultation des détails de chaque annonce (et donc la possibilité de réserver) [1,2,3,4]
    • Une page de création d'une nouvelle annonce [2,3,4]
    • Une page de confirmation de réservation [2,3,4]
    • Une page d'affichage de la liste des annonces et réservations de l'utilisateur [3,4]
    • Une page de modification de ses annonces actives [3,4]
  • Identification / Inscription
    • Une page de création d'un nouveau compte [1]
    • Une page d'identification au site [1]
  • Utilisateurs
    • Une page de consultation des détails de chaque utilisateur [1,2,3,4]
    • Une page de modification de son compte utilisateur [2,3,4]
  • Avis
    • Une page de consultation des avis laissés à l'utilisateur [1,2,3,4]
    • Une page de dépose d'un nouvel avis à un utilisateur [2,3,4]
  • Administration
    • Une page de gestion des annonces [4]
    • Une page de gestion des utilisateurs [4]
    • Une page de gestion des avis [4]
  • Autre
    • Une page pour les accès refusés (non respect des droits) [1,2,3,4]
    • Une page personnalisée pour les erreurs 404 et 500 [1,2,3,4]

---

  • Les droits des différents profils d'utilisateurs sont indiqués comme ceci :
    • 1 : Visiteur non connecté
    • 2 : Visiteur connecté en tant qu'utilisateur
    • 3 : Visiteur connecté en tant qu'utilisateur et étant titulaire d'une annonce
    • 4 : Visiteur connecté en tant qu'administrateur

Spécifications

Diagramme de classes

DiagrammeDeClassesCoRestauration.png

Modèle de données

ModeleDeDonneesCoRestauration.png

Choix techniques

  • Framework
    • Utilisation de Symfony2
  • Librairies JavaScript
    • Utilisation de JQuery et JQuery UI (pour l'autocomplétion)
  • Stockage en base de données et mapping des objets
    • Utilisation de Doctrine
  • Adaptation du site à plusieurs terminaux
    • Utilisation de Bootstrap3 via le bundle Maincraft
  • Moteur de templates
    • Utilisation de Twig
  • Gestionnaire de dépendances
    • Utilisation de Composer (nécessite également le gestionnaire de versions Git)
  • Gestionnaire de ressources
    • Utilisation d'Assetic
  • Tests unitaires et fonctionnels
    • Utilisation de PHPUnit
  • Gestion de la base de données, connexion/déconnexion, roles, sécurité
    • Utilisation des fonctionnalités natives de Symfony
  • Intégration d'un service Web
    • Intégration de l'API JavaScript Google Maps
  • Abonnement RSS
  • Autocomplétion (sur les villes et sur les composants des repas)

Réalisation

Avancement dans la réalisation des fonctionnalités

  • Cahier des charges
    • Définition des fonctionnalités
      100 %
    • Définition des pages et de leur organisation
      100 %
  • Spécifications
    • Choix techniques
      100 %
    • Création des schémas UML des cas d'usage du site
      100 %
    • Création du schéma UML du modèle de données
      100 %
  • Réalisation
    • Mise en place de Symfony
      100 %
    • Mise en place de Composer
      100 %
    • Mise en place de Git
      100 %
    • Mise en place d'Assetic
      100 %
    • Génération des éléments structurants MVC : contrôleurs, entités et vues
      100 %
    • Création de la base de données (structure, tables, données de référence)
      100 %
    • Réalisation fonctionnelle de la page d'accueil
      100 %
    • Réalisation fonctionnelle de la page de consultation des résultats de la recherche
      100 %
    • Réalisation fonctionnelle de la page de consultation des détails de chaque annonce
      100 %
    • Réalisation fonctionnelle de la page de gestion de la réservation d'un repas
      100 %
    • Réalisation fonctionnelle de la page de création d'une nouvelle annonce
      100 %
    • Réalisation fonctionnelle de la page de modification de ses annonces actives
      100 %
    • Réalisation fonctionnelle de la page de création d'un nouveau compte
      100 %
    • Réalisation fonctionnelle de la page d'identification au site
      100 %
    • Réalisation fonctionnelle de la page de consultation des détails de chaque utilisateur
      100 %
    • Réalisation fonctionnelle de la page de modification de son compte utilisateur
      100 %
    • Réalisation fonctionnelle de la page de consultation des avis laissés à l'utilisateur
      100 %
    • Réalisation fonctionnelle de la page de dépose d'un nouvel avis à un utilisateur
      100 %
    • Réalisation fonctionnelle de la page de gestion des annonces
      100 %
    • Réalisation fonctionnelle de la page de gestion des utilisateurs
      100 %
    • Réalisation fonctionnelle de la page de gestion des avis
      100 %
    • Réalisation fonctionnelle de la page d'affichage de la liste des annonces et réservations de l'utilisateur
      100 %
    • Réalisation fonctionnelle des pages de personnalisation des accès refusés et des erreurs 404 et 500
      100 %
    • Mise en place de Bootstrap
      100 %
    • Travail sur le rendu graphique
      100 %
    • Gestion de la sécurité
      100 %
    • Gestion de la restriction des données des formulaires entrées par l'utilisateur
      100 %
    • Gestion de l'auto complétion sur les champs "Ville" et "Composant"
      100 %
    • Réalisation de l'abonnement RSS aux annonces actives du site
      100 %
    • Réalisation de la connexion avec la Google Maps Javascript API pour afficher le lieu de l'évènement sur une carte
      100 %
  • Tests
    • Mise en place de PHPUnit
      100 %
    • Rédaction des tests unitaires
      100 %
  • Gestion des annexes
    • Création du Wiki
      100 %
    • Rédaction de la documentation d'installation
      100 %
    • Réalisation du screencast
      100 %

Comptes-rendus hebdomadaires

  • Semaine 19, travail sur :
    • Définition des fonctionnalités
    • Définition des pages et de leur organisation
    • Choix techniques
    • Création des schémas UML des cas d'usage du site
    • Création du schéma UML du modèle de données
  • Semaine 20, travail sur :
    • Création du Wiki
    • Choix techniques
    • Mise en place de Symfony, Git, Composer, Assetic
    • Génération des éléments structurants MVC : contrôleurs, entités et vues
    • Création de la base de données (structure, tables, données de référence)
    • Réalisation fonctionnelle de la page de création d'une nouvelle annonce
    • Réalisation fonctionnelle de la page de création d'un nouveau compte
    • Gestion de la sécurité
  • Semaine 21, travail sur :
    • Génération des éléments structurants MVC : contrôleurs, entités et vues
    • Réalisation fonctionnelle de la page d'accueil
    • Réalisation fonctionnelle de la page de consultation des résultats de la recherche
    • Réalisation fonctionnelle de la page de consultation des détails de chaque annonce
    • Réalisation fonctionnelle de la page de création d'une nouvelle annonce
    • Réalisation fonctionnelle de la page de modification de ses annonces actives
    • Réalisation fonctionnelle de la page de création d'un nouveau compte
    • Réalisation fonctionnelle de la page d'identification au site
    • Réalisation fonctionnelle de la page de consultation des détails de chaque utilisateur
    • Réalisation fonctionnelle de la page de modification de son compte utilisateur
    • Réalisation fonctionnelle de la page de consultation des avis laissés à l'utilisateur
    • Réalisation fonctionnelle de la page de dépose d'un nouvel avis à un utilisateur
    • Réalisation fonctionnelle de la page de gestion des annonces
  • Semaine 23, travail sur :
    • Réalisation fonctionnelle de la page de gestion de la réservation d'un repas
    • Réalisation fonctionnelle de la page de gestion des avis
    • Réalisation fonctionnelle de la page de gestion des utilisateurs
    • Réalisation fonctionnelle de la page "Mes annonces"
    • Mise en place de Bootstrap
    • Travail sur le rendu graphique
    • Gestion de la sécurité
  • Semaine 24, travail sur :
    • Travail sur le rendu graphique
    • Gestion de la sécurité
    • Gestion de la restriction des données des formulaires entrées par l'utilisateur
    • Gestion de l'auto complétion sur les champs "Ville" et "Composant"
    • Réalisation de l'abonnement RSS aux annonces actives du site
    • Réalisation de la connexion avec la Google Maps Javascript API pour afficher le lieu de l'évènement sur une carte
  • Semaine 25, travail sur :
    • Mise en place de PHPUnit
    • Rédaction des tests unitaires
    • Réalisation de la documentation d'installation
    • Réalisation du screencast

Résultat

Screencast

Le lien : https://www.youtube.com/watch?v=TzraMZzjuho

Sources

Les sources sont disponibles ici : Fichier:Projet Romain LHORTOLAT.zip Elles comprennent le manuel d'installation, les diagrammes, les fichiers pour la base de données et les sources du projet.

Modèle commercial

A chaque réservation, un pourcentage (à définir) du prix indiqué sur l'annonce sera ajouté au montant total payé par le client. Ce pourcentage correspondra aux frais de fonctionnement et à la marge du site.

Améliorations par la suite

  • Etre plus précis (origine, qualité, quantité) sur les composants des repas
  • Le site intégrera un "datepicker"
  • Le site intégrera un terminal de paiement en ligne afin que :
    • Les convives puissent payer directement l'hote lors de la réservation
    • CoRestauration puisse rembourser l'hote
  • Référencement
  • Ouverture sur les réseaux sociaux
  • Réalisation d'une vidéo de présentation du fonctionnement du site internet
  • Réalisation des pages annexes
    • Conditions générales
    • Foire aux questions
    • Liens utiles
    • Témoignages