diff options
-rw-r--r-- | README | 4 | ||||
-rw-r--r-- | README.md | 113 |
2 files changed, 113 insertions, 4 deletions
@@ -1,4 +0,0 @@ | |||
1 | This is your new Play application | ||
2 | ================================= | ||
3 | |||
4 | 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 @@ | |||
1 | Projet EIG 2011 | ||
2 | =============== | ||
3 | |||
4 | Auteurs : | ||
5 | * Pacien TRAN-GIRARD | ||
6 | * Benoît LUBRANO DI SBARAGLIONE | ||
7 | |||
8 | |||
9 | Description du projet | ||
10 | --------------------- | ||
11 | |||
12 | Plate-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 | |||
22 | Description générale de la solution proposée | ||
23 | -------------------------------------------- | ||
24 | |||
25 | # Application web | ||
26 | |||
27 | La plate-forme a été implémentée sous la forme d'une application web | ||
28 | simpliste. | ||
29 | Le langage Scala ainsi que le framework Play! ont été utilisés. | ||
30 | |||
31 | L'application communique avec la base de donnée Oracle ou PostgreSQL à | ||
32 | l'aide de Slick. | ||
33 | Slick permet d'effectuer des requêtes à la manière de SQL, mais en | ||
34 | assurant 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 | |||
40 | Les comptes utilisateurs, les items en vente, les enchères et les | ||
41 | transactions, ainsi que les frais annuels sont stockés en base dans | ||
42 | des tables correspondantes. | ||
43 | |||
44 | Tous les enregistrements sont référencés par des UUIDs afin d'être | ||
45 | récupérés facilement par l'application web. | ||
46 | |||
47 | Conformément au cahier des charges, toutes les transactions internes | ||
48 | (suite à des enchères remportées) et externes (virements) sont | ||
49 | répercutées manuellement, bien que l'application puisse le prévoir. | ||
50 | |||
51 | Des vues permettent d'obtenir le solde, le solde disponible et les | ||
52 | ventes avec les enchères gagnantes. | ||
53 | |||
54 | Il a été choisi de n'utiliser des fonctions stockées que pour la date | ||
55 | et la génération des UUID pour faire abstraction des fonctions aux noms | ||
56 | différents selon le SGBD utilisée. | ||
57 | |||
58 | Les procédures et fonctions stockées n'ont pas été utilisées pour la | ||
59 | communication entre l'application et la base de donnée. En effet, leur | ||
60 | utilité au niveau du contrôle d'accès ne fait plus lieu avec une | ||
61 | application web. De plus, il a été constaté à la suite de tests qu'elles | ||
62 | empêchaient le fonctionnement du cache au niveau de l'application web, | ||
63 | et perturbaient l'optimiseur de la base de donnée, qui les voyait comme | ||
64 | des boîtes noires, n'optimisant de ce fait les requêtes internes que | ||
65 | de façon séparée. | ||
66 | |||
67 | La fonction stockée renvoyant la date "actuelle" n'a pas été utilisée. | ||
68 | En effet, son utilisation provoquait des problèmes de cohérence quand | ||
69 | il s'agit d'enchérir dans le passé. L'enchère la plus récente ne devenait | ||
70 | plus la meilleure par exemple. | ||
71 | |||
72 | |||
73 | Compilation et exécution de l'application | ||
74 | ----------------------------------------- | ||
75 | |||
76 | # Configuration de l'environnement | ||
77 | |||
78 | La configuration de l'application s'effectue par la création de variables | ||
79 | d'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 | |||
87 | Le projet utilise Activator ainsi que SBT pour la compilation et la | ||
88 | gestion des dépendances. | ||
89 | |||
90 | Le démarrage de l'application s'effectue simplement via la commande | ||
91 | |||
92 | activator start | ||
93 | |||
94 | |||
95 | Il est aussi possible de créer un packetage destiné à être publié avec la | ||
96 | commande | ||
97 | |||
98 | activator dist | ||
99 | |||
100 | |||
101 | # Exécution sur Heroku | ||
102 | |||
103 | L'application a été déployée sur Heroku à l'adresse : | ||
104 | |||
105 | https://minibay.herokuapp.com/ | ||
106 | |||
107 | |||
108 | Pistes 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 | ||