diff --git a/README.md b/README.md
index 1c7567a47c365b23df95d364cb330290e9fdc46c..e500bc46c4d14822b94b6a2271e5f91a3ca69df3 100644
--- a/README.md
+++ b/README.md
@@ -38,6 +38,8 @@ In order to generate a pair of pem and key use the following command using opens
 
 `openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout server.key -out server.pem`
 
+## Generate documentation
+
 To generate the documentation you will need `apidoc` installed on your system.
 This can be completed by running `npm install -g apidoc`, if for some reason
 that does not work, you can clone their project from : https://github.com/apidoc/apidoc
@@ -49,7 +51,16 @@ To build the documentation, change enter the `jams-server` directory and simply
 
 You can then open `doc/index.html`. Click on 1.0.0 in the top right corner if the doc doesn't appear.
 
-##### Building the Docker container
+## Pre-commit hook
+
+The `extras` folder contains a pre-commit hook that formats every js file in
+`jams-react-client`. To enable it, run:
+```sh
+cp extras/scripts/pre-commit .git/hooks
+chmod +x .git/hooks/pre-commit
+```
+
+## Development Docker container:
 
 You can build the docker container using:
 
diff --git a/extras/scripts/pre-commit b/extras/scripts/pre-commit
new file mode 100755
index 0000000000000000000000000000000000000000..6bdbea5008dfb2ccac12e3ddcf5fe098bd6ec5d0
--- /dev/null
+++ b/extras/scripts/pre-commit
@@ -0,0 +1,4 @@
+#!/usr/bin/env bash
+
+cd jams-react-client
+npm run format
diff --git a/jams-react-client/src/components/CustomUiPreview/CustomUiPreview.js b/jams-react-client/src/components/CustomUiPreview/CustomUiPreview.js
index 4e0618061fa69b303bbd308883ce2db84e709a44..7ca6237a092916ab6415114981b778151e0beefb 100644
--- a/jams-react-client/src/components/CustomUiPreview/CustomUiPreview.js
+++ b/jams-react-client/src/components/CustomUiPreview/CustomUiPreview.js
@@ -138,7 +138,10 @@ export default function CustomUiPreview({
     hasTitle,
   });
 
-  const tip1 = i18next.t("preview_tip1", "Add a picture and a nickname to complete your profile");
+  const tip1 = i18next.t(
+    "preview_tip1",
+    "Add a picture and a nickname to complete your profile"
+  );
   const tip2 = i18next.t("preview_tip2", "Why should I save my account?");
   const tip3 = i18next.t("preview_tip3", "How to set shortcuts?");
 
@@ -149,16 +152,10 @@ export default function CustomUiPreview({
         <div className={classes.mainContent}>
           <div className={classes.welcomeRow}>
             {hasLogo ? (
-              <img
-                src={logoUrl}
-                alt="logo"
-                className={classes.logo}
-              ></img>
+              <img src={logoUrl} alt="logo" className={classes.logo}></img>
             ) : null}
             <div className={classes.welcomeCard}>
-              {hasTitle ? (
-                <h4 className={classes.title}>{title}</h4>
-              ) : null}
+              {hasTitle ? <h4 className={classes.title}>{title}</h4> : null}
               {hasDescription ? (
                 <p className={classes.description}>{description}</p>
               ) : null}
diff --git a/jams-react-client/src/views/Blueprint/EditBlueprintPermissions.js b/jams-react-client/src/views/Blueprint/EditBlueprintPermissions.js
index 3afd34ac4a65d2d9106d8ca940450d32e7967c95..acfaecb1f73fdd252a0480bf1d22376b60d3aa4d 100644
--- a/jams-react-client/src/views/Blueprint/EditBlueprintPermissions.js
+++ b/jams-react-client/src/views/Blueprint/EditBlueprintPermissions.js
@@ -39,9 +39,7 @@ import dashboardStyle from "assets/jss/material-dashboard-react/views/dashboardS
 
 import auth from "../../auth";
 import configApiCall from "../../api";
-import {
-  api_path_get_user_directory_search,
-} from "../../globalUrls";
+import { api_path_get_user_directory_search } from "../../globalUrls";
 
 import { PolicyDataContext } from "./PolicyDataContext";
 
diff --git a/jams-react-client/src/views/Blueprint/EditBlueprintUi.js b/jams-react-client/src/views/Blueprint/EditBlueprintUi.js
index 024b348c8ed459a5784a84e3727cc0671589339c..bc11a7e75adf5e23ff995f5995a12b8a33756a8f 100644
--- a/jams-react-client/src/views/Blueprint/EditBlueprintUi.js
+++ b/jams-react-client/src/views/Blueprint/EditBlueprintUi.js
@@ -111,7 +111,11 @@ export default function EditBlueprintUi({ blueprintName }) {
       ? newUiCustomization
       : DEFAULT_UI_CUSTOMIZATION;
 
-    if (field === "title" || field === "description" || field === "backgroundColor") {
+    if (
+      field === "title" ||
+      field === "description" ||
+      field === "backgroundColor"
+    ) {
       // Don't fade in for those fields
       setOldUiCustomization(newUiCustomization);
     } else {
diff --git a/jams-react-client/src/views/Blueprints/Blueprints.js b/jams-react-client/src/views/Blueprints/Blueprints.js
index 4643d58ba90ac447db2670b7164af24c64a7bc29..dbae9f46a77090897c6bacd73fa9a0b9f6dd5e40 100644
--- a/jams-react-client/src/views/Blueprints/Blueprints.js
+++ b/jams-react-client/src/views/Blueprints/Blueprints.js
@@ -291,10 +291,7 @@ export default function Blueprints() {
           </DialogContentText>
         </DialogContent>
         <DialogActions>
-          <Button
-            onClick={handleClose}
-            color="primary"
-          >
+          <Button onClick={handleClose} color="primary">
             {i18next.t("cancel", "Cancel")}
           </Button>
           <Button