Index: backend/controllers/taskController.js
===================================================================
--- backend/controllers/taskController.js	(revision 229181032a0b6c2b6df07c1fc361064d48f414ed)
+++ backend/controllers/taskController.js	(revision 4ed3b3c5203155c561d558647f5af4d2c76dd82f)
@@ -1,2 +1,3 @@
+const { get } = require('http');
 const prisma = require('../lib/prisma');
 
@@ -128,4 +129,28 @@
   }
 };
+const RANK_DATA = {
+  Novice: { id: 1, title: 'Novice', requiredPoints: 0 },
+  Learner: { id: 2, title: 'Learner', requiredPoints: 300 },
+  Coder: { id: 3, title: 'Coder', requiredPoints: 800 },
+  'Problem Solver': { id: 4, title: 'Problem Solver', requiredPoints: 1500 },
+  Algorithmist: { id: 5, title: 'Algorithmist', requiredPoints: 2500 },
+  'Hacker Mage': { id: 6, title: 'Hacker Mage', requiredPoints: 4000 },
+  Challenger: { id: 7, title: 'Challenger', requiredPoints: 6000 },
+  'Code Master': { id: 8, title: 'Code Master', requiredPoints: 8500 },
+  'FINKI Royalty': { id: 9, title: 'FINKI Royalty', requiredPoints: 11000 },
+  'FINKI Legend': { id: 10, title: 'FINKI Legend', requiredPoints: 16000 },
+};
+
+function getRankByPoints(points) {
+  const ranks = Object.values(RANK_DATA).sort(
+    (a, b) => b.requiredPoints - a.requiredPoints
+  );
+  for (const rank of ranks) {
+    if (points >= rank.requiredPoints) {
+      return rank;
+    }
+  }
+  return RANK_DATA['Novice'];
+}
 
 function getMinutesSinceSevenAM() {
@@ -147,16 +172,10 @@
 
 function getAttemptScore(attempts) {
-  switch (attempts) {
-    case 1:
-      return 40;
-    case 2:
-      return 30;
-    case 3:
-      return 20;
-    case 4:
-      return 10;
-    default:
-      return 0;
-  }
+  const maxScore = 40;
+  const decayPerAttempt = 5;
+  const minScore = 5;
+
+  const score = maxScore - (attempts - 1) * decayPerAttempt;
+  return Math.max(minScore, score);
 }
 
@@ -229,16 +248,19 @@
     });
 
