diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index c1f7320a9aea14f3336e13b1e9f5502abcba9745..f792b91f7c728d15a1792c49f0d6f90f20cd8da1 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -25,6 +25,125 @@ Contribuer
 
 - branche sur laquelle hawkspar développait la version "orienté objet" de ldap_data.js
 
+
+
+## Structure
+
+La structure générale du projet est détaillée ci-dessous ; pas d'inquiétude, la plupart des fichiers .js sont aussi extensivement documentés plus bas.
+
+* Racine du projet : fichiers de configuration ;
+  * config.json : données "sensibles" spécifique au projet à priori non partageable (adresse du LDAP, mots de passe),
+  * configfile_doc.json : JSDoc, l'outil de génération automatique de documentation,
+  * autres fichiers relatifs à des modules particuliers ou à la gestion de paquets,
+  * [`assets`](../assets) : ressources ;
+    * images et divers (dont l'essentiel flavicon)
+  * [`build`](../build) : dépendances gérées automatiquement ;
+    * bundle.js est un monstrueux fichier généré automatiquement qui gère nos dépendances.
+  * [`db`](../db) : base de donnée sigma ;
+  * knex_router.js charge la configuration précisée dans knexfile.js,
+    * [`migrations`](../db/migrations) stocke l'ensemble des migrations knex ; c'est un équivalent d'un répertoire git pour la BDD sigma (du coup seulement les groupes pas les individus),
+    * [`seeds`](../db/seeds) : stocke les éléments de générations des BDD ; c'est un ensemble de scripts.
+  * [`doc`](.) : documentation ;
+    * ensemble de pages html et fichiers associés ; index.html permet de naviguer sereinement sur toute la doc JSDoc.
+  * [`node_modules`](../node_modules) : gestion automatique des modules.
+  * [`src`](../src) : code source
+    * [`admin_view`](../src/admin_view) : gestion d'une interface administrateur de la base de donnée, s'appuie sur *css* et *views*
+    * [`ldap`](../src/ldap) : gestion des requêtes LDAP
+
+La syntaxe adoptée est JavaScript ES6, un standard moderne (2015) de JavaScript. Il permet d'importer des dépendances en utilisant le mot-clé `import`, ce que le serveur Node.js ne comprend pas puisque la version 8 de Node ne comprend que le standard ES5 (2009), qui gère les imports avec `require()`.
+
+
+
+## Base de données
+
+Sigma s'appuie sur deux bases de données :
+
+* La BDD frankiz accessible par LDAP hébergée sur un serveur de l'école, qui contient identifiants, mots de passe, et toutes les informations sur les utilisateurs et groupes spécifiques X.
+  * On y accède par des requêtes LDAP, d'où la nécessité de ldap.js.
+* La BDD de sigma propre est en [PostgreSQL](https://www.postgresql.fr/), hébergée en propre BR, qui contient les groupes et leurs niveaux de visibilité mais peu d'information sur les utilisateurs (seulement son école).
+  * Les requêtes à cette base de données sont gérées par [Knex.js](http://knexjs.org).
+
+Cette structure peut sembler lourde et redondante mais s'explique par plusieurs raisons :
+
+* Volonté d'intégrer d'autres écoles simplement
+  * Rajouter leurs groupes sur la BDD sigma
+  * Pas les obliger à rejoindre notre LDAP avec notre structure
+* Garder le LDAP X et le mettre à jour ; il est utilisé par beaucoup d'autres sites X
+* Enjeu de sécurité
+  * La BDD de sigma est public et ne comporte rien de compromettant
+  * La BDD accessible par LDAP de l'X qui contient des informations plus sensibles et qui doit être plus protégée
+
+Les deux sections suivantes détaillent les opérations possibles grâce au back directement sur les bases de données via sigma.
+
+### Guide: Knex.js
+
+L'interface en ligne de commande de [Knex.js](http://knexjs.org) contient les commandes suivantes :
+
+* `knex migrate:make migration_name` crée une migration dans `db/migrations/`
+* `knex migrate:latest` met à jour le schéma de la BDD
+* `knex seed:make filename` crée un _seed_ `seeds/filename`
+* `knex seed:run` insère les _seeds_ dans la BDD
+
+Un fichier _seed_ permet d'insérer des données dans la BDD. Ils sont stockés dans [`seeds`](../db/seeds).
+
+#### Comment faire une migration
+
+On utilisera l'interface en ligne de commande de Knex.js.
+
+Les migrations servent à **mettre à jour le schéma de la base de données**. Pour créer une migration, on lance la commande `knex migrate:make <nom_migration>`, qui crée un fichier `db/migrations/[hash]_nom_migration.js` où le hash est la date et l'heure.
+
+Maintenant, on édite le fichier de migration. Il fait deux exports, `exports.up` et `exports.down`, qui définissent respectivement comment mettre à jour le schéma de la BDD et comment annuler la modification si `knex migrate:rollback` est invoqué.
+
+Il faut se référer à la documentation de Knex.js pour comprendre comment écrire les requêtes. Voici un [cheatsheet](https://devhints.io/knex).
+
+### Fonctions LDAP
+
+On peut facilement explorer et modifier des éléments du LDAP de l'école depuis le réseau de l'X avec [JXplorer](http://jxplorer.org/) en entrant `frankiz` dans nouvelle connexion et en allant dans `net`.
+
+### Accéder à la BDD de sigma propre
+
+Pour accéder à la "vraie" BDD, sur roued (le serveur qui héberge sigma), il faut
+* se connecter dessus en `ssh roued`
+* passer en `sudo`
+* faire un `su postgres` pour se faire passer pour l'utilisateur unix postgres
+* se connecter à la BDD via la commande `psql`
+* faire les requetes en SQL par l'interface de postgreSQL.
+
+## Panneau d'administration
+
+### Authentification
+
+L'authentification se fait contre le LDAP en envoyant un requête HTTP POST à '/adminview/avlogin'. C'est une page distincte de '/login' qui est utilisé pour les requetes d'authentification à partir du client front, pour pouvoir facilement distinguer les deux comportements :
+- login depuis le panneau d'administration (POST à '/adminview/avlogin') : `passport.authenticate(...)` puis redirection vers GET '/adminview/admin'
+- login depuis le client front (requête POST à '/login']) : `passport.authenticate(...)` puis renvoyer une reponse au client
+
+### Accès direct à la BDD via knex
+
+Le panneau d'administration sert (ou plutôt, servira à terme) à accéder directement à la BDD propre de sigma. On accède à la table `table_name` par une requête GET à '/adminview/db/`table_name`' et aux colonnes `columns` de cette table par une requête GET à '/adminview/db/`table_name`?columns=`columns`.
+Ces pages sont protégées pour n'être accessibles qu'en étant authentifé.
+
+### GraphiQL et Voyager
+
+A partir du panneau d'admin, en faisant des requêtes GET à '/graphiql' et '/voyager' respectivement, on accède à GraphiQL et à GraphQL Voyager. Ces pages sont protégées pour n'être accessibles qu'en étant authentifé.
+
+
+## Appendixes
+
+### ESLint
+
+On utilisera ESLint pour standardiser le code : un ensemble de règles de style pour le code sont appliquées, et quelques-unes d'entre elles sont dans le fichier `.eslintrc.json`. Pour l'instant, la config ESLint impose d'utiliser quatre espaces pour les indentations et d'utiliser des points-virgule en fin de ligne.
+
+Il est préférable de l'installer **globalement** avec `npm install -g eslint`. Pour faire valider les fichiers source par ESLint, utilisez `npm run lint`.
+
+qui fait appel au script `eslint src/` défini dans le [`package.json`](../package.json). L'option `--fix` permet de corriger les fichiers.
+
+Sinon, si vous utilisez Atom ou Visual Studio Code pour éditer votre code, il existe des plugins qui font tourner ESLint en _live_ sur le code et vérifient que tout est en ordre.
+
+Pour mieux comprendre ESLint, référez-vous à la [doc](https://eslint.org/docs/user-guide/getting-started).
+
+
 ## Contact
 
 le BR 2016
+
+
diff --git a/README.md b/README.md
index 5462b36b3f7abd1d65f2796f90feb8ae66b178c2..6f61af13f678faa588d2d893c100f5272c661b80 100644
--- a/README.md
+++ b/README.md
@@ -35,93 +35,9 @@ Les dépendances les plus importantes sont knex.js, notre outil de gestion de BD
 
 Le serveur utilisé est [express.js](https://expressjs.com/) ; il est configuré dans [`server.js`](../src/server.js) puis lancé sur le port 3000 dans [`index.js`](../src/index.js).
 
-## Structure
-
-La structure générale du projet est détaillée ci-dessous ; pas d'inquiétude, la plupart des fichiers .js sont aussi extensivement documentés plus bas.
-
-* Racine du projet : fichiers de configuration ;
-  * config.json : données "sensibles" spécifique au projet à priori non partageable (adresse du LDAP, mots de passe),
-  * configfile_doc.json : JSDoc, l'outil de génération automatique de documentation,
-  * autres fichiers relatifs à des modules particuliers ou à la gestion de paquets,
-  * [`assets`](../assets) : ressources ;
-    * images et divers (dont l'essentiel flavicon)
-  * [`build`](../build) : dépendances gérées automatiquement ;
-    * bundle.js est un monstrueux fichier généré automatiquement qui gère nos dépendances.
-  * [`db`](../db) : base de donnée sigma ;
-  * knex_router.js charge la configuration précisée dans knexfile.js,
-    * [`migrations`](../db/migrations) stocke l'ensemble des migrations knex ; c'est un équivalent d'un répertoire git pour la BDD sigma (du coup seulement les groupes pas les individus),
-    * [`seeds`](../db/seeds) : stocke les éléments de générations des BDD ; c'est un ensemble de scripts.
-  * [`doc`](.) : documentation ;
-    * ensemble de pages html et fichiers associés ; index.html permet de naviguer sereinement sur toute la doc JSDoc.
-  * [`node_modules`](../node_modules) : gestion automatique des modules.
-  * [`src`](../src) : code source
-    * [`admin_view`](../src/admin_view) : gestion d'une interface administrateur de la base de donnée, s'appuie sur *css* et *views*
-    * [`ldap`](../src/ldap) : gestion des requêtes LDAP
-
-La syntaxe adoptée est JavaScript ES6, un standard moderne (2015) de JavaScript. Il permet d'importer des dépendances en utilisant le mot-clé `import`, ce que le serveur Node.js ne comprend pas puisque la version 8 de Node ne comprend que le standard ES5 (2009), qui gère les imports avec `require()`.
-
-## Base de données
-
-Sigma s'appuie sur deux bases de données :
-
-* La BDD frankiz accessible par LDAP hébergée sur un serveur de l'école, qui contient identifiants, mots de passe, et toutes les informations sur les utilisateurs et groupes spécifiques X.
-  * On y accède par des requêtes LDAP, d'où la nécessité de ldap.js.
-* La BDD de sigma propre est en [PostgreSQL](https://www.postgresql.fr/), hébergée en propre BR, qui contient les groupes et leurs niveaux de visibilité mais peu d'information sur les utilisateurs (seulement son école).
-  * Les requêtes à cette base de données sont gérées par [Knex.js](http://knexjs.org).
-
-Cette structure peut sembler lourde et redondante mais s'explique par plusieurs raisons :
-
-* Volonté d'intégrer d'autres écoles simplement
-  * Rajouter leurs groupes sur la BDD sigma
-  * Pas les obliger à rejoindre notre LDAP avec notre structure
-* Garder le LDAP X et le mettre à jour ; il est utilisé par beaucoup d'autres sites X
-* Enjeu de sécurité
-  * La BDD de sigma est public et ne comporte rien de compromettant
-  * La BDD accessible par LDAP de l'X qui contient des informations plus sensibles et qui doit être plus protégée
-
-Les deux sections suivantes détaillent les opérations possibles grâce au back directement sur les bases de données via sigma.
-
-### Guide: Knex.js
-
-L'interface en ligne de commande de [Knex.js](http://knexjs.org) contient les commandes suivantes :
-
-* `knex migrate:make migration_name` crée une migration dans `db/migrations/`
-* `knex migrate:latest` met à jour le schéma de la BDD
-* `knex seed:make filename` crée un _seed_ `seeds/filename`
-* `knex seed:run` insère les _seeds_ dans la BDD
-
-Un fichier _seed_ permet d'insérer des données dans la BDD. Ils sont stockés dans [`seeds`](../db/seeds).
-
-#### Comment faire une migration
-
-On utilisera l'interface en ligne de commande de Knex.js.
-
-Les migrations servent à **mettre à jour le schéma de la base de données**. Pour créer une migration, on lance la commande `knex migrate:make <nom_migration>`, qui crée un fichier `db/migrations/[hash]_nom_migration.js` où le hash est la date et l'heure.
-
-Maintenant, on édite le fichier de migration. Il fait deux exports, `exports.up` et `exports.down`, qui définissent respectivement comment mettre à jour le schéma de la BDD et comment annuler la modification si `knex migrate:rollback` est invoqué.
-
-Il faut se référer à la documentation de Knex.js pour comprendre comment écrire les requêtes. Voici un [cheatsheet](https://devhints.io/knex).
-
-### Fonctions LDAP
-
-On peut facilement explorer et modifier des éléments du LDAP de l'école depuis le réseau de l'X avec [JXplorer](http://jxplorer.org/) en entrant `frankiz` dans nouvelle connexion et en allant dans `net`.
-
-### Accéder à la BDD de sigma propre
-
-Pour accéder à la "vraie" BDD, sur roued (le serveur qui héberge sigma), il faut
-* se connecter dessus en `ssh roued`
-* passer en `sudo`
-* faire un `su postgres` pour se faire passer pour l'utilisateur unix postgres
-* se connecter à la BDD via la commande `psql`
-* faire les requetes en SQL par l'interface de postgreSQL.
-
 ## Panneau d'administration
 
-### Authentification
-
-L'authentification se fait contre le LDAP en envoyant un requête HTTP POST à '/adminview/avlogin'. C'est une page distincte de '/login' qui est utilisé pour les requetes d'authentification à partir du client front, pour pouvoir facilement distinguer les deux comportements :
-- login depuis le panneau d'administration (POST à '/adminview/avlogin') : `passport.authenticate(...)` puis redirection vers GET '/adminview/admin'
-- login depuis le client front (requête POST à '/login']) : `passport.authenticate(...)` puis renvoyer une reponse au client
+Il est accessible au path /adminview/admin ; n'importe quel path devrait rediriger dessus, ou alors vers /adminview/login. Les identifiants à utiliser sont ceux de Frankiz. L'authentification se fait par le LDAP Frankiz.
 
 ### Accès direct à la BDD via knex
 
@@ -132,6 +48,7 @@ Ces pages sont protégées pour n'être accessibles qu'en étant authentifé.
 
 A partir du panneau d'admin, en faisant des requêtes GET à '/graphiql' et '/voyager' respectivement, on accède à GraphiQL et à GraphQL Voyager. Ces pages sont protégées pour n'être accessibles qu'en étant authentifé.
 
+
 ## Scripts
 
 Les scripts sont des instructions en ligne de commande que l'on peut faire tourner avec la commande `npm run`. Ce sont des raccourcis pour gagner du temps sur des opérations un peu longues. Ils sont définis dans [`package.json`](../package.json).
@@ -159,17 +76,3 @@ La documentation détaillée du projet est [ici](./doc/index.html). Elle a été
 Les fichiers compilés se situent dans [`doc`](.) avec leurs fichiers image. Par nature de l'outil JSDoc il est facile de documenter en détail des fonctions .js mais plus compliqué de documenter un fichier.
 
 A la fin de ce fichier JSDoc rajjoute les commentaires placés dans chacun des fichiers et des hyperliens pour y accéder.
-
-## Appendixes
-
-### ESLint
-
-On utilisera ESLint pour standardiser le code : un ensemble de règles de style pour le code sont appliquées, et quelques-unes d'entre elles sont dans le fichier `.eslintrc.json`. Pour l'instant, la config ESLint impose d'utiliser quatre espaces pour les indentations et d'utiliser des points-virgule en fin de ligne.
-
-Il est préférable de l'installer **globalement** avec `npm install -g eslint`. Pour faire valider les fichiers source par ESLint, utilisez `npm run lint`.
-
-qui fait appel au script `eslint src/` défini dans le [`package.json`](../package.json). L'option `--fix` permet de corriger les fichiers.
-
-Sinon, si vous utilisez Atom ou Visual Studio Code pour éditer votre code, il existe des plugins qui font tourner ESLint en _live_ sur le code et vérifient que tout est en ordre.
-
-Pour mieux comprendre ESLint, référez-vous à la [doc](https://eslint.org/docs/user-guide/getting-started).
diff --git a/package.json b/package.json
index c2b626545e4862818fbaf580c322371eb13a8216..5f61029d8a1e344318dc9b15e677893634906026 100644
--- a/package.json
+++ b/package.json
@@ -2,7 +2,21 @@
   "name": "sigma-backend",
   "version": "0.0.1",
   "description": "Backend of sigma, the new Frankiz",
-  "main": "index.js",
+  "scripts": {
+    "build": "webpack --mode production",
+    "serve": "node build/bundle.js",
+    "dev": "webpack --mode development",
+    "watch": "webpack --watch --mode development",
+    "start": "nodemon --watch build build/bundle.js",
+    "doc": "jsdoc -c configfile_doc.json",
+    "lint": "eslint src/"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git@gitlab.binets.fr:br/sigma-backend"
+  },
+  "author": "Binet Réseau",
+  "license": "ISC",
   "dependencies": {
     "body-parser": "^1.18.2",
     "colors": "^1.2.3",
@@ -48,19 +62,5 @@
     "webpack": "^4.6.0",
     "webpack-cli": "^2.1.2",
     "webpack-node-externals": "^1.7.2"
-  },
-  "scripts": {
-    "start": "nodemon --watch build build/bundle.js",
-    "serve": "node build/bundle.js",
-    "lint": "eslint src/",
-    "build": "webpack --mode development",
-    "watch": "webpack --watch --mode development",
-    "doc": "jsdoc -c configfile_doc.json"
-  },
-  "repository": {
-    "type": "git",
-    "url": "git@gitlab.binets.fr:br/sigma-backend"
-  },
-  "author": "Binet Réseau",
-  "license": "ISC"
+  }
 }