diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 45f2b650373fd5fd9f423e9fa838d9f479520766..90c3ea3b5754b79953b2bc40aa87dd831dfce4af 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -148,15 +148,18 @@ Le standard moderne permet d'importer des dépendances en utilisant le mot-clé
 
 ### ESLint
 
-On utilisera ESLint pour standardiser le code : un ensemble de règles de style pour le code sont appliquées, elles sont configurables dans le fichier `.eslintrc.json`. Par exemple, pour l'instant, la config ESLint impose d'utiliser quatre espaces pour les indentations et d'utiliser des points-virgule en fin de ligne.
+On utilise ESLint pour standardiser le style du code. 
+Il est ~~préférable~~ nécessaire de l'installer **globalement** avec `npm install -g eslint`.
 
-Il est préférable de l'installer **globalement** avec `npm install -g eslint`. Pour faire valider les fichiers source par ESLint, utiliser `npm run lint` [^lint-script]. L'option `--fix` permet de corriger les fichiers.
+Lors d'une validation ESLint, un ensemble de règles de style sont appliquées, elles sont configurables dans le fichier `.eslintrc.json`. Par exemple, actuellement, la config ESLint impose d'utiliser quatre espaces pour les indentations et d'utiliser des points-virgule en fin de ligne. 
+Les options de configuration sont bien expliquées dans la [doc dédiée](https://eslint.org/docs/rules/).
 
-[^lint-script]: qui fait appel au script `eslint src/` défini dans le [`package.json`](./package.json)
+ Pour faire valider les fichiers source par ESLint, utiliser `npm run lint` [^lint-script]. L'option `--fix` permet de corriger les fichiers.
+Les différentes façon d'exécuter une validation sont bien expliquées dans la [doc dédiée](https://eslint.org/docs/user-guide/command-line-interface).
 
-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.
+[^lint-script]: qui fait appel au script `eslint --ext .js --ext .ts src/ `, comme défini dans le [`package.json`](./package.json)
 
-Pour mieux comprendre ESLint, se référer à sa [doc](https://eslint.org/docs/user-guide/getting-started).
+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.
 
 ### nodemon
 
diff --git a/package.json b/package.json
index a99aefd15831e6dcca385b2684a422799e5b8292..8ad228be141383ec8234b77a04b0ef9b7e32008e 100644
--- a/package.json
+++ b/package.json
@@ -8,7 +8,7 @@
     "watch": "webpack --watch --mode development",
     "start": "nodemon --watch build ./build/bundle.js",
     "doc": "jsdoc --configure configfile_doc.json",
-    "lint": "eslint src/"
+    "lint": "eslint --ext .js --ext .ts src/ "
   },
   "repository": {
     "type": "git",
diff --git a/src/adminview/admin_router.ts b/src/adminview/admin_router.ts
index 62a0666f2ca2e8ec00bcf22716d0527ac99aec27..cf0f44cc0122c42ab41aef93b8e67934a0357f92 100644
--- a/src/adminview/admin_router.ts
+++ b/src/adminview/admin_router.ts
@@ -39,7 +39,7 @@ const whitelist = [
     "mew.two",
     "lippou.tou",
     "guillaume.wang",
-]
+];
 
 /**
  * @desc Création du Express router et setup de middlewares basiques
diff --git a/src/app.ts b/src/app.ts
index 2d4fe46cfffcb0f524499f26653d45575753c07d..b00bad015525a4ce72001ec51373e54447029afe 100644
--- a/src/app.ts
+++ b/src/app.ts
@@ -83,7 +83,7 @@ app.use(favicon(path.resolve(__dirname, 'assets', 'favicon.ico')));
  * https://blog.apollographql.com/a-guide-to-authentication-in-graphql-e002a4039d1
  */
 
- /**
+/**
  * it is also here that we define parameters for *session store*. https://redislabs.com/blog/cache-vs-session-store/
  * configure this right, as express-session docs warns that the default config is not good for prod!!
  * @todo [critical] configure express-session (session store and other options)
@@ -92,7 +92,7 @@ app.use(favicon(path.resolve(__dirname, 'assets', 'favicon.ico')));
  */
 // load data from the session identified by the cookie (if one exists), into req.session
 // on ne manipulera pas req.session directement, on laisser toujours passport le faire pour nous
- app.use(expressSession({
+app.use(expressSession({
     //secret: ldapConfig.sessionSecret, <-- wtf? nothing to do with ldap!
     secret: "asdfjklkjfdsasdfjklkljfdsa",
 
@@ -208,7 +208,7 @@ const context = async ({ req }) => {
         request: req,
         user: { uid, password }
     };
-}
+};
 
 const server = new ApolloServer({
     ...schema,
diff --git a/src/graphql/resolvers.ts b/src/graphql/resolvers.ts
index 0663d777eb31d24bcb9d7729dc7eaae74f4c5bbd..033ad4c2c8fdd45a20cf760b6e08630840948955 100644
--- a/src/graphql/resolvers.ts
+++ b/src/graphql/resolvers.ts
@@ -30,7 +30,7 @@ class ChevalierError {
     }
 
     toString(): String {
-        return this.message
+        return this.message;
     }
 }
 
diff --git a/src/ldap/config.ts b/src/ldap/config.ts
index 422e6b59865d187f63d9faad7b68d636647f156f..a05c02d720f3d5bb5188d273d76fd53df4a34034 100644
--- a/src/ldap/config.ts
+++ b/src/ldap/config.ts
@@ -7,8 +7,8 @@ import fs from 'fs';
 import path from 'path';
 import colors from 'colors';
 // Point central ; tous les champs de la BDD sont 'cachés' dans config.json et pas visibles directement
-let path_config = path.resolve('ldap_config.json')
-let path_credentials = path.resolve('ldap_credentials.json')
+let path_config = path.resolve('ldap_config.json');
+let path_credentials = path.resolve('ldap_credentials.json');
 console.log(colors.cyan("Loading LDAP config file from "+path_config));
 console.log(colors.cyan("Loading LDAP credentials from "+path_credentials));
 export const ldapConfig = JSON.parse(fs.readFileSync(path_config).toString());
diff --git a/src/ldap/users.ts b/src/ldap/users.ts
index 67c4a24b61b19653b322974cd60ea9aa1d0fa5d3..f8fbab0e313d736e688dbd26b15a059c4619096e 100644
--- a/src/ldap/users.ts
+++ b/src/ldap/users.ts
@@ -17,7 +17,7 @@ import ldap from 'ldapjs';
  * @var {string[]} members - Liste des membres du groupe
  * @var {string[]} admins - Liste des admins du groupe ; supposée être une sous-liste de la précédente
  */
-let groupDataTemplate = {}
+let groupDataTemplate = {};
 for (let key in ldapConfig.group.single)    { groupDataTemplate[key] = ""; }
 for (let key in ldapConfig.group.multiple)  { groupDataTemplate[key] = [""]; }
 
@@ -47,7 +47,7 @@ export type groupData = typeof groupDataTemplate;
  * @var {string[]} forlifes - Alias BR (attention le filtre .fkz n'est plus fonctionnel)
  * @var {string[]} groupsIsAdmin - Liste des gid dont le pax est admin ; supposé sous-liste de groups
  */
-let userDataTemplate = {}
+let userDataTemplate = {};
 for (let key in ldapConfig.user.single)    { userDataTemplate[key] = ""; }
 for (let key in ldapConfig.user.multiple)  { userDataTemplate[key] = [""]; }