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 0616768223756ff7a84a9ae3f2fe25e1b719e7ea)
@@ -0,0 +1,17 @@
+package com.tradingmk.backend;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.*;
+
+@Configuration
+public class WebConfig implements WebMvcConfigurer {
+
+    @Override
+    public void addCorsMappings(CorsRegistry registry) {
+        registry.addMapping("/**")
+                .allowedOrigins("http://localhost:5175")
+                .allowedMethods("*")
+                .allowedHeaders("*");
+    }
+}
Index: backend/src/main/java/com/tradingmk/backend/controller/StockHistoryController.java
===================================================================
--- backend/src/main/java/com/tradingmk/backend/controller/StockHistoryController.java	(revision 0616768223756ff7a84a9ae3f2fe25e1b719e7ea)
+++ backend/src/main/java/com/tradingmk/backend/controller/StockHistoryController.java	(revision 0616768223756ff7a84a9ae3f2fe25e1b719e7ea)
@@ -0,0 +1,41 @@
+package com.tradingmk.backend.controller;
+import com.tradingmk.backend.model.StockHistory;
+import com.tradingmk.backend.repository.StockHistoryRepository;
+import com.tradingmk.backend.service.StockHistoryService;
+import com.tradingmk.backend.service.StockService;
+import jakarta.persistence.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.util.List;
+
+@RestController
+@RequestMapping("/api/history")
+public class StockHistoryController {
+
+    @Autowired
+    private StockHistoryService stockHistoryService;
+
+    @PostMapping("/upload")
+    public ResponseEntity<Void> saveHistory(@RequestBody List<StockHistory> histories) {
+        for (StockHistory s : histories) {
+            System.out.println("Received: " + s.getSymbol() + ", " + s.getPrice() + ", " + s.getTimestamp());
+        }
+        stockHistoryService.saveAll(histories);
+        return ResponseEntity.ok().build();
+    }
+
+
+    @GetMapping("/{symbol}")
+    public List<StockHistory> getHistory(
+            @PathVariable String symbol,
+            @RequestParam @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate from,
+            @RequestParam @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate to
+    ) {
+        return stockHistoryService.getHistoryForSymbol(symbol, from, to);
+    }
+}
Index: backend/src/main/java/com/tradingmk/backend/model/StockHistory.java
===================================================================
--- backend/src/main/java/com/tradingmk/backend/model/StockHistory.java	(revision 0616768223756ff7a84a9ae3f2fe25e1b719e7ea)
+++ backend/src/main/java/com/tradingmk/backend/model/StockHistory.java	(revision 0616768223756ff7a84a9ae3f2fe25e1b719e7ea)
@@ -0,0 +1,52 @@
+package com.tradingmk.backend.model;
+
+import jakarta.persistence.*;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+@Entity
+public class StockHistory {
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private Long id;
+
+    private String symbol;
+
+    private Double price;
+
+    private LocalDate timestamp;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getSymbol() {
+        return symbol;
+    }
+
+    public void setSymbol(String symbol) {
+        this.symbol = symbol;
+    }
+
+    public Double getPrice() {
+        return price;
+    }
+
+    public void setPrice(Double price) {
+        this.price = price;
+    }
+
+    public LocalDate getTimestamp() {
+        return timestamp;
+    }
+
+    public void setTimestamp(LocalDate timestamp) {
+        this.timestamp = timestamp;
+    }
+}
Index: backend/src/main/java/com/tradingmk/backend/repository/StockHistoryRepository.java
===================================================================
--- backend/src/main/java/com/tradingmk/backend/repository/StockHistoryRepository.java	(revision 0616768223756ff7a84a9ae3f2fe25e1b719e7ea)
+++ backend/src/main/java/com/tradingmk/backend/repository/StockHistoryRepository.java	(revision 0616768223756ff7a84a9ae3f2fe25e1b719e7ea)
@@ -0,0 +1,15 @@
+package com.tradingmk.backend.repository;
+
+import com.tradingmk.backend.model.StockHistory;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.util.List;
+
+@Repository
+public interface StockHistoryRepository extends JpaRepository<StockHistory, Long> {
+    List<StockHistory> findBySymbolAndTimestampBetween(String symbol, LocalDate from, LocalDate to);
+
+}
Index: backend/src/main/java/com/tradingmk/backend/service/StockHistoryService.java
===================================================================
--- backend/src/main/java/com/tradingmk/backend/service/StockHistoryService.java	(revision 0616768223756ff7a84a9ae3f2fe25e1b719e7ea)
+++ backend/src/main/java/com/tradingmk/backend/service/StockHistoryService.java	(revision 0616768223756ff7a84a9ae3f2fe25e1b719e7ea)
@@ -0,0 +1,34 @@
+package com.tradingmk.backend.service;
+
+import com.tradingmk.backend.model.Stock;
+import com.tradingmk.backend.model.StockHistory;
+import com.tradingmk.backend.repository.StockHistoryRepository;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.util.List;
+import java.util.Optional;
+
+@Service
+public class StockHistoryService {
+
+    @Autowired
+    private StockHistoryRepository stockHistoryRepository;
+
+    public void saveAll(List<StockHistory> histories) {
+        for (StockHistory incoming : histories) {
+            StockHistory history = new StockHistory();
+            history.setSymbol(incoming.getSymbol());
+            history.setPrice(incoming.getPrice());
+            history.setTimestamp(incoming.getTimestamp());
+            System.out.println("Saving: " + history.getSymbol() + ", " + history.getPrice() + ", " + history.getTimestamp());
+            stockHistoryRepository.save(history);
+        }
+    }
+
+    public List<StockHistory> getHistoryForSymbol(String symbol, LocalDate from, LocalDate to) {
+        return stockHistoryRepository.findBySymbolAndTimestampBetween(symbol, from, to);
+    }
+}
Index: frontend/src/pages/Dashboard/AllocationSection/AllocationSection.jsx
===================================================================
--- frontend/src/pages/Dashboard/AllocationSection/AllocationSection.jsx	(revision 4a02eda7da843266d26190fbd757ee5a558f2f41)
+++ frontend/src/pages/Dashboard/AllocationSection/AllocationSection.jsx	(revision 0616768223756ff7a84a9ae3f2fe25e1b719e7ea)
@@ -42,5 +42,5 @@
                     <div className="grid grid-cols-2 gap-2 ">
                         {stocks.map((token) => (
-                            <Link to="/detailed"
+                            <Link to={`/detailed/${token.symbol}`}
                                   key={token.symbol}
                                   className={`${token.percentage < 0 ? 'bg-red-300' : token.percentage > 0 ? 'bg-green-300' : 'bg-gray-200'} p-4 rounded-lg text-gray-800 'h-24'`}
Index: frontend/src/pages/DetailedStockView/DetailedStockView.jsx
===================================================================
--- frontend/src/pages/DetailedStockView/DetailedStockView.jsx	(revision 4a02eda7da843266d26190fbd757ee5a558f2f41)
+++ frontend/src/pages/DetailedStockView/DetailedStockView.jsx	(revision 0616768223756ff7a84a9ae3f2fe25e1b719e7ea)
@@ -1,19 +1,56 @@
-import React, { useState } from 'react';
+import React, {useEffect, useState} from 'react';
 import { LineChart, Line, XAxis, YAxis, ResponsiveContainer } from 'recharts';
 import { TrendingUp, Settings, Search, RotateCcw } from 'lucide-react';
 import Menu from "../Menu/Menu.jsx";
+import {useParams} from "react-router-dom";
 
 const DetailedStockView = () => {
-    const [selectedTimeframe, setSelectedTimeframe] = useState('24h');
+    const [selectedTimeframe, setSelectedTimeframe] = useState('1m');
+    const { symbol } = useParams();
+    const [chartData, setChartData] = useState([]);
+    const [currentPrice, setCurrentPrice] = useState(null);
+    const [percentage,setPercentage] = useState(null);
 
-    // Sample chart data
-    const chartData = [
-        { time: '8:00 AM', price: 3560 },
-        { time: '10:00 AM', price: 3590 },
-        { time: '12:00 PM', price: 3600 },
-        { time: '2:00 PM', price: 3580 },
-        { time: '4:00 PM', price: 3615 }
-    ];
+    useEffect(() => {
+        // Make sure symbol is defined before fetching
+        if (!symbol) return;
 
+        const from = '2025-05-26'; // Adjust as needed
+        const to = '2025-06-20';   // You could calculate this dynamically
+
+        fetch(`http://localhost:8080/api/history/${symbol}?from=${from}&to=${to}`)
+            .then(res => res.json())
+            .then(data => {
+                const sorted = data.sort((a, b) => new Date(a.timestamp) - new Date(b.timestamp));
+                setChartData(sorted);
+                console.log(sorted)
+            })
+            .catch(err => console.error("Fetch error:", err));
+
+        fetch(`http://localhost:8080/api/stocks`)
+            .then(res => res.json())
+            .then(data => {
+                const stock = data.find(stock => stock.symbol === symbol);
+                setCurrentPrice(stock ? stock.currentPrice : null);
+            })
+            .catch(err => console.error("Error fetching current price:", err));
+    }, [symbol]);
+
+
+    const calculatePercentageChange = (data) => {
+        if (data.length < 2) return 0;
+        const firstPrice = data[0].price;
+        const lastPrice = data[data.length - 1].price;
+        return ((lastPrice - firstPrice) / firstPrice) * 100;
+    };
+
+    useEffect(() => {
+        if (chartData.length > 0) {
+            const percentageChange = calculatePercentageChange(chartData);
+            const formattedPercentageChange = percentageChange.toFixed(2);
+            console.log(`Percentage Change: ${percentageChange.toFixed(2)}%`);
+            setPercentage(formattedPercentageChange)
+        }
+    }, [chartData]);
 
     return (
@@ -22,7 +59,6 @@
 
             <div className="flex mt-20 border backdrop-blur-md shadow-lg rounded-xl bg-white/20 border-blue-100">
-                {/* Main Chart Section */}
                 <div className="flex-1 p-6">
-                    {/* Token Header */}
+
                     <div className="flex items-center justify-between mb-6">
                         <div className="flex items-center space-x-4">
@@ -31,5 +67,5 @@
                                     <span className="text-white font-bold text-sm">Ξ</span>
                                 </div>
-                                <span className="text-xl font-semibold">ALK</span>
+                                <span className="text-xl font-semibold">{symbol}</span>
                             </div>
                         </div>
@@ -39,11 +75,12 @@
                     </div>
 
-                    {/* Price Display */}
+
                     <div className="mb-6">
                         <div className="flex items-baseline space-x-4">
-                            <span className="text-4xl font-bold">24.436 MKD</span>
-                            <span className="text-green-500 font-medium">+3.27% today</span>
+                            <span className="text-4xl font-bold">{currentPrice}</span>
+                            <span className={`${percentage < 0 ? 'text-red-400' : percentage > 0 ? 'text-green-400' : 'text-gray-200'} font-medium`}>{percentage}</span>
                         </div>
                     </div>
+
 
                     {/* Timeframe Selector */}
Index: scraper/scraper_historical_data.py
===================================================================
--- scraper/scraper_historical_data.py	(revision 0616768223756ff7a84a9ae3f2fe25e1b719e7ea)
+++ scraper/scraper_historical_data.py	(revision 0616768223756ff7a84a9ae3f2fe25e1b719e7ea)
@@ -0,0 +1,70 @@
+from bs4 import BeautifulSoup
+import requests
+from datetime import datetime, timedelta
+import json
+
+def get_stock_history(symbol, days=30):
+    url = f"https://www.mse.mk/en/stats/symbolhistory/{symbol}"
+    response = requests.get(url)
+    soup = BeautifulSoup(response.text, "html.parser")
+
+    history_data = []
+
+    table = soup.select_one(".table")
+    # dataTables_wrapper container-fluid dt-bootstrap4 no-footer ne e ova
+    if not table:
+        print("Table not found")
+        return []
+
+    rows = table.select("tbody tr")
+    cutoff_date = datetime.now() - timedelta(days=days)
+
+    for row in rows:
+        cols = row.find_all("td")
+        if len(cols) >= 5:
+            try:
+                date_str = cols[0].text.strip()
+                date_obj = datetime.strptime(date_str, "%m/%d/%Y")
+
+                if date_obj < cutoff_date:
+                    break  # stop if date is older than cutoff
+
+                close_price = float(cols[4].text.strip().replace(",", ""))
+                history_data.append({
+                    "symbol": symbol,
+                    "timestamp": date_obj.strftime("%Y-%m-%d"),
+                    "price": close_price
+                })
+            except Exception as e:
+                print("Error parsing row:", e)
+
+    return history_data
+
+
+
+def post_history_to_backend(symbol):
+    history_data = get_stock_history(symbol)
+    print(json.dumps(history_data, indent=2))
+    if history_data:
+        url = "http://localhost:8080/api/history/upload"
+        response = requests.post(url, json=history_data)
+        print(f"Uploaded {len(history_data)} rows for {symbol}: {response.status_code}")
+
+if __name__ == '__main__':
+    post_history_to_backend("KMB")
+    post_history_to_backend("ALK")
+    post_history_to_backend("TEL")
+    post_history_to_backend("REPL")
+    post_history_to_backend("TNB")
+    post_history_to_backend("PPIV")
+    post_history_to_backend("UNI")
+    post_history_to_backend("STB")
+    post_history_to_backend("MPT")
+    post_history_to_backend("TTK")
+    post_history_to_backend("GRNT")
+    post_history_to_backend("MTUR")
+
+
+
+
+
