Index: backend/pom.xml
===================================================================
--- backend/pom.xml	(revision 0616768223756ff7a84a9ae3f2fe25e1b719e7ea)
+++ backend/pom.xml	(revision 7fac6f84f70ca9935b17e4ca125824af358912cc)
@@ -72,4 +72,8 @@
             <version>2.3.4</version>
         </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-security</artifactId>
+        </dependency>
 
 
Index: backend/src/main/java/com/tradingmk/backend/BackendApplication.java
===================================================================
--- backend/src/main/java/com/tradingmk/backend/BackendApplication.java	(revision 0616768223756ff7a84a9ae3f2fe25e1b719e7ea)
+++ backend/src/main/java/com/tradingmk/backend/BackendApplication.java	(revision 7fac6f84f70ca9935b17e4ca125824af358912cc)
@@ -7,4 +7,6 @@
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.context.annotation.Bean;
+import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
+import org.springframework.security.crypto.password.PasswordEncoder;
 
 @SpringBootApplication
@@ -14,4 +16,9 @@
         SpringApplication.run(BackendApplication.class, args);
 
+    }
+
+    @Bean
+    public PasswordEncoder passwordEncoder() {
+        return new BCryptPasswordEncoder();
     }
 
Index: backend/src/main/java/com/tradingmk/backend/SecurityConfig.java
===================================================================
--- backend/src/main/java/com/tradingmk/backend/SecurityConfig.java	(revision 7fac6f84f70ca9935b17e4ca125824af358912cc)
+++ backend/src/main/java/com/tradingmk/backend/SecurityConfig.java	(revision 7fac6f84f70ca9935b17e4ca125824af358912cc)
@@ -0,0 +1,32 @@
+package com.tradingmk.backend;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.security.config.Customizer;
+import org.springframework.security.config.annotation.web.builders.HttpSecurity;
+import org.springframework.security.web.SecurityFilterChain;
+
+@Configuration
+public class SecurityConfig {
+
+    @Bean
+    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
+        http
+                .cors(Customizer.withDefaults())
+                .csrf(csrf -> csrf.disable())
+                .authorizeHttpRequests(auth -> auth
+                        .requestMatchers(
+                                "/api/auth/**",
+                                "/api/stocks/update",  // 👈 allow the scraper to POST here
+                                "/api/stocks/**",
+                                "/ws/**",
+                                "/topic/**",
+                                "api/history/upload",
+                                "/api/history/{symbol}"
+                        ).permitAll()
+                        .anyRequest().authenticated()
+                );
+
+        return http.build();
+    }
+}
Index: backend/src/main/java/com/tradingmk/backend/WebConfig.java
===================================================================
--- backend/src/main/java/com/tradingmk/backend/WebConfig.java	(revision 0616768223756ff7a84a9ae3f2fe25e1b719e7ea)
+++ backend/src/main/java/com/tradingmk/backend/WebConfig.java	(revision 7fac6f84f70ca9935b17e4ca125824af358912cc)
@@ -11,7 +11,7 @@
     public void addCorsMappings(CorsRegistry registry) {
         registry.addMapping("/**")
-                .allowedOrigins("http://localhost:5175")
+                .allowedOrigins("http://localhost:5175", "http://localhost:5176")
                 .allowedMethods("*")
-                .allowedHeaders("*");
+                .allowedHeaders("*").allowCredentials(true);
     }
 }
