diff --git a/server.js b/server.js
index 9d7540e423e40d7ad81a9f8e801bffc7d69e4f92..743ac83a5414c8945a3fa324152cdb7edaccf7f1 100644
--- a/server.js
+++ b/server.js
@@ -15,7 +15,6 @@ app.use(express.static('public'));
 io.on('connection', (socket) => {
   console.log('A user connected:', socket.id);
 
-  // Create a room
   socket.on('createRoom', (playerName) => {
     const roomCode = Math.random().toString(36).substring(2, 7).toUpperCase();
     rooms[roomCode] = { 
@@ -31,7 +30,6 @@ io.on('connection', (socket) => {
     console.log(`Room created with code ${roomCode} by ${playerName}`);
   });
 
- // Join a room
 socket.on('joinRoom', ({ roomCode, playerName, playerId }) => {
     const room = rooms[roomCode];
 
@@ -53,8 +51,6 @@ socket.on('joinRoom', ({ roomCode, playerName, playerId }) => {
     }
 });
 
-
-
   socket.on('gameSettings', ({ roomCode, category, difficulty, numQuestions }) => {
     if (rooms[roomCode]) {
       rooms[roomCode].settings = { category, difficulty, numQuestions };
@@ -88,20 +84,50 @@ socket.on('joinRoom', ({ roomCode, playerName, playerId }) => {
   });
 
   socket.on('nextQuestion', (roomCode) => {
-    sendNextQuestion(roomCode);
-  });
+    const room = rooms[roomCode];
+    if (!room) return;
+
+    if (room.timer) {
+        clearInterval(room.timer);
+        room.timer = null;
+    }
+
+    sendNextQuestion(roomCode); 
+});
 
   function sendNextQuestion(roomCode) {
-    const room = rooms[roomCode];
-    if (room && room.questions.length > 0) {
-      room.questions.shift();
-      if (room.questions.length > 0) {
-        io.to(roomCode).emit('newQuestion', room.questions[0]);
-      } else {
+    const room = rooms[roomCode]; 
+    if (!room) return; 
+
+    if (room.questions.length > 0) {
+        const currentQuestion = room.questions.shift(); 
+        io.to(roomCode).emit('newQuestion', currentQuestion); 
+
+        if (room.timer) {
+            clearInterval(room.timer); 
+            room.timer = null; 
+        }
+
+        room.timeRemaining = 60; 
+        room.timer = setInterval(() => {
+            room.timeRemaining -= 1; 
+            io.to(roomCode).emit('timerUpdate', room.timeRemaining); 
+
+            if (room.timeRemaining <= 0) {
+                clearInterval(room.timer); 
+                room.timer = null; 
+                sendNextQuestion(roomCode); 
+            }
+        }, 1000); 
+    } else {
         determineWinner(roomCode);
-      }
+
+        if (room.timer) {
+            clearInterval(room.timer); 
+            room.timer = null;
+        }
     }
-  }
+}
 
   function determineWinner(roomCode) {
     const room = rooms[roomCode];
@@ -109,29 +135,40 @@ socket.on('joinRoom', ({ roomCode, playerName, playerId }) => {
 
     const players = Object.entries(room.players);
     const winner = players.reduce((topPlayer, [id, player]) => {
-      return player.score > topPlayer.score ? player : topPlayer;
+        return player.score > topPlayer.score ? player : topPlayer;
     }, { name: 'No one', score: 0 });
 
     io.to(roomCode).emit('gameOver', {
-      winner: { name: winner.name, score: winner.score },
-      scores: Object.values(room.players).map(player => ({
-        name: player.name,
-        score: player.score
-      }))
+        winner: { name: winner.name, score: winner.score },
+        scores: Object.values(room.players).map(player => ({
+            name: player.name,
+            score: player.score
+        }))
     });
 
-    delete rooms[roomCode]; 
-  }
+    if (room.timer) {
+        clearInterval(room.timer); 
+        room.timer = null;
+    }
+
+    delete rooms[roomCode];
+}
 
   socket.on('disconnect', () => {
-    console.log('User disconnected:', socket.id);
-    for (const roomCode of Object.keys(rooms)) {
-      if (rooms[roomCode].players[socket.id]) {
-        delete rooms[roomCode].players[socket.id];
-        console.log(`User ${socket.id} removed from room ${roomCode}`);
+  console.log('User disconnected:', socket.id);
+  for (const roomCode of Object.keys(rooms)) {
+    if (rooms[roomCode].players[socket.id]) {
+      delete rooms[roomCode].players[socket.id];
+      console.log(`User ${socket.id} removed from room ${roomCode}`);
+      if (Object.keys(rooms[roomCode].players).length === 0) {
+                if (rooms[roomCode].timer) {
+                    clearInterval(rooms[roomCode].timer); 
+                }
+                delete rooms[roomCode];
       }
     }
-  });
+  }
+ });
 });
 
 function fetchQuestions(category, difficulty, numQuestions) {
@@ -169,4 +206,3 @@ function shuffleArray(array) {
 }
 
 server.listen(PORT, () => console.log(`Server is running on http://localhost:${PORT}`));
-