diff --git a/Twidder (Lab3)/__pycache__/server.cpython-310.pyc b/Twidder (Lab3)/__pycache__/server.cpython-310.pyc
index 8b3cf9d8810871ddae71355c35d4efa59533d797..cf80ae791831a6db90d10bf6b22540a1d7baecea 100644
Binary files a/Twidder (Lab3)/__pycache__/server.cpython-310.pyc and b/Twidder (Lab3)/__pycache__/server.cpython-310.pyc differ
diff --git a/Twidder (Lab3)/database.db b/Twidder (Lab3)/database.db
index 65f3830459f6eb4eeac00519831c3d02ae1efa70..e206d1c7ac9e883e5e2080bc8f604578ce5cee97 100644
Binary files a/Twidder (Lab3)/database.db and b/Twidder (Lab3)/database.db differ
diff --git a/Twidder (Lab3)/server.py b/Twidder (Lab3)/server.py
index ea204889a36e3c85698a80843d18d25f9915740e..c126024c3480985f430df62b51f7c96827ae32e1 100644
--- a/Twidder (Lab3)/server.py	
+++ b/Twidder (Lab3)/server.py	
@@ -49,8 +49,11 @@ def sign_in():
             return "", 401
         else :
             token = generate_token()
+            value = {
+                "token" : token
+            }
             if database_helper.log_in(token, data['email']):
-                return token, 201
+                return jsonify(value), 201
             else:
                 return "", 409
     else:
diff --git a/Twidder (Lab3)/static/client.js b/Twidder (Lab3)/static/client.js
index c832ee339d044f3d048a95484e6136068ec82eca..cf894d693b8fe1e3df9d009cbacfd9653979250a 100644
--- a/Twidder (Lab3)/static/client.js	
+++ b/Twidder (Lab3)/static/client.js	
@@ -116,29 +116,44 @@ function signUp(formData) {
 //---------------------------------------SIGN IN---------------------------------------
 
 function signIn(formData) {
-  let username = formData.l_email.value;
-  let password = formData.l_password.value;
+  let user = {
+    email : formData.l_email.value,
+    password : formData.l_password.value
+  }
+  let messageDiv = document.getElementById("error");
 
-  let tokens;
+  if(user.password.length > 5) {
 
-  if(password.length > 5) {
-    let serverAnswer = serverstub.signIn(username, password);
-    let success = serverAnswer.success;
-    let message = serverAnswer.message;
-    let token = serverAnswer.data;
+    let req = new XMLHttpRequest();
+    req.open("POST", "/users/sign_in", true);
+    req.setRequestHeader("Content-type", "application/json;charset=UTF-8")
+    req.send(JSON.stringify(user));
 
-    if(success) {
-      localStorage.setItem("token", token);
-      localStorage.setItem("email_username", username);
-      openTab('homePage');
-    } else {
-      document.getElementById("error").style.display = "block";
-      document.getElementById("error").innerHTML = message;
+    req.onreadystatechange =  function(){
+      if (req.readyState == 4){
+        if (req.status == 201){
+          let resp = JSON.parse(req.responseText);
+          let token = resp.token;
+          localStorage.setItem("token", token);
+          localStorage.setItem("email_username", user.email);
+          displayProfilView();
+          openTab('homePage');
+        } else if(req.status == 409){
+          messageDiv.style.display = "block";
+          messageDiv.innerHTML = "User already connected!";
+        } else if(req.status == 400){
+          messageDiv.style.display = "block";
+          messageDiv.innerHTML = "Wrong data format!";
+        } else if(req.status == 401){
+          messageDiv.style.display = "block";
+          messageDiv.innerHTML = "Wrong username or password!";
+        }
+      }
     }
 
   } else {
-    document.getElementById("error").style.display = "block";
-    document.getElementById("error").innerHTML = "Your password is too short.";
+    messageDiv.style.display = "block";
+    messageDiv.innerHTML = "Your password is too short.";
   }
 
 }
@@ -146,22 +161,35 @@ function signIn(formData) {
 //---------------------------------------SIGN OUT---------------------------------------
 
 function signOut() {
-  let serverAnswer = serverstub.signOut(localStorage.getItem("token"));
-  let success = serverAnswer.success;
-  let message = serverAnswer.message;
+  let messageDiv = document.getElementById("error");
 
-  if(success) {
-    displayWelcomeView();
-    localStorage.removeItem("tab");
-    localStorage.removeItem("token");
-    localStorage.removeItem("browsed_email");
-    document.getElementById("displayprofil").innerHTML = "";
-    document.getElementById("displaywelcome").innerHTML = document.getElementById("welcomeview").innerHTML;
-    document.body.style.backgroundColor = "#0F98B7";
-  } else {
-    document.getElementById("error").style.display = "block";
-    document.getElementById("error").innerHTML = message;
+  let req = new XMLHttpRequest();
+  req.open("POST", "/users/sign_out", true);
+  req.setRequestHeader("Content-type", "application/json;charset=UTF-8")
+  req.setRequestHeader("token", localStorage.getItem("token"))
+  req.send(null);
+
+  req.onreadystatechange =  function(){
+    if (req.readyState == 4){
+      if (req.status == 200){
+        displayWelcomeView();
+        localStorage.removeItem("tab");
+        localStorage.removeItem("token");
+        localStorage.removeItem("browsed_email");
+        localStorage.removeItem("email_username");
+        document.getElementById("displayprofil").innerHTML = "";
+        document.getElementById("displaywelcome").innerHTML = document.getElementById("welcomeview").innerHTML;
+        document.body.style.backgroundColor = "#0F98B7";
+      } else if(req.status == 401){
+        messageDiv.style.display = "block";
+        messageDiv.innerHTML = "User not connected";
+      } else if(req.status == 400){
+        messageDiv.style.display = "block";
+        messageDiv.innerHTML = "Wrong data format!";
+      }
+    }
   }
+
 }
 
 //---------------------------------------MESSAGE MANAGEMENT---------------------------------------