Index: backend/src/main/java/com/tradingmk/backend/controller/AuthController.java
===================================================================
--- backend/src/main/java/com/tradingmk/backend/controller/AuthController.java	(revision 7fac6f84f70ca9935b17e4ca125824af358912cc)
+++ backend/src/main/java/com/tradingmk/backend/controller/AuthController.java	(revision 7fac6f84f70ca9935b17e4ca125824af358912cc)
@@ -0,0 +1,34 @@
+package com.tradingmk.backend.controller;
+
+import com.tradingmk.backend.model.User;
+import com.tradingmk.backend.service.UserService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+@RestController
+@RequestMapping("/api/auth")
+@CrossOrigin(origins = "{http://localhost:5175, http://localhost:5176}") // allow frontend requests
+public class AuthController {
+
+    @Autowired
+    private UserService userService;
+
+    @PostMapping("/signup")
+    public String signup(@RequestBody User user) {
+
+        userService.register(user);
+        return "User registered successfully";
+    }
+
+    @PostMapping("/login")
+    public ResponseEntity<String> login(@RequestBody User loginRequest) {
+        User user = userService.login(loginRequest.getUsername(), loginRequest.getPassword());
+        if (user != null) {
+            return ResponseEntity.ok("Login successful");
+        } else {
+            return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body("Invalid userna me  or password");
+        }
+    }
+}
Index: backend/src/main/java/com/tradingmk/backend/dto/LoginRequest.java
===================================================================
--- backend/src/main/java/com/tradingmk/backend/dto/LoginRequest.java	(revision 7fac6f84f70ca9935b17e4ca125824af358912cc)
+++ backend/src/main/java/com/tradingmk/backend/dto/LoginRequest.java	(revision 7fac6f84f70ca9935b17e4ca125824af358912cc)
@@ -0,0 +1,6 @@
+package com.tradingmk.backend.dto;
+
+public class LoginRequest {
+    public String username;
+    public String password;
+}
Index: backend/src/main/java/com/tradingmk/backend/dto/SignupRequest.java
===================================================================
--- backend/src/main/java/com/tradingmk/backend/dto/SignupRequest.java	(revision 7fac6f84f70ca9935b17e4ca125824af358912cc)
+++ backend/src/main/java/com/tradingmk/backend/dto/SignupRequest.java	(revision 7fac6f84f70ca9935b17e4ca125824af358912cc)
@@ -0,0 +1,6 @@
+package com.tradingmk.backend.dto;
+
+public class SignupRequest {
+    public String username;
+    public String password;
+}
Index: backend/src/main/java/com/tradingmk/backend/model/User.java
===================================================================
--- backend/src/main/java/com/tradingmk/backend/model/User.java	(revision 0616768223756ff7a84a9ae3f2fe25e1b719e7ea)
+++ backend/src/main/java/com/tradingmk/backend/model/User.java	(revision 7fac6f84f70ca9935b17e4ca125824af358912cc)
@@ -16,4 +16,6 @@
     private String fullName;
     private Double balance;
+    private String email;
+
 
     public Long getId() {
@@ -56,3 +58,11 @@
         this.balance = balance;
     }
+
+    public String getEmail() {
+        return email;
+    }
+
+    public void setEmail(String email) {
+        this.email = email;
+    }
 }
Index: backend/src/main/java/com/tradingmk/backend/repository/UserRepository.java
===================================================================
--- backend/src/main/java/com/tradingmk/backend/repository/UserRepository.java	(revision 0616768223756ff7a84a9ae3f2fe25e1b719e7ea)
+++ backend/src/main/java/com/tradingmk/backend/repository/UserRepository.java	(revision 7fac6f84f70ca9935b17e4ca125824af358912cc)
@@ -4,4 +4,9 @@
 import org.springframework.data.jpa.repository.JpaRepository;
 
+import java.util.Optional;
+
 public interface UserRepository extends JpaRepository<User,Long> {
+    Optional<User> findByUsername(String username);
+    boolean existsByUsername(String username);
+    boolean existsByEmail(String email);
 }
Index: backend/src/main/java/com/tradingmk/backend/service/UserService.java
===================================================================
--- backend/src/main/java/com/tradingmk/backend/service/UserService.java	(revision 7fac6f84f70ca9935b17e4ca125824af358912cc)
+++ backend/src/main/java/com/tradingmk/backend/service/UserService.java	(revision 7fac6f84f70ca9935b17e4ca125824af358912cc)
@@ -0,0 +1,31 @@
+package com.tradingmk.backend.service;
+
+import com.tradingmk.backend.model.User;
+import com.tradingmk.backend.repository.UserRepository;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.crypto.password.PasswordEncoder;
+import org.springframework.stereotype.Service;
+
+@Service
+public class UserService {
+
+    @Autowired
+    private UserRepository userRepository;
+
+    @Autowired
+    private PasswordEncoder passwordEncoder;
+
+    public User register(User user) {
+        if (userRepository.findByUsername(user.getUsername()).isPresent()) {
+            throw new RuntimeException("User already exists with username: " + user.getUsername());
+        }
+        user.setPassword(passwordEncoder.encode(user.getPassword()));
+        return userRepository.save(user);
+    }
+
+    public User login(String username, String rawPassword) {
+        return userRepository.findByUsername(username)
+                .filter(user -> passwordEncoder.matches(rawPassword, user.getPassword()))
+                .orElse(null);
+    }
+}
Index: backend/src/main/resources/application.properties
===================================================================
--- backend/src/main/resources/application.properties	(revision 0616768223756ff7a84a9ae3f2fe25e1b719e7ea)
+++ backend/src/main/resources/application.properties	(revision 7fac6f84f70ca9935b17e4ca125824af358912cc)
@@ -1,1 +1,4 @@
 spring.application.name=backend
