diff --git a/client/src/Player.ts b/common/Player.ts
similarity index 82%
rename from client/src/Player.ts
rename to common/Player.ts
index fdc52c7c1e527e178ecc6b74098f82018fe2f9c0..fb603685c1ea16a7c14cc0514a1d5d07cf0c3fb0 100644
--- a/client/src/Player.ts
+++ b/common/Player.ts
@@ -1,8 +1,9 @@
+import { Socket } from "socket.io-client";
 import { Sushi } from "./Ressources.js";
 
 class Player {
   image = new Image();
-  name: Text;
+  name: string;
   id: number;
   x: number;
   y: number;
@@ -10,9 +11,17 @@ class Player {
   speed: number;
   direction: { x: number; y: number };
   imageId: number;
-  imageFolder: Text;
+  imageFolder: string;
   isDead: boolean;
-  constructor(x, y, radius, imageFolder, id, imageId, name) {
+  constructor(
+    x: number,
+    y: number,
+    radius: number,
+    imageFolder: string,
+    id: number,
+    imageId: number,
+    name: string
+  ) {
     this.name = name;
     this.id = id;
     this.x = x;
@@ -28,7 +37,7 @@ class Player {
     this.image.src = `/images/character/${this.imageFolder}/${this.imageFolder}${this.imageId}.png`;
     this.isDead = false;
   }
-  draw(ctx) {
+  draw(ctx: CanvasRenderingContext2D) {
     // Dessiner le cercle
     ctx.beginPath();
     ctx.drawImage(
@@ -57,8 +66,8 @@ class Player {
     }
   }
 
-  eatSushi(sushis, socket) {
-    sushis.forEach((sushi, idx) => {
+  eatSushi(sushis: Sushi[], socket: Socket) {
+    sushis.forEach((sushi: Sushi, idx) => {
       const dx = sushi.x - this.x;
       const dy = sushi.y - this.y;
       const distance = Math.sqrt(dx * dx + dy * dy);
diff --git a/client/src/Ressources.ts b/common/Ressources.ts
similarity index 69%
rename from client/src/Ressources.ts
rename to common/Ressources.ts
index 141d4efc4cfa1f8d2cfef4de703755461a765ead..76101ee28d08c2aed12c4ee815a9c5fd40876644 100644
--- a/client/src/Ressources.ts
+++ b/common/Ressources.ts
@@ -4,8 +4,14 @@ class Ressources {
   size: number;
   image: HTMLImageElement;
   drop: boolean;
-  name: Text;
-  constructor(name, x, y, size, image) {
+  name: string;
+  constructor(
+    name: string,
+    x: number,
+    y: number,
+    size: number,
+    image: HTMLImageElement
+  ) {
     this.name = name;
     this.x = x;
     this.y = y;
@@ -16,13 +22,13 @@ class Ressources {
 }
 
 export class Sushi extends Ressources {
-  constructor(x, y, size) {
+  constructor(x: number, y: number, size: number) {
     const backgroundImage = new Image();
     backgroundImage.src = "/images/sushi.png";
     super("sushi", x, y, size, backgroundImage);
   }
 
-  draw(ctx) {
+  draw(ctx: CanvasRenderingContext2D) {
     ctx.beginPath();
     ctx.drawImage(this.image, this.x, this.y, 25, 25);
     ctx.closePath();
diff --git a/client/src/Router.ts b/common/Router.ts
similarity index 89%
rename from client/src/Router.ts
rename to common/Router.ts
index e8ed3d39d030758ab7a75175c958256faf56433b..a2d5d400e247150d8ef83b201a1f8b0d417c8b9d 100644
--- a/client/src/Router.ts
+++ b/common/Router.ts
@@ -5,11 +5,11 @@ interface Route {
 export default class Router {
   routes: Route[];
   actualRoute: string;
-  constructor(routes) {
+  constructor(routes: Route[]) {
     this.routes = routes;
     this.actualRoute = routes[0].page;
   }
-  ChangePages(path) {
+  ChangePages(path: string) {
     for (let i = 0; i < this.routes.length; i++) {
       let actual = document.querySelector(`.${this.actualRoute}`);
       if (this.routes[i].path === path && actual) {
diff --git a/client/src/index.ts b/common/index.ts
similarity index 88%
rename from client/src/index.ts
rename to common/index.ts
index 8bb5b8f45c43288946db9b86bea5828a4caf62ee..934e0c13af68f485e70369800242c9a869e1db8d 100644
--- a/client/src/index.ts
+++ b/common/index.ts
@@ -16,7 +16,10 @@ for (let i = 0; i < links.length; i++) {
     e.preventDefault();
     let target = e.currentTarget as HTMLElement;
     if (target) {
-      router.ChangePages(target.getAttribute("href"));
+      let href = target.getAttribute("href");
+      if (href) {
+        router.ChangePages(href);
+      }
     }
   });
 }
@@ -49,6 +52,6 @@ if (startButton)
     e.preventDefault();
     if (playerName.length > 0) {
       router.ChangePages("/map");
-      Main(playerName, playerCharacter);
+      if (playerCharacter) Main(playerName, playerCharacter);
     }
   });
diff --git a/client/src/main.ts b/common/main.ts
similarity index 79%
rename from client/src/main.ts
rename to common/main.ts
index 5e41021bf9f176f6805a8b72066ee3508cc1cbd2..0f83b985663207cba28c1f5b34fe62b75ba57c01 100644
--- a/client/src/main.ts
+++ b/common/main.ts
@@ -1,9 +1,9 @@
 import Player from "./Player";
 import Router from "./Router";
 import { Sushi } from "./Ressources";
-import { io } from "socket.io-client";
+import { io, Socket } from "socket.io-client";
 
-const Main = (playerName, playerCharacter) => {
+const Main = (playerName: string, playerCharacter: string) => {
   const canvas = document.querySelector(".map") as HTMLCanvasElement;
   const ctx = canvas.getContext("2d") as CanvasRenderingContext2D;
 
@@ -29,53 +29,53 @@ const Main = (playerName, playerCharacter) => {
   const backgroundImage = new Image();
   backgroundImage.src = "/images/map.jpg";
 
-  document.addEventListener("keydown", (event) => {
-    event.preventDefault();
-    // Mettre à jour la direction en fonction des touches enfoncées
-    switch (event.keyCode) {
-      case 37: // Gauche
-        player.direction.x = -1;
-        break;
-      case 38: // Haut
-        player.direction.y = -1;
-        break;
-      case 39: // Droite
-        player.direction.x = 1;
-        break;
-      case 40: // Bas
-        player.direction.y = 1;
-        break;
-    }
-  });
+  // document.addEventListener("keydown", (event) => {
+  //   event.preventDefault();
+  //   // Mettre à jour la direction en fonction des touches enfoncées
+  //   switch (event.keyCode) {
+  //     case 37: // Gauche
+  //       player.direction.x = -1;
+  //       break;
+  //     case 38: // Haut
+  //       player.direction.y = -1;
+  //       break;
+  //     case 39: // Droite
+  //       player.direction.x = 1;
+  //       break;
+  //     case 40: // Bas
+  //       player.direction.y = 1;
+  //       break;
+  //   }
+  // });
 
-  document.addEventListener("keyup", (event) => {
-    event.preventDefault();
-    // Mettre à jour la direction en fonction des touches relâchées
-    switch (event.keyCode) {
-      case 37: // Gauche
-        if (player.direction.x < 0) {
-          player.direction.x = 0;
-        }
-        break;
-      case 38: // Haut
-        if (player.direction.y < 0) {
-          player.direction.y = 0;
-        }
-        break;
-      case 39: // Droite
-        if (player.direction.x > 0) {
-          player.direction.x = 0;
-        }
-        break;
-      case 40: // Bas
-        if (player.direction.y > 0) {
-          player.direction.y = 0;
-        }
-        break;
-    }
-  });
+  // document.addEventListener("keyup", (event) => {
+  //   event.preventDefault();
+  //   // Mettre à jour la direction en fonction des touches relâchées
+  //   switch (event.keyCode) {
+  //     case 37: // Gauche
+  //       if (player.direction.x < 0) {
+  //         player.direction.x = 0;
+  //       }
+  //       break;
+  //     case 38: // Haut
+  //       if (player.direction.y < 0) {
+  //         player.direction.y = 0;
+  //       }
+  //       break;
+  //     case 39: // Droite
+  //       if (player.direction.x > 0) {
+  //         player.direction.x = 0;
+  //       }
+  //       break;
+  //     case 40: // Bas
+  //       if (player.direction.y > 0) {
+  //         player.direction.y = 0;
+  //       }
+  //       break;
+  //   }
+  // });
 
-  function youAreDead(player) {
+  function youAreDead(player: Player) {
     // Récupération des dimensions du canvas
     let canvasWidthI = canvas.width;
     let canvasHeightI = canvas.height;
@@ -159,7 +159,7 @@ const Main = (playerName, playerCharacter) => {
     });
   }
 
-  const socket = io();
+  const socket: Socket = io();
 
   let sushis: Sushi[] = [];
   socket.on("sushis", (data) => {
@@ -187,7 +187,7 @@ const Main = (playerName, playerCharacter) => {
 
   async function myFunction() {
     try {
-      const userId = await getUserId();
+      const userId = (await getUserId()) as number;
       const player = new Player(
         Math.random() * (xEnd - xStart) + xStart,
         Math.random() * (-yStart + yEnd) + yStart,
@@ -229,8 +229,8 @@ const Main = (playerName, playerCharacter) => {
         );
       });
 
-      let mouseX;
-      let mouseY;
+      let mouseX: number;
+      let mouseY: number;
 
       canvas.addEventListener("mousemove", (event) => {
         event.preventDefault();
@@ -272,6 +272,8 @@ const Main = (playerName, playerCharacter) => {
           canvasWidth: canvas.width,
           canvasHeight: canvas.height,
           ctx: ctx,
+          ctxWidth: ctxWidth,
+          ctxHeight: ctxHeight,
         });
         player.eatSushi(sushis, socket);
         ctx.restore();
diff --git a/package.json b/package.json
index 705f1beee4efedbfb23efea1bcb8fd55e86a4699..833d0b97da082d5e26c1bfcffff2969b9365dfb2 100644
--- a/package.json
+++ b/package.json
@@ -2,15 +2,15 @@
     "name": "sae-2023-groupei-lasoa-gomis",
     "version": "1.0.0",
     "description": "",
-    "main": "server/index.js",
-    "type": "module",
+    "main": "server/index.ts",
+    "type": "commonjs",
     "scripts": {
         "build": "webpack --mode=production",
         "build:server": "tsc",
         "watch:server": "tsc --watch",
         "watch": "webpack --mode=development --watch",
         "start": "node .",
-        "dev": "nodemon server/index.js",
+        "dev": "nodemon server/index.ts",
         "test": "jest",
         "test:watch": "jest --watch"
     },
diff --git a/server/index.js b/server/index.ts
similarity index 75%
rename from server/index.js
rename to server/index.ts
index 799739f57f11892a58d2bf565983004f66a792fe..871d468b13f636585e9c109f8e9701390c70c991 100644
--- a/server/index.js
+++ b/server/index.ts
@@ -3,18 +3,28 @@ import http from "http";
 const app = express();
 const httpServer = http.createServer(app);
 import { Server as IOServer } from "socket.io";
+import Player from "../common/Player";
+import { Sushi } from "../common/Ressources";
 
 app.use("/", express.static("client/public"));
 
-let users = [];
+let users: Player[] = [];
 
-let sushis = [];
+let sushis: Partial<Sushi>[] = [];
 for (let i = 0; i < 900; i++) {
   sushis.push({ x: Math.random(), y: Math.random() }); //commit "implement kill Player" et push
 }
 
 //Player function
-function moveTo(player, x, y, canvasWidth, canvasHeight) {
+function moveTo(
+  player: Player,
+  x: number,
+  y: number,
+  canvasWidth: number,
+  canvasHeight: number,
+  ctxWidth: number,
+  ctxHeight: number
+) {
   const directionX = x - canvasWidth / 2;
   const directionY = y - canvasHeight / 2;
 
@@ -23,7 +33,16 @@ function moveTo(player, x, y, canvasWidth, canvasHeight) {
   player.direction.y = directionY / distance;
 }
 
-function move(player, ctx, mouseX, mouseY, canvasWidth, canvasHeight) {
+function move(
+  player: Player,
+  ctx: CanvasRenderingContext2D,
+  ctxWidth: number,
+  ctxHeight: number,
+  mouseX: number,
+  mouseY: number,
+  canvasWidth: number,
+  canvasHeight: number
+) {
   if (
     mouseX > canvasWidth / 2 - player.radius &&
     mouseX < canvasWidth / 2 + player.radius &&
@@ -39,15 +58,15 @@ function move(player, ctx, mouseX, mouseY, canvasWidth, canvasHeight) {
     player.x = player.radius + canvasWidth / 2;
   if (player.y < player.radius + canvasHeight / 2)
     player.y = player.radius + canvasHeight / 2;
-  if (player.x > ctx.width - player.radius - canvasWidth / 2) {
-    player.x = ctx.width - player.radius - canvasWidth / 2;
+  if (player.x > ctxWidth - player.radius - canvasWidth / 2) {
+    player.x = ctxWidth - player.radius - canvasWidth / 2;
   }
-  if (player.y > ctx.height - player.radius - canvasHeight / 2) {
-    player.y = ctx.height - player.radius - canvasHeight / 2;
+  if (player.y > ctxHeight - player.radius - canvasHeight / 2) {
+    player.y = ctxHeight - player.radius - canvasHeight / 2;
   }
 }
 
-function killPlayer(MyPlayer) {
+function killPlayer(MyPlayer: Player) {
   let deadPlayer;
   for (let i = 0; i < users.length; i++) {
     const player = users[i];
@@ -85,7 +104,9 @@ io.on("connection", (socket) => {
       data.mouseX,
       data.mouseY,
       data.canvasWidth,
-      data.canvasHeight
+      data.canvasHeight,
+      data.ctxWidth,
+      data.ctxHeight
     );
     move(
       player,
@@ -93,7 +114,9 @@ io.on("connection", (socket) => {
       data.mouseX,
       data.mouseY,
       data.canvasWidth,
-      data.canvasHeight
+      data.canvasHeight,
+      data.ctxWidth,
+      data.ctxHeight
     );
     let deadPlayer = killPlayer(player);
     for (let i = 0; i < users.length; i++) {
diff --git a/tsconfig.client.json b/tsconfig.client.json
index 083b9e2b6899f7b3ce1ce3d86e13563839d9381a..2ea6ae0211c612cd54fc5cab9af5dfab568915f2 100644
--- a/tsconfig.client.json
+++ b/tsconfig.client.json
@@ -1,7 +1,7 @@
 {
 	"extends": "./tsconfig.json",
 	"compilerOptions": {
-		"rootDir": "client/src",
+		"rootDir": "common",
 		"outDir": "client/public/build/",
 		"target": "ES5",
 		"module": "ES2022",