-    const taskOutputType = await prisma.challenges.findUnique({
+    const task = await prisma.challenges.findUnique({
       where: {
         id: taskId,
       },
-      select: {
-        output_type: true,
-      },
-    });
-    if (isOutputCorrect(userOutput, testCase.output, taskOutputType)) {
+    });
+    if (isOutputCorrect(userOutput, testCase.output, task.output_type)) {
       const timeBonus = getTimeBonus();
       const attemptScore = getAttemptScore(attempts + 1);
-      const totalScore = timeBonus + attemptScore;
+      const difficultyScore =
+        task.difficulty === 'easy'
+          ? 10
+          : task.difficulty === 'medium'
+          ? 20
+          : 30;
+      const totalScore = timeBonus + attemptScore + difficultyScore;
 
       const updatedUser = await prisma.users.update({
@@ -257,4 +279,6 @@
         responseUser.points = responseUser.points.toString();
       }
+
+      const userRank = getRankByPoints(responseUser.points);
       await prisma.challenges.update({
         where: { id: taskId },
@@ -267,4 +291,6 @@
         scoreAwarded: totalScore,
         newTotalPoints: responseUser.points,
+        rank: userRank.title,
+        rankInfo: userRank,
       });
     } else {
Index: client/src/Dashboard/components/Task.jsx
===================================================================
--- client/src/Dashboard/components/Task.jsx	(revision 229181032a0b6c2b6df07c1fc361064d48f414ed)
+++ client/src/Dashboard/components/Task.jsx	(revision 4ed3b3c5203155c561d558647f5af4d2c76dd82f)
@@ -165,5 +165,5 @@
         updatedUserFromStorage.points = result.newTotalPoints;
         updatedUserFromStorage.solvedDailyChallenge = true; // Assuming backend sets this
-        updatedUserFromStorage.attempts = 0; // Assuming backend resets this
+        updatedUserFromStorage.rank = result.rank; // Assuming backend resets this
         localStorage.setItem('user', JSON.stringify(updatedUserFromStorage));
 
Index: client/src/LandingPage/LandingPage.jsx
===================================================================
--- client/src/LandingPage/LandingPage.jsx	(revision 229181032a0b6c2b6df07c1fc361064d48f414ed)
+++ client/src/LandingPage/LandingPage.jsx	(revision 4ed3b3c5203155c561d558647f5af4d2c76dd82f)
@@ -1,13 +1,13 @@
-import React from "react";
-import Hero from "./components/Hero";
-import VisionSection from "./components/VisionSection";
-import Footer from "./components/Footer";
-import Intro from "./components/Intro";
-import NavbarLanding from "./components/NavbarLanding";
-import LeaderBoardEx from "@/LandingPage/components/LeaderBoardEx.jsx";
+import React from 'react';
+import Hero from './components/Hero';
+import VisionSection from './components/VisionSection';
+import Footer from './components/Footer';
+import Intro from './components/Intro';
+import NavbarLanding from './components/NavbarLanding';
+import LeaderBoardEx from '@/LandingPage/components/LeaderBoardEx.jsx';
 
 const LandingPage = () => {
   return (
-    <div data-theme="luxury">
+    <div data-theme="luxury" className="h-screen overflow-y-auto">
       <NavbarLanding />
       <Hero />
Index: client/src/LandingPage/components/LeaderBoardEx.jsx
===================================================================
--- client/src/LandingPage/components/LeaderBoardEx.jsx	(revision 229181032a0b6c2b6df07c1fc361064d48f414ed)
+++ client/src/LandingPage/components/LeaderBoardEx.jsx	(revision 4ed3b3c5203155c561d558647f5af4d2c76dd82f)
@@ -1,6 +1,6 @@
-import Navbar from "@/Dashboard/components/Navbar";
-import { useEffect, useState } from "react";
-import { useLocation } from "react-router-dom";
-import RankBadge from "../../utils/RankBadge";
+import Navbar from '@/Dashboard/components/Navbar';
+import { useEffect, useState } from 'react';
+import { useLocation } from 'react-router-dom';
+import RankBadge from '../../utils/RankBadge';
 
 const LeaderBoardEx = () => {
@@ -15,7 +15,7 @@
 
   useEffect(() => {
-    if (location.pathname === "/") {
+    if (location.pathname === '/') {
       setLanding(true);
-    } else if (location.pathname === "/dashboard/leaderboard") {
+    } else if (location.pathname === '/dashboard/leaderboard') {
       setLanding(false);
     }
@@ -38,7 +38,7 @@
         }/functions/v1/leaderboard?page=${page}&limit=20`,
         {
-          method: "GET",
+          method: 'GET',
           headers: {
-            "Content-Type": "application/json",
+            'Content-Type': 'application/json',
             Authorization: `Bearer ${import.meta.env.VITE_SUPABASE_ANON_KEY}`,
           },
@@ -53,5 +53,5 @@
 
       if (data.error) {
-        throw new Error(data.message || "Failed to fetch leaderboard");
+        throw new Error(data.message || 'Failed to fetch leaderboard');
       }
 
@@ -65,5 +65,5 @@
       setPagination(data.pagination);
     } catch (err) {
-      console.error("Error fetching leaderboard:", err);
+      console.error('Error fetching leaderboard:', err);
       setError(err.message);
     } finally {
@@ -138,5 +138,5 @@
       <div className="flex w-full flex-col justify-center items-center p-20 gap-10">
         <h1 className="text-4xl font-bold">Leaderboard</h1>
-        <p>WARNING: The leaderboard updates every 5 minutes</p>
+        <p>Note: The leaderboard updates every 5 minutes</p>
 
         {pagination && (
@@ -187,5 +187,5 @@
           <button
             className={`btn btn-lg ${
-              loadingMore ? "btn-disabled" : "btn-primary"
+              loadingMore ? 'btn-disabled' : 'btn-primary'
             }`}
             onClick={handleLoadMore}
@@ -198,5 +198,5 @@
               </>
             ) : (
-              "Load More"
+              'Load More'
             )}
           </button>
@@ -205,5 +205,5 @@
         {pagination && !pagination.hasNextPage && leaderboard.length > 0 && (
           <div className="text-center text-base-content/70">
-            <p>You've reached the end of the leaderboard! 🎉</p>
+            <p>You've reached the end of the leaderboard!</p>
           </div>
         )}
Index: client/src/utils/rankUtils.js
===================================================================
--- client/src/utils/rankUtils.js	(revision 229181032a0b6c2b6df07c1fc361064d48f414ed)
+++ client/src/utils/rankUtils.js	(revision 4ed3b3c5203155c561d558647f5af4d2c76dd82f)
@@ -11,74 +11,74 @@
 
 export const RANK_DATA = {
-  "Novice": {
+  Novice: {
     id: 1,
-    title: "Novice",
+    title: 'Novice',
     requiredPoints: 0,
     icon: noviceIcon,
-    color: "#A0AEC0"
+    color: '#A0AEC0',
   },
-  "Learner": {
+  Learner: {
     id: 2,
-    title: "Learner",
+    title: 'Learner',
     requiredPoints: 300,
     icon: learnerIcon,
-    color: "#4299E1"
+    color: '#4299E1',
   },
-  "Coder": {
+  Coder: {
     id: 3,
-    title: "Coder",
+    title: 'Coder',
     requiredPoints: 800,
     icon: coderIcon,
-    color: "#48BB78"
+    color: '#48BB78',
   },
-  "Problem Solver": {
+  'Problem Solver': {
     id: 4,
-    title: "Problem Solver",
+    title: 'Problem Solver',
     requiredPoints: 1500,
     icon: problemSolverIcon,
-    color: "#38B2AC"
+    color: '#38B2AC',
   },
-  "Algorithmist": {
+  Algorithmist: {
     id: 5,
-    title: "Algorithmist",
+    title: 'Algorithmist',
     requiredPoints: 2500,
     icon: algorithmistIcon,
-    color: "#805AD5"
+    color: '#805AD5',
   },
-  "Hacker Mage": {
+  'Hacker Mage': {
     id: 6,
-    title: "Hacker Mage",
+    title: 'Hacker Mage',
     requiredPoints: 4000,
     icon: hackerMageIcon,
-    color: "#D69E2E"
+    color: '#D69E2E',
   },
-  "Challenger": {
+  Challenger: {
     id: 7,
-    title: "Challenger",
+    title: 'Challenger',
     requiredPoints: 6000,
     icon: challengerIcon,
-    color: "#F56565"
+    color: '#F56565',
   },
-  "Code Master": {
+  'Code Master': {
     id: 8,
-    title: "Code Master",
+    title: 'Code Master',
     requiredPoints: 8500,
     icon: codeMasterIcon,
-    color: "#ED8936"
+    color: '#ED8936',
   },
-  "FINKI Royalty": {
+  'FINKI Royalty': {
     id: 9,
-    title: "FINKI Royalty",
-    requiredPoints: 12000,
+    title: 'FINKI Royalty',
+    requiredPoints: 11000,
     icon: finkiRoyaltyIcon,
-    color: "#ECC94B"
+    color: '#ECC94B',
   },
-  "FINKI Legend": {
+  'FINKI Legend': {
     id: 10,
-    title: "FINKI Legend",
+    title: 'FINKI Legend',
     requiredPoints: 16000,
     icon: finkiLegendIcon,
-    color: "#9F7AEA"
-  }
+    color: '#9F7AEA',
+  },
 };
 
@@ -89,5 +89,5 @@
  */
 export const getRankInfo = (rankName) => {
-  return RANK_DATA[rankName] || RANK_DATA["Novice"];
+  return RANK_DATA[rankName] || RANK_DATA['Novice'];
 };
 
@@ -97,15 +97,4 @@
  * @returns {object} Rank data object
  */
-export const getRankByPoints = (points) => {
-  const ranks = Object.values(RANK_DATA).sort((a, b) => b.requiredPoints - a.requiredPoints);
-  
-  for (const rank of ranks) {
-    if (points >= rank.requiredPoints) {
-      return rank;
-    }
-  }
-  
-  return RANK_DATA["Novice"];
-};
 
 /**
@@ -117,9 +106,9 @@
 export const getRankBadgeProps = (rankName, size = 'md') => {
   const rankInfo = getRankInfo(rankName);
-  
+
   const sizeClasses = {
     sm: 'text-xs px-2 py-1',
     md: 'text-sm px-3 py-1',
-    lg: 'text-base px-4 py-2'
+    lg: 'text-base px-4 py-2',
   };
 
@@ -127,5 +116,5 @@
     sm: 'w-4 h-4',
     md: 'w-5 h-5',
-    lg: 'w-6 h-6'
+    lg: 'w-6 h-6',
   };
 
@@ -135,7 +124,7 @@
     style: {
       backgroundColor: rankInfo.color,
-      color: '#FFFFFF'
+      color: '#FFFFFF',
     },
-    iconClassName: iconSizes[size]
+    iconClassName: iconSizes[size],
   };
 };