+spring.security.user.name=disabled
+spring.security.user.password=disabled
+spring.main.allow-bean-definition-overriding=true
Index: frontend/src/main.jsx
===================================================================
--- frontend/src/main.jsx	(revision 0616768223756ff7a84a9ae3f2fe25e1b719e7ea)
+++ frontend/src/main.jsx	(revision 7fac6f84f70ca9935b17e4ca125824af358912cc)
@@ -10,4 +10,6 @@
 import LandingPage from "./pages/LandingPage/LandingPage.jsx";
 import DetailedStockView from "./pages/DetailedStockView/DetailedStockView.jsx";
+import SignupPage from "./pages/Signup-Login/SignupPage.jsx";
+import LoginPage from "./pages/Signup-Login/LoginPage.jsx";
 
 createRoot(document.getElementById('root')).render(
@@ -17,5 +19,7 @@
                 <Route path="/dashboard" element={<Dashboard/>}></Route>
                 <Route path="/" element={<LandingPage/>}></Route>
-                <Route path="/detailed" element={<DetailedStockView/>}></Route>
+                <Route path="/detailed/:symbol" element={<DetailedStockView/>}></Route>
+                <Route path="/signup" element={<SignupPage />} />
+                <Route path="/login" element={<LoginPage />} />
             </Routes>
         </BrowserRouter>
Index: frontend/src/pages/DetailedStockView/DetailedStockView.jsx
===================================================================
--- frontend/src/pages/DetailedStockView/DetailedStockView.jsx	(revision 0616768223756ff7a84a9ae3f2fe25e1b719e7ea)
+++ frontend/src/pages/DetailedStockView/DetailedStockView.jsx	(revision 7fac6f84f70ca9935b17e4ca125824af358912cc)
@@ -146,5 +146,5 @@
                             type="text"
                             className="text-2xl font-bold mb-1"
-                            value="2"
+                            value="0"
                         />
 
@@ -162,5 +162,5 @@
                             <span className="text-sm text-gray-500">You Spend</span>
                         </div>
-                        <div className="text-2xl font-bold mb-1">44.430</div>
+                        <div className="text-2xl font-bold mb-1">0</div>
 
                     </div>
@@ -176,5 +176,5 @@
                         <div className="text-sm text-gray-500 mb-2">Available Balance</div>
                         <div className="flex items-baseline space-x-2 mb-4">
-                            <span className="text-xl font-bold">293.300 MKD</span>
+                            <span className="text-xl font-bold">0.00 MKD</span>
 
                         </div>
@@ -182,5 +182,5 @@
                             <div>
                                 <div className="text-gray-500 mb-1">Estimate fee</div>
-                                <div className="font-medium">430 MKD</div>
+                                <div className="font-medium">0 MKD</div>
                             </div>
 
Index: frontend/src/pages/LandingPage/LandingPage.jsx
===================================================================
--- frontend/src/pages/LandingPage/LandingPage.jsx	(revision 0616768223756ff7a84a9ae3f2fe25e1b719e7ea)
+++ frontend/src/pages/LandingPage/LandingPage.jsx	(revision 7fac6f84f70ca9935b17e4ca125824af358912cc)
@@ -2,7 +2,8 @@
 import * as THREE from 'three';
 import {Play} from 'lucide-react';
-import {Link} from 'react-router-dom';
+import {Link, useNavigate} from 'react-router-dom';
 
 const LandingPage = () => {
+    const navigate = useNavigate();
 
     return (
@@ -14,5 +15,7 @@
                 </div>
                 <button
-                    className="border border-green-400 text-green-400 px-6 py-2 rounded-full hover:bg-green-400 hover:text-black transition-all duration-300 cursor-pointer">
+                    className="border border-green-400 text-green-400 px-6 py-2 rounded-full hover:bg-green-400 hover:text-black transition-all duration-300 cursor-pointer"
+                    onClick={() => navigate('/login')}
+                >
                     Sign In / Sign Up
                 </button>
@@ -22,5 +25,5 @@
 
             <div className="flex flex-col items-center justify-center text-center px-8 mt-10 gap-20">
-                <h1 className="text-5xl lg:text-6xl font-bold leading-tight">
+                <h1 className="text-5xl lg:text-6xl font-bold leading-tight" >
                     Create your
                     <br/>
@@ -38,5 +41,7 @@
                 <div className="flex flex-col sm:flex-row space-y-4 sm:space-y-0 sm:space-x-6">
                     <button
-                        className="bg-gradient-to-r from-green-400 to-green-500 text-black px-8 py-4 rounded-full font-semibold hover:from-green-500 hover:to-green-600 transition-all duration-300 transform hover:scale-105">
+                        className="bg-gradient-to-r from-green-400 to-green-500 text-black px-8 py-4 rounded-full font-semibold hover:from-green-500 hover:to-green-600 transition-all duration-300 transform hover:scale-105"
+                        onClick={() => navigate('/signup')}
+                    >
                         Get Started!
                     </button>
Index: frontend/src/pages/Menu/Menu.jsx
===================================================================
--- frontend/src/pages/Menu/Menu.jsx	(revision 0616768223756ff7a84a9ae3f2fe25e1b719e7ea)
+++ frontend/src/pages/Menu/Menu.jsx	(revision 7fac6f84f70ca9935b17e4ca125824af358912cc)
@@ -1,4 +1,4 @@
 import React, { useState } from 'react';
-import { NavLink } from 'react-router-dom';
+import {NavLink, useNavigate} from 'react-router-dom';
 import profilePic from '../../assets/images/davor-picture.jpg';
 import { ChevronDown, LogOut, Settings } from 'lucide-react';
@@ -6,4 +6,5 @@
 const Menu = () => {
     const [open, setOpen] = useState(false);
+    const navigate = useNavigate();
 
     const toggleDropdown = () => setOpen(!open);
@@ -41,5 +42,5 @@
                         className="w-10 h-10 rounded-full object-cover"
                     />
-                    <span className="font-medium">Davor Angelov</span>
+                    <span className="font-medium">Davor</span>
                     <button
                         className="flex items-center space-x-2 hover:text-gray-600 focus:outline-none"
@@ -64,4 +65,5 @@
                             <button
                                 className="w-full cursor-pointer text-left px-4 py-2 hover:bg-gray-100 text-sm rounded-xl text-red-500 flex gap-2"
+                                onClick={() => navigate("/")}
                             >
                                 <LogOut />
Index: frontend/src/pages/Signup-Login/LoginPage.jsx
===================================================================
--- frontend/src/pages/Signup-Login/LoginPage.jsx	(revision 7fac6f84f70ca9935b17e4ca125824af358912cc)
+++ frontend/src/pages/Signup-Login/LoginPage.jsx	(revision 7fac6f84f70ca9935b17e4ca125824af358912cc)
@@ -0,0 +1,87 @@
+import React, {useState} from 'react';
+import {useNavigate} from "react-router-dom";
+
+const LoginPage = () => {
+    const [username, setUsername] = useState('');
+    const [password, setPassword] = useState('');
+    const [error, setError] = useState('');
+    const [success, setSuccess] = useState('');
+    const navigate = useNavigate();
+
+    const login = async () => {
+        const response = await fetch('http://localhost:8080/api/auth/login', {
+            method: 'POST',
+            headers: {'Content-Type': 'application/json'},
+            body: JSON.stringify({username, password})
+        });
+
+        if (response.ok) {
+            navigate('/dashboard');
+        } else {
+            throw new Error(await response.text());
+        }
+
+        return response.text();
+    };
+
+    const handleLogin = async (e) => {
+        e.preventDefault();
+        setError('');
+        setSuccess('');
+
+        try {
+            const message = await login();
+            setSuccess(message);
+        } catch (err) {
+            setError(err.message || 'Login failed');
+        }
+    };
+
+    return (
+
+
+        <div>
+
+                <nav className="flex items-center justify-between px-8 py-6">
+                    <div className="flex items-center space-x-2">
+                        <span className="text-2xl font-bold">Trading<span className="text-blue-400">MK</span></span>
+                    </div>
+                    <button
+                        className="border border-green-400 text-green-400 px-6 py-2 rounded-full hover:bg-green-400 hover:text-black transition-all duration-300 cursor-pointer"
+                        onClick={() => navigate('/')}
+                    >
+                        Back
+                    </button>
+                </nav>
+
+                <div className="max-w-md mx-auto mt-10 p-6 bg-white rounded shadow">
+                <h2 className="text-2xl mb-4 font-semibold">Log In</h2>
+                <form onSubmit={handleLogin} className="space-y-4">
+                    <input
+                        type="text"
+                        value={username}
+                        onChange={e => setUsername(e.target.value)}
+                        placeholder="Username"
+                        className="w-full p-2 border rounded"
+                        required
+                    />
+                    <input
+                        type="password"
+                        value={password}
+                        onChange={e => setPassword(e.target.value)}
+                        placeholder="Password"
+                        className="w-full p-2 border rounded"
+                        required
+                    />
+                    <button type="submit" className="w-full bg-blue-600 text-white py-2 rounded hover:bg-blue-700">
+                        Log In
+                    </button>
+                </form>
+                {error && <p className="text-red-600 mt-4">{error}</p>}
+                {success && <p className="text-green-600 mt-4">{success}</p>}
+            </div>
+        </div>
+    );
+};
+
+export default LoginPage;
Index: frontend/src/pages/Signup-Login/SignupPage.jsx
===================================================================
--- frontend/src/pages/Signup-Login/SignupPage.jsx	(revision 7fac6f84f70ca9935b17e4ca125824af358912cc)
+++ frontend/src/pages/Signup-Login/SignupPage.jsx	(revision 7fac6f84f70ca9935b17e4ca125824af358912cc)
@@ -0,0 +1,95 @@
+import React, { useState } from 'react';
+import {useNavigate} from "react-router-dom";
+
+const SignupPage = () => {
+    const [username, setUsername] = useState('');
+    const [email, setEmail] = useState('');
+    const [password, setPassword] = useState('');
+    const [error, setError] = useState('');
+    const [success, setSuccess] = useState('');
+    const navigate = useNavigate();
+
+    const signup = async () => {
+        const response = await fetch('http://localhost:8080/api/auth/signup', {
+            method: 'POST',
+            headers: { 'Content-Type': 'application/json' },
+            body: JSON.stringify({ username, email, password })
+        });
+
+        if (response.ok) {
+            navigate('/dashboard');
+        }else{
+            throw new Error(await response.text());
+        }
+
+        return response.text();
+    };
+
+    const handleSignup = async (e) => {
+        e.preventDefault();
+        setError('');
+        setSuccess('');
+
+        try {
+            const message = await signup();
+            setSuccess(message);
+        } catch (err) {
+            setError(err.message || 'Signup failed');
+        }
+    };
+
+    return (
+        <div>
+
+
+
+            <nav className="flex items-center justify-between px-8 py-6">
+                <div className="flex items-center space-x-2">
+                    <span className="text-2xl font-bold">Trading<span className="text-blue-400">MK</span></span>
+                </div>
+                <button
+                    className="border border-green-400 text-green-400 px-6 py-2 rounded-full hover:bg-green-400 hover:text-black transition-all duration-300 cursor-pointer"
+                    onClick={() => navigate('/')}
+                >
+                    Back
+                </button>
+            </nav>
+            <div className="max-w-md mx-auto mt-10 p-6 bg-white rounded shadow">
+            <h2 className="text-2xl mb-4 font-semibold">Sign Up</h2>
+            <form onSubmit={handleSignup} className="space-y-4">
+                <input
+                    type="text"
+                    value={username}
+                    onChange={e => setUsername(e.target.value)}
+                    placeholder="Username"
+                    className="w-full p-2 border rounded"
+                    required
+                />
+                <input
+                    type="email"
+                    value={email}
+                    onChange={e => setEmail(e.target.value)}
+                    placeholder="Email"
+                    className="w-full p-2 border rounded"
+                    required
+                />
+                <input
+                    type="password"
+                    value={password}
+                    onChange={e => setPassword(e.target.value)}
+                    placeholder="Password"
+                    className="w-full p-2 border rounded"
+                    required
+                />
+                <button type="submit" className="w-full bg-blue-600 text-white py-2 rounded hover:bg-blue-700">
+                    Sign Up
+                </button>
+            </form>
+            {error && <p className="text-red-600 mt-4">{error}</p>}
+            {success && <p className="text-green-600 mt-4">{success}</p>}
+        </div>
+        </div>
+    );
+};
+
+export default SignupPage;
