aboutsummaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'README.md')
-rw-r--r--README.md113
1 files changed, 113 insertions, 0 deletions
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..3b004b1
--- /dev/null
+++ b/README.md
@@ -0,0 +1,113 @@
1Projet EIG 2011
2===============
3
4Auteurs :
5 * Pacien TRAN-GIRARD
6 * Benoît LUBRANO DI SBARAGLIONE
7
8
9Description du projet
10---------------------
11
12Plate-forme d'enchères simplifiée où les utilisateurs peuvent :
13 * créer un compte
14 * s'authentifier
15 * vendre des items
16 * visualiser la liste des items en vente
17 * enchérir
18 * visualiser l'historique des transactions, le solde et le solde
19 disponible
20
21
22Description générale de la solution proposée
23--------------------------------------------
24
25# Application web
26
27La plate-forme a été implémentée sous la forme d'une application web
28simpliste.
29Le langage Scala ainsi que le framework Play! ont été utilisés.
30
31L'application communique avec la base de donnée Oracle ou PostgreSQL à
32l'aide de Slick.
33Slick permet d'effectuer des requêtes à la manière de SQL, mais en
34assurant la cohérences des types au sein de l'application, tout en
35évitant les injections SQL.
36
37
38# Base de donnée
39
40Les comptes utilisateurs, les items en vente, les enchères et les
41transactions, ainsi que les frais annuels sont stockés en base dans
42des tables correspondantes.
43
44Tous les enregistrements sont référencés par des UUIDs afin d'être
45récupérés facilement par l'application web.
46
47Conformément au cahier des charges, toutes les transactions internes
48(suite à des enchères remportées) et externes (virements) sont
49répercutées manuellement, bien que l'application puisse le prévoir.
50
51Des vues permettent d'obtenir le solde, le solde disponible et les
52ventes avec les enchères gagnantes.
53
54Il a été choisi de n'utiliser des fonctions stockées que pour la date
55et la génération des UUID pour faire abstraction des fonctions aux noms
56différents selon le SGBD utilisée.
57
58Les procédures et fonctions stockées n'ont pas été utilisées pour la
59communication entre l'application et la base de donnée. En effet, leur
60utilité au niveau du contrôle d'accès ne fait plus lieu avec une
61application web. De plus, il a été constaté à la suite de tests qu'elles
62empêchaient le fonctionnement du cache au niveau de l'application web,
63et perturbaient l'optimiseur de la base de donnée, qui les voyait comme
64des boîtes noires, n'optimisant de ce fait les requêtes internes que
65de façon séparée.
66
67La fonction stockée renvoyant la date "actuelle" n'a pas été utilisée.
68En effet, son utilisation provoquait des problèmes de cohérence quand
69il s'agit d'enchérir dans le passé. L'enchère la plus récente ne devenait
70plus la meilleure par exemple.
71
72
73Compilation et exécution de l'application
74-----------------------------------------
75
76# Configuration de l'environnement
77
78La configuration de l'application s'effectue par la création de variables
79d'environnement.
80
81 export DATABASE_DRIVER="oracle.jdbc.driver.OracleDriver"
82 export DATABASE_URL="jdbc:oracle:thin:trangirp/firstjackal97@mvx1.esiee.fr:1521:XE"
83
84
85# Compilation et exécution
86
87Le projet utilise Activator ainsi que SBT pour la compilation et la
88gestion des dépendances.
89
90Le démarrage de l'application s'effectue simplement via la commande
91
92 activator start
93
94
95Il est aussi possible de créer un packetage destiné à être publié avec la
96commande
97
98 activator dist
99
100
101# Exécution sur Heroku
102
103L'application a été déployée sur Heroku à l'adresse :
104
105 https://minibay.herokuapp.com/
106
107
108Pistes d'amélioration
109=====================
110
111 * Implémenter les pages et actions manquantes
112 * Hasher les mots de passe
113 * Mieux gérer le cache