From 8c20607c8c01dae1cf714054c3d8ea533a7ab66d Mon Sep 17 00:00:00 2001 From: Pacien TRAN-GIRARD Date: Mon, 9 Feb 2015 01:19:18 +0100 Subject: Better README --- README | 4 --- README.md | 113 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 113 insertions(+), 4 deletions(-) delete mode 100644 README create mode 100644 README.md diff --git a/README b/README deleted file mode 100644 index ad73c38..0000000 --- a/README +++ /dev/null @@ -1,4 +0,0 @@ -This is your new Play application -================================= - -This file will be packaged with your application, when using `activator dist`. diff --git a/README.md b/README.md new file mode 100644 index 0000000..3b004b1 --- /dev/null +++ b/README.md @@ -0,0 +1,113 @@ +Projet EIG 2011 +=============== + +Auteurs : + * Pacien TRAN-GIRARD + * Benoît LUBRANO DI SBARAGLIONE + + +Description du projet +--------------------- + +Plate-forme d'enchères simplifiée où les utilisateurs peuvent : + * créer un compte + * s'authentifier + * vendre des items + * visualiser la liste des items en vente + * enchérir + * visualiser l'historique des transactions, le solde et le solde + disponible + + +Description générale de la solution proposée +-------------------------------------------- + +# Application web + +La plate-forme a été implémentée sous la forme d'une application web +simpliste. +Le langage Scala ainsi que le framework Play! ont été utilisés. + +L'application communique avec la base de donnée Oracle ou PostgreSQL à +l'aide de Slick. +Slick permet d'effectuer des requêtes à la manière de SQL, mais en +assurant la cohérences des types au sein de l'application, tout en +évitant les injections SQL. + + +# Base de donnée + +Les comptes utilisateurs, les items en vente, les enchères et les +transactions, ainsi que les frais annuels sont stockés en base dans +des tables correspondantes. + +Tous les enregistrements sont référencés par des UUIDs afin d'être +récupérés facilement par l'application web. + +Conformément au cahier des charges, toutes les transactions internes +(suite à des enchères remportées) et externes (virements) sont +répercutées manuellement, bien que l'application puisse le prévoir. + +Des vues permettent d'obtenir le solde, le solde disponible et les +ventes avec les enchères gagnantes. + +Il a été choisi de n'utiliser des fonctions stockées que pour la date +et la génération des UUID pour faire abstraction des fonctions aux noms +différents selon le SGBD utilisée. + +Les procédures et fonctions stockées n'ont pas été utilisées pour la +communication entre l'application et la base de donnée. En effet, leur +utilité au niveau du contrôle d'accès ne fait plus lieu avec une +application web. De plus, il a été constaté à la suite de tests qu'elles +empêchaient le fonctionnement du cache au niveau de l'application web, +et perturbaient l'optimiseur de la base de donnée, qui les voyait comme +des boîtes noires, n'optimisant de ce fait les requêtes internes que +de façon séparée. + +La fonction stockée renvoyant la date "actuelle" n'a pas été utilisée. +En effet, son utilisation provoquait des problèmes de cohérence quand +il s'agit d'enchérir dans le passé. L'enchère la plus récente ne devenait +plus la meilleure par exemple. + + +Compilation et exécution de l'application +----------------------------------------- + +# Configuration de l'environnement + +La configuration de l'application s'effectue par la création de variables +d'environnement. + + export DATABASE_DRIVER="oracle.jdbc.driver.OracleDriver" + export DATABASE_URL="jdbc:oracle:thin:trangirp/firstjackal97@mvx1.esiee.fr:1521:XE" + + +# Compilation et exécution + +Le projet utilise Activator ainsi que SBT pour la compilation et la +gestion des dépendances. + +Le démarrage de l'application s'effectue simplement via la commande + + activator start + + +Il est aussi possible de créer un packetage destiné à être publié avec la +commande + + activator dist + + +# Exécution sur Heroku + +L'application a été déployée sur Heroku à l'adresse : + + https://minibay.herokuapp.com/ + + +Pistes d'amélioration +===================== + + * Implémenter les pages et actions manquantes + * Hasher les mots de passe + * Mieux gérer le cache -- cgit v1.2.3