Index: backend/controllers/apiController.js
===================================================================
--- backend/controllers/apiController.js	(revision 2db3b645437625f6d4676b1dc2c1146d7762826f)
+++ backend/controllers/apiController.js	(revision 16160a4c1d2614a1e39956b2be6205509c92e4cd)
@@ -6,5 +6,14 @@
   try {
     const { username, email, password, name } = req.body;
-
+    const existingUser = await prisma.users.findUnique({
+      where: { username: username },
+      select: { id: true },
+    });
+    if (existingUser) {
+      return res.status(400).json({
+        message: 'Username already exists',
+        success: false,
+      });
+    }
     if (!username || !email || !password || !name) {
       return res.status(400).json({
@@ -35,4 +44,5 @@
 
       if (error) throw new Error(error.message);
+      console.log('User created in Supabase:', studentInstance);
 
       res.status(201).json({
@@ -77,7 +87,17 @@
     return { studentInstance, error: null };
   } catch (error) {
-    return { studentInstance, error };
+    // Check for Prisma unique constraint error
+    if (error.code === 'P2002') {
+      const field = error.meta?.target[0];
+      if (field === 'username') {
+        throw new Error('Username already in use');
+      } else if (field === 'email') {
+        throw new Error('Email address already registered');
+      }
+    }
+    throw error; // Re-throw any other errors
   }
 }
+
 function convertBigIntToString(obj) {
   if (Array.isArray(obj)) {
@@ -85,5 +105,8 @@
   } else if (obj && typeof obj === 'object') {
     return Object.fromEntries(
-      Object.entries(obj).map(([k, v]) => [k, typeof v === 'bigint' ? v.toString() : convertBigIntToString(v)])
+      Object.entries(obj).map(([k, v]) => [
+        k,
+        typeof v === 'bigint' ? v.toString() : convertBigIntToString(v),
+      ])
     );
   }
@@ -123,7 +146,9 @@
       const safeUserData = convertBigIntToString(userData);
 
-      res
-        .status(200)
-        .json({ message: 'Login successful', success: true, user: safeUserData });
+      res.status(200).json({
+        message: 'Login successful',
+        success: true,
+        user: safeUserData,
+      });
     } catch (dbError) {
       console.error('Database error:', dbError);
Index: backend/controllers/forumController.js
===================================================================
--- backend/controllers/forumController.js	(revision 2db3b645437625f6d4676b1dc2c1146d7762826f)
+++ backend/controllers/forumController.js	(revision 16160a4c1d2614a1e39956b2be6205509c92e4cd)
@@ -3,5 +3,5 @@
 const Comment = require('../models/Comment');
 const filter = require('leo-profanity');
-const mkProfanity = require('../filters/macedonianProfanity')
+const mkProfanity = require('../filters/macedonianProfanity');
 filter.add(mkProfanity);
 const safeWords = require('../filters/safeWords');
@@ -17,13 +17,20 @@
       authorName,
     });
-    const isProfane = filter.check(post.content + post.title);
+    const isProfane = filter.check(post.title);
 
     if (isProfane) {
-      console.log("Profanity detected!");
+      console.log('Profanity detected!');
       return res.status(400).json({
         error: 'Content contains inappropriate language',
       });
-    } else if(!(safeWords.includes(post.content) || safeWords.includes(post.title))) {
-      console.log("Safe words check failed!");
+    } else if (filter.check(post.content)) {
+      console.log('Profanity detected in content!');
+      return res.status(400).json({
+        error: 'Content contains inappropriate language',
+      });
+    } else if (
+      !(safeWords.includes(post.content) || safeWords.includes(post.title))
+    ) {
+      console.log('Safe words check failed!');
       // TUKA VIKAME AI
     }
@@ -52,4 +59,5 @@
 const getForumPosts = async (req, res) => {
   try {
+    console.log('Fetching forum posts ');
     const page = parseInt(req.query.page) || 0;
     const limit = parseInt(req.query.limit) || 5;
@@ -165,11 +173,10 @@
     });
     const profane = filter.check(comment.content);
-    if (profane || !safeWords.includes(comment.content)) {
-      console.log("not safe words or profanity detected!");
+    if (profane) {
+      console.log('not safe words or profanity detected!');
       return res.status(400).json({
         error: 'Content contains inappropriate language or is not on topic',
       });
-    } 
-
+    }
 
     // Store in database using Prisma
@@ -202,5 +209,5 @@
 const getComments = async (req, res) => {
   const postId = req.query.post_id;
-
+  console.log('Fetching comments for post_id:', postId);
   if (!postId) {
     return res
Index: client/src/CreatePost/CreatePost.jsx
===================================================================
--- client/src/CreatePost/CreatePost.jsx	(revision 2db3b645437625f6d4676b1dc2c1146d7762826f)
+++ client/src/CreatePost/CreatePost.jsx	(revision 16160a4c1d2614a1e39956b2be6205509c92e4cd)
@@ -5,13 +5,17 @@
   const [title, setTitle] = useState('');
   const [content, setContent] = useState('');
+  const [error, setError] = useState('');
+  const [isSubmitting, setIsSubmitting] = useState(false);
   const navigate = useNavigate();
 
   const handleSubmit = async (e) => {
     e.preventDefault();
-
+    setError('');
+    setIsSubmitting(true);
     const user = JSON.parse(localStorage.getItem('user'));
 
     if (!user || !user.id || !user.name) {
       alert('You must be logged in to create a post.');
+      setIsSubmitting(false);
       navigate('/login');
       return;
@@ -31,7 +35,7 @@
         }),
       });
-
+      const data = await response.json();
       if (!response.ok) {
-        throw new Error(`HTTP error! status: ${response.status}`);
+        throw new Error(data.error || `HTTP error! status: ${response.status}`);
       }
 
@@ -39,5 +43,7 @@
     } catch (error) {
       console.error('Error creating post:', error);
-      alert(`Failed to create post: ${error.message}`);
+      setError(error.message);
+    } finally {
+      setIsSubmitting(false);
     }
   };
@@ -75,5 +81,5 @@
             <div className="space-y-8">
               <div className="form-control w-full">
-                <label className="label">
+                <label className="label mb-1.5">
                   <span className="label-text text-lg font-medium">Title</span>
                 </label>
@@ -89,5 +95,5 @@
 
               <div className="flex flex-col form-control w-full">
-                <label className="label">
+                <label className="label mb-1.5">
                   <span className="label-text text-lg font-medium">
                     Content
@@ -104,4 +110,10 @@
             </div>
 
+            {error && (
+              <div className="text-red-500  mt-4">
+                <span>{error}</span>
+              </div>
+            )}
+
             <div className="card-actions justify-end mt-8">
               <button
@@ -109,9 +121,14 @@
                 onClick={() => navigate('/dashboard/forum')}
                 className="btn btn-ghost btn-lg"
+                disabled={isSubmitting}
               >
                 Cancel
               </button>
-              <button type="submit" className="btn border-amber-400 btn-lg">
-                Publish Post
+              <button
+                type="submit"
+                className="btn border-amber-400 btn-lg"
+                disabled={isSubmitting}
+              >
+                {isSubmitting ? 'Publishing...' : 'Publish Post'}
               </button>
             </div>
Index: client/src/Dashboard/components/Forum.jsx
===================================================================
--- client/src/Dashboard/components/Forum.jsx	(revision 2db3b645437625f6d4676b1dc2c1146d7762826f)
+++ client/src/Dashboard/components/Forum.jsx	(revision 16160a4c1d2614a1e39956b2be6205509c92e4cd)
@@ -1,7 +1,7 @@
-import React, { useState, useEffect } from "react";
-import { useNavigate } from "react-router-dom";
-import commentIcon from "../../assets/images/comment.svg";
-import trashIcon from "../../assets/images/delete.svg"; // Add this import
-import Navbar from "./Navbar";
+import React, { useState, useEffect } from 'react';
+import { useNavigate } from 'react-router-dom';
+import commentIcon from '../../assets/images/comment.svg';
+import trashIcon from '../../assets/images/delete.svg'; // Add this import
+import Navbar from './Navbar';
 const Forum = () => {
   const navigate = useNavigate();
@@ -10,5 +10,5 @@
   const [hasMore, setHasMore] = useState(true);
   const postsPerPage = 5;
-  const user = JSON.parse(localStorage.getItem("user"));
+  const user = JSON.parse(localStorage.getItem('user'));
 
   useEffect(() => {
@@ -27,5 +27,5 @@
       if (page === 0) {
         setPosts(data);
-        console.log("Fetched posts:", data);
+        console.log('Fetched posts:', data);
       } else {
         setPosts((prevPosts) => [...prevPosts, ...data]);
@@ -35,5 +35,5 @@
       }
     } catch (error) {
-      console.error("Error fetching forum posts:", error);
+      console.error('Error fetching forum posts:', error);
     }
   };
@@ -42,7 +42,7 @@
     try {
       const response = await fetch(`/forum/posts/${postId}`, {
-        method: "DELETE",
+        method: 'DELETE',
         headers: {
-          "Content-Type": "application/json",
+          'Content-Type': 'application/json',
         },
       });
@@ -51,7 +51,7 @@
       }
       setPosts((prevPosts) => prevPosts.filter((post) => post.id !== postId));
-      console.log("Post deleted successfully");
+      console.log('Post deleted successfully');
     } catch (error) {
-      console.error("Error deleting post:", error);
+      console.error('Error deleting post:', error);
     }
   };
