diff --git a/.eslintrc.cjs b/.eslintrc.cjs
index c9dd776..80d8409 100644
--- a/.eslintrc.cjs
+++ b/.eslintrc.cjs
@@ -78,7 +78,7 @@
     '@typescript-eslint/no-explicit-any': 'off',
     '@typescript-eslint/no-unused-vars': 'off',
     camelcase: 'error',
-    eqeqeq: ['warn', 'smart'],
+    eqeqeq: ['error', 'smart'],
     'header/header': header,
     'no-constant-condition': ['error', { checkLoops: false }],
     'simple-import-sort/exports': 'warn',
diff --git a/Dockerfile b/Dockerfile
index a1fde74..40d78d9 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -16,7 +16,7 @@
 COPY client/package*.json client/
 COPY server/package*.json server/
 COPY common common
-COPY server/misc server/misc
+COPY server/scripts server/scripts
 COPY tsconfig.json ./
 
 RUN npm ci
diff --git a/JamiDaemon.ts b/JamiDaemon.ts
index 56a8c1d..340e2e5 100755
--- a/JamiDaemon.ts
+++ b/JamiDaemon.ts
@@ -129,7 +129,7 @@
             console.log(`Unknown account ${accountId}`);
             return;
           }
-          if (state == 0) {
+          if (state === 0) {
             const contact = account.getContactFromCache(address);
             if (!contact.isRegisteredNameResolved()) contact.setRegisteredName(name);
           }
@@ -281,8 +281,8 @@
               new Promise((resolve: (value: LookupResolveValue) => void, reject) =>
                 account.lookups.push({ address: member.uri, resolve, reject })
               ).then((result) => {
-                if (result.state == 0) return result.name;
-                else if (result.state == 1) return undefined;
+                if (result.state === 0) return result.name;
+                else if (result.state === 1) return undefined;
                 else return null;
               })
             );
diff --git a/package.json b/package.json
index 2655563..c07f9ff 100644
--- a/package.json
+++ b/package.json
@@ -30,7 +30,7 @@
       "eslint --fix",
       "prettier --write"
     ],
-    "*.{json,md}": [
+    "*.{json,md,scss}": [
       "prettier --write"
     ]
   },
diff --git a/routes/jami.js b/routes/jami.js
index 4f5de6d..c5f59bb 100644
--- a/routes/jami.js
+++ b/routes/jami.js
@@ -247,8 +247,8 @@
       this.jami
         .lookupName(req.params.accountId || '', req.params.nameQuery)
         .then((result) => {
-          if (result.state == 0) res.json(result);
-          else if (result.state == 1) res.status(400).json({});
+          if (result.state === 0) res.json(result);
+          else if (result.state === 1) res.status(400).json({});
           else res.status(404).json({});
         })
         .catch((e) => {
@@ -261,8 +261,8 @@
       this.jami
         .lookupAddress(req.params.accountId || '', req.params.addrQuery)
         .then((result) => {
-          if (result.state == 0) res.json(result);
-          else if (result.state == 1) res.status(400).json({});
+          if (result.state === 0) res.json(result);
+          else if (result.state === 1) res.status(400).json({});
           else res.status(404).json({});
         })
         .catch((e) => {
