Index: backend/controllers/apiController.js
===================================================================
--- backend/controllers/apiController.js	(revision 9fbde3d9419257ac06da3da5412bc97aae0426e7)
+++ backend/controllers/apiController.js	(revision d614ecbcb97b7c3921577123ca9f6853494582aa)
@@ -57,5 +57,42 @@
 };
 
+const loginPOST = async (req, res) => {
+  try {
+    const { email, password } = req.body;
+
+    if (!email || !password) {
+      return res.status(400).json({
+        message: 'Email and password are required',
+        success: false,
+      });
+    }
+
+    const { data, error } = await supabase.auth.signInWithPassword({
+      email,
+      password,
+    });
+
+    if (error) {
+      return res.status(401).json({
+        message: error.message,
+        success: false,
+      });
+    }
+
+    res.status(200).json({
+      message: 'Login successful',
+      success: true,
+    });
+  } catch (error) {
+    console.error('Login error:', error);
+    res.status(500).json({
+      message: 'An error occurred during login',
+      success: false,
+    });
+  }
+};
+
 module.exports = {
   registerPOST,
+  loginPOST,
 };
Index: backend/routers/apiRouter.js
===================================================================
--- backend/routers/apiRouter.js	(revision 9fbde3d9419257ac06da3da5412bc97aae0426e7)
+++ backend/routers/apiRouter.js	(revision d614ecbcb97b7c3921577123ca9f6853494582aa)
@@ -1,8 +1,8 @@
-const { Router } = require('express');
-const router = Router();
-const path = require('path');
+const express = require('express');
+const router = express.Router();
 const apiController = require('../controllers/apiController');
 
 router.post('/register', apiController.registerPOST);
+router.post('/login', apiController.loginPOST);
 
 module.exports = router;
Index: client/src/LogIn/LogIn.jsx
===================================================================
--- client/src/LogIn/LogIn.jsx	(revision 9fbde3d9419257ac06da3da5412bc97aae0426e7)
+++ client/src/LogIn/LogIn.jsx	(revision d614ecbcb97b7c3921577123ca9f6853494582aa)
@@ -1,6 +1,37 @@
-import React from "react";
-import { Link } from "react-router-dom";
+import React, { useState } from "react";
+import { Link, useNavigate } from "react-router-dom";
 
 const Login = () => {
+  const [email, setEmail] = useState("");
+  const [password, setPassword] = useState("");
+  const [error, setError] = useState("");
+  const navigate = useNavigate();
+
+  const handleSubmit = async (e) => {
+    e.preventDefault();
+    setError(""); // Clear previous errors
+
+    try {
+      const response = await fetch("/api/login", {
+        method: "POST",
+        headers: {
+          "Content-Type": "application/json",
+        },
+        body: JSON.stringify({ email, password }),
+      });
+
+      const data = await response.json();
+
+      if (data.success) {
+        navigate("/dashboard");
+      } else {
+        setError(data.message || "Login failed");
+      }
+    } catch (err) {
+      console.error("Login error:", err);
+      setError("An error occurred during login.");
+    }
+  };
+
   return (
     <div
@@ -9,5 +40,8 @@
     >
       <h1 className="text-4xl font-bold mb-6">Log in</h1>
-      <fieldset className="fieldset bg-base-200 border-base-300 rounded-box w-96 border p-8 space-y-6">
+      <form
+        onSubmit={handleSubmit}
+        className="fieldset bg-base-200 border-base-300 rounded-box w-96 border p-8 space-y-6"
+      >
         <div>
           <label className="label text-lg" htmlFor="email">
@@ -19,4 +53,7 @@
             className="input input-lg w-full"
             placeholder="user123@students.finki.ukim.mk"
+            value={email}
+            onChange={(e) => setEmail(e.target.value)}
+            required
           />
           <p className="text-sm mt-1">*Must use your students address</p>
@@ -32,10 +69,17 @@
             className="input input-lg w-full"
             placeholder="Password"
+            value={password}
+            onChange={(e) => setPassword(e.target.value)}
+            required
           />
         </div>
-        <button className="btn bg-black btn-xs sm:btn-sm md:btn-md lg:btn-lg xl:btn-xl">
+        {error && <p className="text-red-500 text-sm mt-1">{error}</p>}
+        <button
+          type="submit"
+          className="btn bg-black btn-xs sm:btn-sm md:btn-md lg:btn-lg xl:btn-xl"
+        >
           Log in
         </button>
-      </fieldset>
+      </form>
       <Link to="/register" className="underline mt-1.5">
         Create new account