@@ -86,5 +86,5 @@
                       if (
                         window.confirm(
-                          "Are you sure you want to delete this post?"
+                          'Are you sure you want to delete this post?'
                         )
                       ) {
@@ -101,5 +101,5 @@
                     className="text-3xl font-semibold mb-2 cursor-pointer hover:underline"
                     onClick={() => {
-                      console.log("Post clicked:", post);
+                      console.log('Post clicked:', post);
                       navigate(`/dashboard/forum-detail/${post.id}`, {
                         state: { post },
@@ -112,10 +112,10 @@
 
                 <p className="text-m text-gray-500">
-                  By {post.authorName},{" "}
-                  <span>{post.dateCreated.split("T")[0]}</span>
+                  By {post.authorName},{' '}
+                  <span>{post.dateCreated.split('T')[0]}</span>
                 </p>
                 <p className="mt-2 text-gray-400 text-xl">
                   {post.content && post.content.length > 300
-                    ? post.content.slice(0, 300) + "..."
+                    ? post.content.slice(0, 300) + '...'
                     : post.content}
                 </p>
@@ -124,12 +124,7 @@
                   onClick={(e) => {
                     // Prevent clicking the post if the delete button was clicked
-                    if (
-                      e.target.closest(".delete-btn") ||
-                      e.target.classList.contains("delete-btn")
-                    ) {
-                      e.stopPropagation();
-                      return;
-                    }
-                    onPostClick && onPostClick(post);
+                    navigate(`/dashboard/forum-detail/${post.id}`, {
+                      state: { post },
+                    });
                   }}
                 >
@@ -158,5 +153,5 @@
             <button
               onClick={() => {
-                navigate("/dashboard/create-post");
+                navigate('/dashboard/create-post');
               }}
               className="cursor-pointer px-6 py-3 bg-yellow-500 text-black rounded hover:bg-yellow-600"
Index: client/src/Dashboard/components/Navbar.jsx
===================================================================
--- client/src/Dashboard/components/Navbar.jsx	(revision 2db3b645437625f6d4676b1dc2c1146d7762826f)
+++ client/src/Dashboard/components/Navbar.jsx	(revision 16160a4c1d2614a1e39956b2be6205509c92e4cd)
@@ -1,10 +1,11 @@
-import React, { useState, useEffect } from "react";
-import { useNavigate } from "react-router-dom";
-import logoIcon from "../../assets/images/logoIcon.png";
-import logoText from "../../assets/images/logoText.png";
-import pp from "../../assets/images/pp.svg";
+import React, { useState, useEffect } from 'react';
+import { useNavigate } from 'react-router-dom';
+import logoIcon from '../../assets/images/logoIcon.png';
+import logoText from '../../assets/images/logoText.png';
+import pp from '../../assets/images/pp.svg';
 
 export default function Navbar() {
-  const user = JSON.parse(localStorage.getItem("user"));
+  const user = JSON.parse(localStorage.getItem('user'));
+
   const navigate = useNavigate();
   return (
@@ -22,5 +23,5 @@
             <button
               className={`flex items-center gap-4 px-4 py-3 hover:bg-[#FFB800] hover:text-black rounded-lg transition-colors `}
-              onClick={() => navigate("/dashboard")}
+              onClick={() => navigate('/dashboard')}
             >
               <svg
@@ -40,5 +41,5 @@
             <button
               className={`flex items-center gap-4 px-4 py-3 hover:bg-[#FFB800] hover:text-black rounded-lg transition-colors`}
-              onClick={() => navigate("/dashboard/leaderboard")}
+              onClick={() => navigate('/dashboard/leaderboard')}
             >
               <svg
@@ -58,5 +59,5 @@
             <button
               className={`flex items-center gap-4 px-4 py-3 hover:bg-[#FFB800] hover:text-black rounded-lg transition-colors`}
-              onClick={() => navigate("/dashboard/forum")}
+              onClick={() => navigate('/dashboard/forum')}
             >
               <svg
@@ -80,5 +81,5 @@
               <button
                 className={`flex items-center gap-4 px-4 py-3 hover:bg-[#FFB800] hover:text-black rounded-lg transition-colors`}
-                onClick={() => navigate("/dashboard/forum")}
+                onClick={() => navigate('/dashboard/forum')}
               >
                 <svg
@@ -114,7 +115,7 @@
           <div
             className="flex flex-col items-start"
-            onClick={() => navigate("/dashboard/profile")}
+            onClick={() => navigate('/dashboard/profile')}
           >
-            <span className="font-medium text-left">{user.name}</span>
+            <span className="font-medium text-left">{user.username}</span>
             <span className="text-sm text-base-content/70">{user.rank}</span>
           </div>
Index: client/src/Register/Register.jsx
===================================================================
--- client/src/Register/Register.jsx	(revision 2db3b645437625f6d4676b1dc2c1146d7762826f)
+++ client/src/Register/Register.jsx	(revision 16160a4c1d2614a1e39956b2be6205509c92e4cd)
@@ -28,7 +28,9 @@
     if (!validateEmail(formData.email)) {
       setError('Email must end with @students.finki.ukim.mk');
+      return;
     }
     if (formData.username === '') {
       setError('Must enter username');
+      return;
     }
     if (formData.password === '') {
@@ -72,7 +74,21 @@
       const data = await response.json();
       if (data.success) {
-        console.log('Registration successful:', data.user);
         localStorage.setItem('user', JSON.stringify(data.user));
         nav('/dashboard');
+      } else {
+        console.error('Registration failed:', data.message);
+
+        // Handle both username and email duplicate errors
+        if (data.message === 'Username already in use') {
+          setError('Username already in use');
+        } else if (
+          data.message.includes('Email address already registered') ||
+          data.message.includes('email address has already been registered')
+        ) {
+          setError('Email already exists');
+        } else {
+          // Generic error
+          setError(data.message || 'Registration failed');
+        }
       }
     } catch (error) {
Index: client/src/main.jsx
===================================================================
--- client/src/main.jsx	(revision 2db3b645437625f6d4676b1dc2c1146d7762826f)
+++ client/src/main.jsx	(revision 16160a4c1d2614a1e39956b2be6205509c92e4cd)
@@ -15,21 +15,19 @@
 import LeaderBoardEx from './LandingPage/components/LeaderBoardEx';
 createRoot(document.getElementById('root')).render(
-  <StrictMode>
-    <Router>
-      <Routes>
-        <Route path="/" element={<LandingPage />} />
-        <Route path="/register" element={<Register />} />
-        <Route path="/login" element={<Login />} />
-        <Route path="/dashboard" element={<Task />} />
-        <Route path="/dashboard/create-post" element={<CreatePost />} />
-        <Route path="/dashboard/forum" element={<Forum />} />
-        <Route
-          path="/dashboard/forum-detail/:postId"
-          element={<ForumPostDetail />}
-        />
-        <Route path="/dashboard/profile" element={<Profile />} />
-        <Route path="/dashboard/leaderboard" element={<LeaderBoardEx />} />
-      </Routes>
-    </Router>
-  </StrictMode>
+  <Router>
+    <Routes>
+      <Route path="/" element={<LandingPage />} />
+      <Route path="/register" element={<Register />} />
+      <Route path="/login" element={<Login />} />
+      <Route path="/dashboard" element={<Task />} />
+      <Route path="/dashboard/create-post" element={<CreatePost />} />
+      <Route path="/dashboard/forum" element={<Forum />} />
+      <Route
+        path="/dashboard/forum-detail/:postId"
+        element={<ForumPostDetail />}
+      />
+      <Route path="/dashboard/profile" element={<Profile />} />
+      <Route path="/dashboard/leaderboard" element={<LeaderBoardEx />} />
+    </Routes>
+  </Router>
 );
