diff --git a/public/script.js b/public/script.js
index eab5ec9a0ff3f5a2cd70325f0e78dbe1b2d6494e..2513469e885d524ed0e74453d5c4e0aedb059c0e 100644
--- a/public/script.js
+++ b/public/script.js
@@ -4,6 +4,7 @@ let questions = [];
 let roomCode = null;
 let isRoomCreator = false;
 let playerName = null;
+let timerInterval; 
 
 window.onload = () => {
     const params = new URLSearchParams(window.location.search);
@@ -25,14 +26,20 @@ function generatePlayerId() {
 }
 
 document.getElementById('startGame').addEventListener('click', () => {
-    const inputRoomCode = prompt('Enter room code to join or leave blank to create a new room:');
-    playerName = prompt('Enter your name:'); 
+    document.getElementById('playModal').style.display = 'flex';
+});
+
+document.getElementById('modalPlayButton').addEventListener('click', () => {
+    const inputRoomCode = document.getElementById('modalRoomCode').value.trim();
+    const playerName = document.getElementById('modalPlayerName').value.trim();
 
-    if (!playerName || playerName.trim() === '') {
+    if (!playerName) {
         alert('Name is required to join the game!');
         return;
     }
 
+    document.getElementById('playModal').style.display = 'none';
+
     if (inputRoomCode) {
         roomCode = inputRoomCode;
         socket.emit('joinRoom', { roomCode, playerName });
@@ -42,20 +49,40 @@ document.getElementById('startGame').addEventListener('click', () => {
     }
 });
 
+document.getElementById('modalExitButton').addEventListener('click', () => {
+    document.getElementById('playModal').style.display = 'none';
+
+    document.querySelector('.home').style.display = 'flex'; 
+    document.querySelector('.header').style.display = 'flex';
+    document.getElementById('gameArea').style.display = 'none'; 
+    document.getElementById('endGameArea').style.display = 'none';
+    document.getElementById('modalRoomCode').value = '';
+    document.getElementById('modalPlayerName').value = '';
+});
+
 socket.on('roomCreated', (generatedRoomCode) => {
     roomCode = generatedRoomCode;
-    alert(`Room created! Room code: ${roomCode}`);
 
-    if (isRoomCreator) {
-        const numQuestions = document.getElementById('numQuestions').value;
-        const category = document.getElementById('category').value;
-        const difficulty = document.getElementById('difficulty').value;
+    const roomCreatedModal = document.getElementById('roomCreatedModal');
+    roomCreatedModal.style.display = 'flex';
 
-        socket.emit('gameSettings', { roomCode, category, difficulty, numQuestions });
-    }
+    const roomCodeDisplay = document.getElementById('roomCodeDisplay');
+    roomCodeDisplay.querySelector('strong').textContent = roomCode;
 
-    updateUrlWithParams({ roomCode, playerName }); 
-    transitionToGameScreen();
+    document.getElementById('roomCreatedContinueButton').addEventListener('click', () => {
+        roomCreatedModal.style.display = 'none'; 
+
+        if (isRoomCreator) {
+            const numQuestions = document.getElementById('numQuestions').value;
+            const category = document.getElementById('category').value;
+            const difficulty = document.getElementById('difficulty').value;
+
+            socket.emit('gameSettings', { roomCode, category, difficulty, numQuestions });
+        }
+
+        updateUrlWithParams({ roomCode, playerName }); 
+        transitionToGameScreen();
+    });
 });
 
 socket.on('roomJoined', () => {
@@ -69,7 +96,7 @@ socket.on('error', (message) => {
 });
 
 socket.on('startGameWithSettings', () => {
-    alert("Game is starting!");
+    alert("Click 'OK' to begin the game!");
 });
 
 socket.on('newQuestion', (question) => {
@@ -88,37 +115,49 @@ function displayQuestion(question) {
         optionsContainer.appendChild(btn);
     });
 
-    startTimer(60);
+    startTimer(30);
 }
 
+socket.on('timeUp', ({ correctAnswer }) => {
+    alert(`Time's up! The correct answer was: ${decodeHtml(correctAnswer)}`);
+    socket.emit('nextQuestion', roomCode);
+});
+
 function startTimer(seconds) {
     const timerElement = document.getElementById('timer');
     let timeLeft = seconds;
 
+    if (timerInterval) {
+        clearInterval(timerInterval);
+    }
+
     const updateTimer = () => {
         if (timeLeft > 0) {
-            timerElement.textContent = `Time left: ${timeLeft} seconds`;
+            timerElement.textContent = `Time: ${timeLeft} seconds`;
             timeLeft--;
         } else {
             timerElement.textContent = `Time's up!`;
-            socket.emit('nextQuestion', roomCode); 
-            clearInterval(timerInterval); 
+            clearInterval(timerInterval);
         }
     };
 
-    updateTimer(); 
-    const timerInterval = setInterval(updateTimer, 1000);
+    updateTimer();
+    timerInterval = setInterval(updateTimer, 1000);
 }
 
 function checkAnswer(selectedAnswer, correctAnswer) {
-    const isCorrect = selectedAnswer === correctAnswer;
-    if (isCorrect) score++;
-
-    document.getElementById('score').textContent = `Score: ${score}`;
-    alert(isCorrect ? "Correct!" : `Wrong! The correct answer was: ${decodeHtml(correctAnswer)}`);
+    socket.emit('submitAnswer', { roomCode, answer: selectedAnswer });
+}
 
+socket.on('answerResult', ({ correct, correctAnswer }) => {
+    alert(correct ? "Correct!" : `Wrong! The correct answer was: ${decodeHtml(correctAnswer)}`);
     socket.emit('nextQuestion', roomCode);
-}
+});
+
+socket.on('scoreUpdate', (newScore) => {
+    score = newScore;
+    document.getElementById('score').textContent = `Score: ${score}`;
+});
 
 socket.on('gameOver', ({ winner, scores }) => {
     const winnerMessage = winner 
@@ -131,13 +170,21 @@ socket.on('gameOver', ({ winner, scores }) => {
     });
 
     alert(`${winnerMessage}\n${scoreDetails}`);
-    resetGameUI();
+    socket.disconnect();
+    window.location.href = '/';
+});
+
+socket.on('connect', () => {
+    console.log('A user connected:', socket.id);
 });
 
 function resetGameUI() {
-    document.querySelector('.home').style.display = 'block';
-    document.querySelector('.header').style.display = 'block';
+    document.querySelector('.home').style.display = 'flex';
+    document.querySelector('.header').style.display = 'flex';
+
     document.getElementById('gameArea').style.display = 'none';
+    document.getElementById('endGameArea').style.display = 'none';
+
     score = 0;
     questions = [];
 }
@@ -161,4 +208,3 @@ function updateUrlWithParams(params) {
     });
     window.history.pushState({}, '', currentUrl); 
 }
-