Index: backend/controllers/taskController.js
===================================================================
--- backend/controllers/taskController.js	(revision 1f399913e2fcb2395d19692d69b98b779940ede9)
+++ backend/controllers/taskController.js	(revision 1f399913e2fcb2395d19692d69b98b779940ede9)
@@ -0,0 +1,61 @@
+const prisma = require('../lib/prisma');
+
+
+const getTaskByDate = async (req, res) => {
+    const { date } = req.params;
+
+    try {
+        const tasks = await prisma.challenges.findMany({
+            where: {
+                date: new Date(date),
+            },
+        });
+
+        if (tasks.length === 0) {
+            return res.status(404).json({ message: 'No tasks found for this date' });
+        }
+
+        res.status(200).json(tasks);
+    } catch (error) {
+        console.error('Error fetching tasks:', error);
+        res.status(500).json({ message: 'Internal server error' });
+    }
+}
+
+const updateAttemptsTask = async (req, res) => {
+    const { id } = req.params;
+
+    try {
+        const updatedTask = await prisma.challenges.update({
+            where: { id: parseInt(id) },
+            data: { attempts: { increment: 1 } },
+        });
+
+        res.status(200).json(updatedTask);
+    } catch (error) {
+        console.error('Error updating task attempts:', error);
+        res.status(500).json({ message: 'Internal server error' });
+    }
+}
+
+const updateSolvedTask = async (req, res) => {
+    const { id } = req.params;
+
+    try {
+        const updatedTask = await prisma.challenges.update({
+            where: { id: parseInt(id) },
+            data: { solved_by: { increment: 1 } },
+        });
+
+        res.status(200).json(updatedTask);
+    } catch (error) {
+        console.error('Error updating task attempts:', error);
+        res.status(500).json({ message: 'Internal server error' });
+    }
+}
+
+module.exports = {
+    getTaskByDate,
+    updateAttemptsTask,
+    updateSolvedTask,
+};
Index: backend/routers/taskRouter.js
===================================================================
--- backend/routers/taskRouter.js	(revision 1f399913e2fcb2395d19692d69b98b779940ede9)
+++ backend/routers/taskRouter.js	(revision 1f399913e2fcb2395d19692d69b98b779940ede9)
@@ -0,0 +1,7 @@
+const express = require('express');
+const router = express.Router();
+const taskController = require('../controllers/taskController');
+
+router.get('/task/:date', taskController.getTaskByDate);
+router.put('/task/:id', taskController.updateAttemptsTask);
+router.put('/task/:id', taskController.updateSolvedTask);
Index: backend/server.js
===================================================================
--- backend/server.js	(revision d5984af48c74206d11927d013642f3d3a7ab1093)
+++ backend/server.js	(revision 1f399913e2fcb2395d19692d69b98b779940ede9)
@@ -7,4 +7,5 @@
 const forumRouter = require('./routers/forumRouter');
 const reviewRouter = require('./routers/reviewRouter');
+const taskRouter = require('./routers/taskRouter');
 
 app.use(express.json());
@@ -19,4 +20,5 @@
 app.use('/forum', forumRouter);
 app.use('/review', reviewRouter);
+app.use('/task', taskRouter);
 app.get('/', indexRouter);
 app.use((req, res, next) => {
Index: client/src/Dashboard/components/Task.jsx
===================================================================
--- client/src/Dashboard/components/Task.jsx	(revision d5984af48c74206d11927d013642f3d3a7ab1093)
+++ client/src/Dashboard/components/Task.jsx	(revision 1f399913e2fcb2395d19692d69b98b779940ede9)
@@ -1,12 +1,87 @@
 import React, { useState } from 'react';
 import Navbar from './Navbar';
+import {useNavigate} from "react-router-dom";
 
 const Task = () => {
   const [showTask, setShowTask] = useState(false);
   const today = new Date().toLocaleDateString();
+  const user = JSON.parse(localStorage.getItem('user')) || { attempts: 0 };
+  const navigate = useNavigate();
+  const userOutput = document.getElementById('userOutput')?.value || '';
+
+  function fetchTaskForToday(date) {
+
+  }
 
   const handleStart = () => {
+    fetchTaskForToday(Date.now());
     setShowTask(true);
   };
+  function incrementAttempts(user) {
+    const updatedUser = {
+      ...user,
+      attempts: (user.attempts || 0) + 1,
+    };
+
+    localStorage.setItem("user", JSON.stringify(updatedUser));
+  }
+  function getMinutesSinceSevenAM(){
+    const now = new Date();
+    const sevenAM = new Date();
+    sevenAM.setHours(7, 0, 0, 0); // Set to 7:00 AM today
+    const diffMs = now.getTime() - sevenAM.getTime();
+    return Math.floor(diffMs / (1000 * 60)); // Convert to full minutes
+  }
+  function getTimeBonus() {
+    const minutes = getMinutesSinceSevenAM();
+    return Math.max(0, 60 - Math.floor(minutes * 0.0833));
+  }
+  function getAttemptScore(user) {
+    const attempts = user.attempts || 0;
+
+    switch (attempts) {
+      case 0: return 40;
+      case 1: return 30;
+      case 2: return 20;
+      case 3: return 10;
+      default: return 0;
+    }
+  }
+  function resetAttempts(user) {
+    const updatedUser = {
+      ...user,
+      attempts: 0,
+    };
+
+    localStorage.setItem("user", JSON.stringify(updatedUser));
+  }
+  function calculateTotalScore(user) {
+    return getTimeBonus() + getAttemptScore(user);
+  }
+
+  function incrementUserScore(user, score) {
+    const updatedUser = {
+      ...user,
+      points: (user.points || 0) + score,
+    };
+
+    localStorage.setItem("user", JSON.stringify(updatedUser));
+  }
+
+  function handleSubmit() {
+    if(userOutput === testCase.output){
+        incrementAttempts(user);
+        const score = calculateTotalScore(user);
+        incrementUserScore(user,score)
+        alert(`Correct! Your score is ${score} and your total points are now ${user.points}`);
+        resetAttempts(user);
+        navigate('/dashboard/forum');
+    }
+    else{
+        incrementAttempts(user);
+        alert(`Incorrect! Try again`);
+    }
+  }
+
 
   return (
@@ -146,4 +221,5 @@
                   <h3 className="card-title mb-4">Submit Your Solution</h3>
                   <input
+                      id="userOutput"
                     type="text"
                     placeholder="Enter your output here"
@@ -151,5 +227,5 @@
                   />
                   <div className="card-actions justify-end">
-                    <button className="btn border-amber-400 btn-lg">
+                    <button className="btn border-amber-400 btn-lg" onClick={handleSubmit}>
                       Submit Solution
                     </button>
Index: client/vite.config.js
===================================================================
--- client/vite.config.js	(revision d5984af48c74206d11927d013642f3d3a7ab1093)
+++ client/vite.config.js	(revision 1f399913e2fcb2395d19692d69b98b779940ede9)
@@ -29,4 +29,9 @@
         secure: false,
       },
+      "/task": {
+        target: "http://localhost:5001",
+        changeOrigin: true,
+        secure: false,
+      },
     },
   },
