diff --git a/README.md b/README.md
index 1b85b277cac47e63a0b894429997183da7b894e1..abfb8374ebd3b59287f31a2708697615d0bf66cf 100644
--- a/README.md
+++ b/README.md
@@ -73,7 +73,6 @@ npm run start # ou le raccourci: npm start
 Comme indiqué dans src/index.js, ceci lance un serveur servant l'application express sur le port 3000.
 
 ## Déployer dans un conteneur Docker
-
 L'image Docker est définie dans [`Dockerfile`](./Dockerfile). Il s'agit d'une distro Alpine avec Node.js et libstdc++. Lors du _build_ les dépendances _runtime_ dont dépend le `bundle.js` sont installées.
 
 Compiler l'image :
@@ -90,12 +89,10 @@ docker run -e LDAP_URI=ldap://172.17.0.1:8389 sigma-api
 ```
 
 ## Mode développement / staging / production
-
 TODO
 Ca a un rapport avec NODE_ENV ?
 
 ## Dépendances *npm*
-
 On utilise un serveur node.js avec [express.js](https://expressjs.com/). [^server]
 Utiliser Node.js permet d'utiliser facilement [*npm*](https://www.npmjs.com/) (Node Package Manager). Une "dépendance" est un package utilisé dans le projet.
 
@@ -123,7 +120,6 @@ Les dépendances principales utilisées sont
 - *ESlint*, pour le développement, outil de vérification syntaxique.
 
 ## 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).
 
 Les plus importants sont détaillées ci-dessous :
@@ -139,13 +135,11 @@ Les plus importants sont détaillées ci-dessous :
 Donc, lancer `npm run watch` dans un terminal et `npm run start` dans un autre permet de rebuilder **et** relancer automatiquement le serveur, après toute modification *du code source*.
 
 ## Configuration
-
 L'API est conçue pour êtes modulaire et pour fonctionner dans plusieurs environnements.
 
 On peut donc le configurer via des fichiers ou des variables d'environnement.
 
 ### Configuration LDAP
-
 L'API de Sigma nécessite de se connecter au LDAP Frankiz, à la fois pour obtenir des données et pour l'authentification des utilisateurs. Cela est fait à l'aide de la librairie [ldapjs](http://ldapjs.org) pour faire les requêtes au LDAP et [passportJS](http://www.passportjs.org/) pour l'authentification.
 
 * La configuration LDAP de base se situe dans [ldap_config.json](ldap_config.json).
@@ -197,24 +191,20 @@ On peut définir ces variables d'environnement, **dans l'ordre décroissant de p
     ```
 
 ## Panneau d'administration
-
 Il est accessible par navigateur au path `/adminview/admin` ; n'importe quel path devrait rediriger dessus. 
 
 L'accès y est protégé par une page d'authentification, les identifiants à utiliser sont ceux de Frankiz. 
 Le hruid (i.e. prenom.nom) de l'utilisateur doit de plus être sur une whitelist des hruid autorisés. Pour l'instant cette whitelist est hardcodée dans le code source.
 
 ### Accès direct à la BDD
-
 Le panneau d'administration sert (ou plutôt, servira à terme) à accéder directement à la BDD propre de sigma, grâce à une API REST. Autrement dit : 
 - 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`.
 
 ### GraphQL Voyager
-
 L'application Voyager, accessible à `/adminview/voyager`, permet de visualiser le « graphe » sous-jacent à la structure de l'API.
 
 ### GraphQL Playground
-
 == Attention, comme tout GraphQL Playground est géré directement par le package apollo-server-express, les requêtes dans le Playground **ne sont pas** soumises au mêmes règles de permission que dans adminview. (D'ailleurs, `/graphql` n'est même pas un sous-path de `/adminview`.) ==
 
 Accéder via un navigateur à `/graphql` renvoie l'application GraphQL Playground.
@@ -235,11 +225,14 @@ Les tests effectués sont dans test/testData.js, sous la forme d'une liste. Chaq
 [^doute_tests]: cette fonctionnalité n'a pas été utilisée ni testée depuis beaucoup trop de commits pour que cette partie soit fiable actuellement (2018-12-04).
 
 ## Documentation
-
 La documentation détaillée du projet est [ici](./doc/index.html). Elle a été compilée avec [JSDoc](http://usejsdoc.org/index.html) sous format hmtl selon le fichier de configuration [`configfile_doc.json`](./configfile_doc.json) à la racine du projet.
 
 Le script pour faire tourner [JSDoc](http://usejsdoc.org/index.html) et régénérer la documentation est : `npm run doc`
 
 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 rajoute les commentaires placés dans chacun des fichiers et des hyperliens pour y accéder.
+A chaque execution JSDoc rajoute les commentaires placés dans chacun des fichiers dans la doc de façon structurée.
+
+La structure générale du projet peut être résumé comme suit :
+
+![alt text](assets/struct.png "Structure du projet")
\ No newline at end of file
diff --git a/assets/struct.png b/assets/struct.png
new file mode 100644
index 0000000000000000000000000000000000000000..7c9e4abaeabc48289eb6b57c61c922a24e4d0594
Binary files /dev/null and b/assets/struct.png differ
diff --git a/src/app.ts b/src/app.ts
index b00bad015525a4ce72001ec51373e54447029afe..16810e7e0dd7d884f52c9492efee6a5784e11974 100644
--- a/src/app.ts
+++ b/src/app.ts
@@ -27,7 +27,7 @@ import morgan from 'morgan';
 // packages pour pouvoir importer des fichiers de config
 import path from 'path';
 // config des paramètres de connexion au LDAP
-import { ldapConfig, credentialsLdapConfig } from './ldap/config';
+import { ldapConfig, credentialsLdapConfig } from './ldap/internal/config';
 
 // configure passport, pour l'authentification ldap et pour comment gérer les sessions (serializeUser/deserializeUser)
 import './config_passport';
diff --git a/src/graphql/connectors/connectors.ts b/src/graphql/connectors/connectors.ts
index e995e40034289b0502f6b344a3cafad3868ee123..2e2aaba74cd7b687581635cb7c36301f563a2676 100644
--- a/src/graphql/connectors/connectors.ts
+++ b/src/graphql/connectors/connectors.ts
@@ -6,8 +6,8 @@ import knex from '../../../db/knex_router';
 import * as selectors from './selectors';
 import * as list_selectors from './list_selectors';
 
-import {Group as groupLdap, groupData} from '../../ldap/group';
-import {User as userLdap, userData} from '../../ldap/user';
+import {Group as groupLdap, groupData} from '../../ldap/export/group';
+import {User as userLdap, userData} from '../../ldap/export/user';
 import { isExportNamedDeclaration } from 'babel-types';
 import { admin } from './authentifiers';
 
diff --git a/src/graphql/new_connectors/connection.ts b/src/graphql/new_connectors/connection.ts
index 86a06e1c31cef562eae119a5a7ff9973992369b4..ea207de1b2c27c68d7396de48c86508b72f015f6 100644
--- a/src/graphql/new_connectors/connection.ts
+++ b/src/graphql/new_connectors/connection.ts
@@ -4,8 +4,8 @@
  */
 import knex from '../../../db/knex_router';
 
-import {Group as groupLdap, groupData} from '../../ldap/group';
-import {User as userLdap, userData} from '../../ldap/user';
+import {Group as groupLdap, groupData} from '../../ldap/export/group';
+import {User as userLdap, userData} from '../../ldap/export/user';
 import { isExportNamedDeclaration } from 'babel-types';
 
 import {GroupSet} from './authorisation';
@@ -13,7 +13,6 @@ import {GroupSet} from './authorisation';
 export class Group{
     gid : string;
     type : string; // simple or meta - not to be confused with category
-
     name? : string;
     category? : string;
     members? : string[];
diff --git a/src/ldap/group.ts b/src/ldap/export/group.ts
similarity index 99%
rename from src/ldap/group.ts
rename to src/ldap/export/group.ts
index 39d64ef1f3fcea144f373b04f0d52489499d4b7a..e7cba6a318342ad2ac905f2b00dd7c4c93f5987c 100644
--- a/src/ldap/group.ts
+++ b/src/ldap/export/group.ts
@@ -3,9 +3,9 @@
  * @author hawkspar
  */
 
-import {ldapConfig} from './config';
-import {LDAP} from './basics';
-import {Tools} from './utilities';
+import {ldapConfig} from '../internal/config';
+import {LDAP} from '../internal/basics';
+import {Tools} from '../internal/utilities';
 
 /**
  * @interface groupData
diff --git a/src/ldap/user.ts b/src/ldap/export/user.ts
similarity index 98%
rename from src/ldap/user.ts
rename to src/ldap/export/user.ts
index f2f9356801208824251f0d25cb1e7addc6e53995..cac82805916a4a067dd7141aa3e593b6af625a83 100644
--- a/src/ldap/user.ts
+++ b/src/ldap/export/user.ts
@@ -4,9 +4,9 @@
  * @author hawkspar
  */
 
-import {ldapConfig} from './config';
-import {LDAP} from './basics';
-import {Tools} from './utilities';
+import {ldapConfig} from '../internal/config';
+import {LDAP} from '../internal/basics';
+import {Tools} from '../internal/utilities';
 import {Group} from './group';
 
 /**
diff --git a/src/ldap/basics.ts b/src/ldap/internal/basics.ts
similarity index 100%
rename from src/ldap/basics.ts
rename to src/ldap/internal/basics.ts
diff --git a/src/ldap/config.ts b/src/ldap/internal/config.ts
similarity index 100%
rename from src/ldap/config.ts
rename to src/ldap/internal/config.ts
diff --git a/src/ldap/utilities.ts b/src/ldap/internal/utilities.ts
similarity index 99%
rename from src/ldap/utilities.ts
rename to src/ldap/internal/utilities.ts
index 28f4ce7278ba1bde6dc10c2c909952abaa145c84..f4b9613cde1dee830097724f6f7a749af1b801e1 100644
--- a/src/ldap/utilities.ts
+++ b/src/ldap/internal/utilities.ts
@@ -6,8 +6,8 @@
 
 import {ldapConfig} from './config';
 import {LDAP} from './basics';
-import {userData} from './user';
-import {groupData} from './group';
+import {userData} from '../export/user';
+import {groupData} from '../export/group';
 
 //------------------------------------------------------------------------------------------------------------------------
 // Fonctions intermédiaires TBT