Index: backend/GlobeGuru-backend/src/main/java/Change.java
===================================================================
--- backend/GlobeGuru-backend/src/main/java/Change.java	(revision df7f3908d4d04d0a62480f95b6d163db19795365)
+++ backend/GlobeGuru-backend/src/main/java/Change.java	(revision df7f3908d4d04d0a62480f95b6d163db19795365)
@@ -0,0 +1,44 @@
+public class Change {
+    private String attribute;
+    private String oldValue;
+    private String newValue;
+
+    public Change(String attribute, String oldValue, String newValue) {
+        this.attribute = attribute;
+        this.oldValue = oldValue;
+        this.newValue = newValue;
+    }
+
+    public String getAttribute() {
+        return attribute;
+    }
+
+    public void setAttribute(String attribute) {
+        this.attribute = attribute;
+    }
+
+    public String getOldValue() {
+        return oldValue;
+    }
+
+    public void setOldValue(String oldValue) {
+        this.oldValue = oldValue;
+    }
+
+    public String getNewValue() {
+        return newValue;
+    }
+
+    public void setNewValue(String newValue) {
+        this.newValue = newValue;
+    }
+
+    @Override
+    public String toString() {
+        return "Change{" +
+                "attribute='" + attribute + '\'' +
+                ", oldValue='" + oldValue + '\'' +
+                ", newValue='" + newValue + '\'' +
+                '}';
+    }
+}
Index: backend/GlobeGuru-backend/src/main/java/DatabaseUtil.java
===================================================================
--- backend/GlobeGuru-backend/src/main/java/DatabaseUtil.java	(revision 0a7426e6328fcef1465400625f79fcb91c6bcff6)
+++ backend/GlobeGuru-backend/src/main/java/DatabaseUtil.java	(revision df7f3908d4d04d0a62480f95b6d163db19795365)
@@ -53,4 +53,13 @@
                              "price REAL," +
                              "FOREIGN KEY(optionId) REFERENCES options(id))"
+             );
+             PreparedStatement stmt5 = conn.prepareStatement(
+                     "CREATE TABLE IF NOT EXISTS changeLog(" +
+                             "id INTEGER PRIMARY KEY AUTOINCREMENT," +
+                             "detail_id INTEGER NOT NULL," +
+                             "attribute TEXT NOT NULL," +
+                             "oldValue TEXT," +
+                             "newValue TEXT," +
+                             "FOREIGN KEY(detail_id) REFERENCES optionDetails(id))"
              )) {
 
@@ -59,4 +68,5 @@
             stmt3.executeUpdate();
             stmt4.executeUpdate();
+            stmt5.executeUpdate();
         }
     }
@@ -201,7 +211,4 @@
         }
     }
-
-
-
     public static List<Option> poolOptionDetails(int id) throws SQLException{
         String sql = "SELECT * FROM optionDetails WHERE optionId = ?";
@@ -283,5 +290,5 @@
     }
     public static int saveOptionToDatabase(Option option) {
-        String sql = "INSERT INTO options (link, imgSrc, hotelName, country, dateRange,numberOfPeople, isPriceChanged, newPrice) VALUES (?, ?, ?, ?, ?, ?, ?, ?)";
+        String sql = "INSERT INTO options (link, imgSrc, hotelName, country, dateRange,numberOfPeople) VALUES (?, ?, ?, ?, ?, ?)";
         int id = 0;
         try (Connection conn = DriverManager.getConnection("jdbc:sqlite:globe_guru.db");
@@ -293,6 +300,4 @@
             stmt.setString(5, option.getDateRange());
             stmt.setInt(6,option.getNumPeople());
-            stmt.setBoolean(7, option.isPriceChanged());
-            stmt.setFloat(8, option.getNewPrice());
             stmt.executeUpdate();
             try(ResultSet genKey = stmt.getGeneratedKeys()){
@@ -331,71 +336,55 @@
         }
     }
-
     public static void updateOptionDetails(int detail_id, String type, String board, String amenities, float price) {
-        String sql = "UPDATE optionDetails SET ";
-
-        List<String> updates = new ArrayList<>();
-        if (type != null && !type.isEmpty()) updates.add("type = '" + type + "'");
-        if (board != null && !board.isEmpty()) updates.add("board = '" + board + "'");
-        if (amenities != null && !amenities.isEmpty()) updates.add("amenities = '" + amenities + "'");
-        updates.add("price = " + price);
-
-        sql += String.join(", ", updates);
-        sql += " WHERE id = " + detail_id;
-
-        try (Connection conn = getConnection();
-             PreparedStatement stmt = conn.prepareStatement(sql)) {
-            stmt.executeUpdate();
+        try (Connection conn = getConnection()) {
+            String selectSql = "SELECT * FROM optionDetails WHERE id = ?";
+            PreparedStatement selectStmt = conn.prepareStatement(selectSql);
+            selectStmt.setInt(1, detail_id);
+            ResultSet rs = selectStmt.executeQuery();
+
+            if (rs.next()) {
+                String oldType = rs.getString("type");
+                String oldBoard = rs.getString("board");
+                String oldAmenities = rs.getString("amenities");
+                float oldPrice = rs.getFloat("price");
+
+                insertChangeLog(detail_id, "type", oldType, type);
+                insertChangeLog(detail_id, "board", oldBoard, board);
+                insertChangeLog(detail_id, "amenities", oldAmenities, amenities);
+                insertChangeLog(detail_id, "price", String.valueOf(oldPrice), String.valueOf(price));
+            }
+
+            String sql = "UPDATE optionDetails SET ";
+            List<String> updates = new ArrayList<>();
+            if (type != null && !type.isEmpty()) updates.add("type = '" + type + "'");
+            if (board != null && !board.isEmpty()) updates.add("board = '" + board + "'");
+            if (amenities != null && !amenities.isEmpty()) updates.add("amenities = '" + amenities + "'");
+            if (price > 0) updates.add("price = " + price);
+
+            sql += String.join(", ", updates);
+            sql += " WHERE id = " + detail_id;
+
+            try (PreparedStatement stmt = conn.prepareStatement(sql)) {
+                stmt.executeUpdate();
+            }
         } catch (SQLException e) {
             e.printStackTrace();
         }
     }
-
-    public static void updateOptionInDatabase(Option option) {
-        String sql = "UPDATE options SET link = ?, imgSrc = ?, hotelName = ?, country = ?, price = ?, dateRange = ?, isPriceChanged = ?, newPrice = ? WHERE id = ?";
-        try (Connection conn = DriverManager.getConnection("jdbc:sqlite:globe_guru.db");
-             PreparedStatement stmt = conn.prepareStatement(sql)) {
-            stmt.setString(1, option.getLink());
-            stmt.setString(2, option.getImgSrc());
-            stmt.setString(3, option.getHotelName());
-            stmt.setString(4, option.getCountry());
-            stmt.setFloat(5, option.getPrice());
-            stmt.setString(6, option.getDateRange());
-            stmt.setBoolean(7, option.isPriceChanged());
-            stmt.setFloat(8, option.getNewPrice());
-            stmt.setInt(9, option.getId());
-            stmt.executeUpdate();
-        } catch (SQLException e) {
-            e.printStackTrace();
-        }
-    }
-    public static Option findOption(Option option) {
-        String sql = "SELECT * FROM options WHERE id = ?";
-        try (Connection conn = DriverManager.getConnection("jdbc:sqlite:globe_guru.db");
-             PreparedStatement stmt = conn.prepareStatement(sql)) {
-            stmt.setInt(1, option.getId());
-            try (ResultSet rs = stmt.executeQuery()) {
-                if (rs.next()) {
-                    Option existingOption = new Option();
-                    existingOption.setId(rs.getInt("id"));
-                    existingOption.setLink(rs.getString("link"));
-                    existingOption.setImgSrc(rs.getString("imgSrc"));
-                    existingOption.setHotelName(rs.getString("hotelName"));
-                    existingOption.setCountry(rs.getString("country"));
-                    existingOption.setPrice(rs.getFloat("price"));
-                    existingOption.setDateRange(rs.getString("dateRange"));
-                    existingOption.setPriceChanged(rs.getBoolean("isPriceChanged"));
-                    existingOption.setNewPrice(rs.getInt("newPrice"));
-                    existingOption.setNumPeople(rs.getInt("numberOfPeople"));
-                    return existingOption;
-                }
-            }
-        } catch (SQLException e) {
-            e.printStackTrace();
-        }
-        return null;
-    }
-
-
+    private static void insertChangeLog(int detail_id, String attribute, String oldValue, String newValue) {
+        if (!oldValue.equals(newValue)) {
+            String sql = "INSERT INTO changeLog (detail_id, attribute, oldValue, newValue) VALUES (?, ?, ?, ?)";
+            try (Connection conn = getConnection();
+                 PreparedStatement stmt = conn.prepareStatement(sql)) {
+                stmt.setInt(1, detail_id);
+                stmt.setString(2, attribute);
+                stmt.setString(3, oldValue);
+                stmt.setString(4, newValue);
+                stmt.executeUpdate();
+            } catch (SQLException e) {
+                e.printStackTrace();
+            }
+        }
+    }
     public static int getCurrentOptionsCount() throws SQLException {
         String sql = "SELECT COUNT(*) AS optionsCount FROM options";
Index: backend/GlobeGuru-backend/src/main/java/Option.java
===================================================================
--- backend/GlobeGuru-backend/src/main/java/Option.java	(revision 0a7426e6328fcef1465400625f79fcb91c6bcff6)
+++ backend/GlobeGuru-backend/src/main/java/Option.java	(revision df7f3908d4d04d0a62480f95b6d163db19795365)
@@ -1,2 +1,4 @@
+import java.util.ArrayList;
+import java.util.List;
 import java.util.Objects;
 
@@ -12,13 +14,10 @@
     private String board;
     private String amenities;
+    private int numPeople;
+    private String dateRange;
+    private List<Change> changes = new ArrayList<>();
 
-    private int numPeople;
-    //Price changing
-    private float newPrice = 0;
-    private boolean isPriceChanged = false;
-    private String dateRange;
-    // Constructor
-    public Option(){
-        price = 0;
+    public String getDateRange() {
+        return dateRange;
     }
 
@@ -31,10 +30,14 @@
     }
 
+    public int getId() {
+        return id;
+    }
+
+    public void setId(int id) {
+        this.id = id;
+    }
+
     public void setDetail_id(int detail_id) {
         this.detail_id = detail_id;
-    }
-
-    public String getDateRange() {
-        return dateRange;
     }
 
@@ -63,7 +66,12 @@
     }
 
-    public boolean isEmpty(){
-        return (hotelName == null || country == null || link == null || imgSrc == null);
+    public int getNumPeople() {
+        return numPeople;
     }
+
+    public void setNumPeople(int numPeople) {
+        this.numPeople = numPeople;
+    }
+
     public String getHotelName() {
         return hotelName;
@@ -98,24 +106,24 @@
     }
 
+    public String getImgSrc() {
+        return imgSrc;
+    }
+
     public void setImgSrc(String imgSrc) {
         this.imgSrc = imgSrc;
     }
 
-    public String getImgSrc() {
-        return imgSrc;
+    public void addChange(String attribute, String oldValue, String newValue) {
+        this.changes.add(new Change(attribute, oldValue, newValue));
     }
 
-    public int getNumPeople() {
-        return numPeople;
-    }
-
-    public void setNumPeople(int numPeople) {
-        this.numPeople = numPeople;
+    public List<Change> getChanges() {
+        return changes;
     }
 
     @Override
     public boolean equals(Object obj) {
-        if(this==obj) return true;
-        if(obj == null || getClass() != obj.getClass()) return false;
+        if (this == obj) return true;
+        if (obj == null || getClass() != obj.getClass()) return false;
         Option option = (Option) obj;
         return Float.compare(option.price, price) == 0
@@ -127,42 +135,28 @@
     @Override
     public int hashCode() {
-        return Objects.hash(hotelName,country,price,link);
+        return Objects.hash(hotelName, country, price, link);
     }
 
-    public int getId() {
-        return id;
-    }
-
-    public void setId(int id) {
-        this.id = id;
-    }
-
-    //debug
     @Override
     public String toString() {
         return "Option{" +
-                "id='" + id + '\'' +
-                "dateRange='" + dateRange + '\'' +
-                "hotelName='" + hotelName + '\'' +
+                "id=" + id +
+                ", dateRange='" + dateRange + '\'' +
+                ", hotelName='" + hotelName + '\'' +
                 ", country='" + country + '\'' +
-                ", price='" + price + '\'' +
+                ", price=" + price +
                 ", link='" + link + '\'' +
-                ", image='" + imgSrc +
+                ", imgSrc='" + imgSrc + '\'' +
+                ", type='" + type + '\'' +
+                ", board='" + board + '\'' +
+                ", amenities='" + amenities + '\'' +
+                ", numPeople=" + numPeople +
+                ", changes=" + changes +
                 '}';
     }
 
-    public void setPriceChanged(boolean a){
-        isPriceChanged = a;
-    }
-    public void setNewPrice(float a){
-        newPrice = a;
-    }
-
-    public boolean isPriceChanged() {
-        return isPriceChanged;
-    }
-
-    public float getNewPrice() {
-        return newPrice;
+    public boolean isEmpty() {
+        return (link.isEmpty() || country.isEmpty() || hotelName.isEmpty());
     }
 }
+
Index: backend/GlobeGuru-backend/src/main/java/Scraper.java
===================================================================
--- backend/GlobeGuru-backend/src/main/java/Scraper.java	(revision 0a7426e6328fcef1465400625f79fcb91c6bcff6)
+++ backend/GlobeGuru-backend/src/main/java/Scraper.java	(revision df7f3908d4d04d0a62480f95b6d163db19795365)
@@ -14,10 +14,8 @@
 
     private List<String> urls;
-    private ConcurrentLinkedQueue<Option> optionsQueue;
     private CountDownLatch latch;
 
     public Scraper() {
         urls = new ArrayList<>();
-        this.optionsQueue = new ConcurrentLinkedQueue<>();
         ObjectMapper mapper = new ObjectMapper();
         try {
@@ -44,5 +42,5 @@
         System.out.println("Scraper has started ");
         for (String url : urls) {
-            new ScraperThread(url, optionsQueue, latch).start();
+            new ScraperThread(url, latch).start();
         }
         return null;
Index: backend/GlobeGuru-backend/src/main/java/ScraperThread.java
===================================================================
--- backend/GlobeGuru-backend/src/main/java/ScraperThread.java	(revision 0a7426e6328fcef1465400625f79fcb91c6bcff6)
+++ backend/GlobeGuru-backend/src/main/java/ScraperThread.java	(revision df7f3908d4d04d0a62480f95b6d163db19795365)
@@ -29,13 +29,9 @@
 public class ScraperThread extends Thread {
     private String url;
-    private ConcurrentLinkedQueue<Option> uniqueOptions;
     private CountDownLatch latch;
-    private Set<Option> optionSet;
-
-    public ScraperThread(String url, ConcurrentLinkedQueue<Option> optionsQueue, CountDownLatch latch) {
+
+    public ScraperThread(String url, CountDownLatch latch) {
         this.url = url;
-        this.uniqueOptions = optionsQueue;
         this.latch = latch;
-        this.optionSet = new HashSet<>();
     }
 
@@ -86,19 +82,9 @@
                     for (Element div : childDivs) {
                         String data = div.outerHtml();
-                        Option option = optionParser(data,numPeople);
+                        Option option = optionParser(data, numPeople);
                         if (option != null) {
-                            Option existingOption = DatabaseUtil.findOption(option);
-                            if (existingOption != null) {
-                                if (existingOption.equals(option)) {
-                                    option.setPriceChanged(true);
-                                    option.setNewPrice(option.getPrice());
-                                }
-                                DatabaseUtil.updateOptionInDatabase(option);
-                            } else if (optionSet.add(option)) {
-                                uniqueOptions.add(option);
-                                option.setId(DatabaseUtil.saveOptionToDatabase(option));
-                                scrapeOptionInfo(option);
-                                System.out.println("Parsed " + option);
-                            }
+                            option.setId(DatabaseUtil.saveOptionToDatabase(option));
+                            scrapeOptionInfo(option);
+                            System.out.println("Parsed " + option);
                         }
                     }
@@ -115,17 +101,12 @@
                     for (Element div : childDivs) {
                         String data = div.outerHtml();
-                        Option newOption = optionParser(data,numPeople);
+                        Option newOption = optionParser(data, numPeople);
                         if (newOption != null) {
-                            if (optionSet.add(newOption)) {
-                                uniqueOptions.add(newOption);
-
-                                newOption.setId(DatabaseUtil.saveOptionToDatabase(newOption));
-                                scrapeOptionInfo(newOption);
-                                System.out.println("Parsed " + newOption);
-                            }
-                        }
-                    }
-
-        } else {
+                            newOption.setId(DatabaseUtil.saveOptionToDatabase(newOption));
+                            scrapeOptionInfo(newOption);
+                            System.out.println("Parsed " + newOption);
+                        }
+                    }
+                } else {
                     System.out.println("Parent div not found");
                 }
@@ -134,4 +115,5 @@
                 System.out.println("URL not recognized for parsing.");
         }
+
     }
     private void scrapeOptionInfo(Option option) {
Index: backend/GlobeGuru-backend/target/classes/lastUpdateTime.json
===================================================================
--- backend/GlobeGuru-backend/target/classes/lastUpdateTime.json	(revision 0a7426e6328fcef1465400625f79fcb91c6bcff6)
+++ backend/GlobeGuru-backend/target/classes/lastUpdateTime.json	(revision df7f3908d4d04d0a62480f95b6d163db19795365)
@@ -1,3 +1,3 @@
 {
-  "lastUpdateTime" : "2025-01-11T00:07:21.694581100"
+  "lastUpdateTime" : "2025-01-13T13:53:28.872595600"
 }
Index: frontend/index.html
===================================================================
--- frontend/index.html	(revision 0a7426e6328fcef1465400625f79fcb91c6bcff6)
+++ frontend/index.html	(revision df7f3908d4d04d0a62480f95b6d163db19795365)
@@ -54,9 +54,9 @@
         <span class="close">&times;</span>
         <div class="saved-trips-container">
-            <h2>Saved Trips</h2>
+            <h2>Зачувани патувања</h2>
             <div id="savedTripsList"></div>
         </div>
         <div class="price-changes-container">
-            <h2>Price Changes</h2>
+            <h2>Промени во понудата</h2>
             <div id="priceChangesList"></div>
         </div>
@@ -107,19 +107,18 @@
     <div class="loading-content">
         <div class="spinner"></div>
-        <p>Loading, please wait...</p>
+        <p>Пребарувам. ве молиме почекајте...</p>
     </div>
 </div>
 <div id="AccountDetailsOverlay" class="popup accDetails">
     <div class="popup-content">
-        <h1>My account</h1>
+        <h1>Мој профил</h1>
         <div class="popup-content" style="display: none" id="confDel">
             <div class="delete" >
-                <h1>Are you sure you want to delete your account?</h1>
-                <button onclick="deleteAccount()" class="button" id="confirmDelete" style="background-color: red">Yes</button>
-                <button id="cancel" class="button" onclick="closeConfirmDelete()">No</button>
+                <h1>Дали сте сигурни дека сакате да го избришете профилот?</h1>
+                <button onclick="deleteAccount()" class="button" id="confirmDelete" style="background-color: red">Да</button>
+                <button id="cancel" class="button" onclick="closeConfirmDelete()">Не</button>
             </div>
         </div>
-        <button class="button" id="pswdChange">Change password</button>
-        <button class="button" style="background-color: red" id="deleteAcc" onclick="confirmDelete()">Delete Account</button>
+        <button class="button" style="background-color: red" id="deleteAcc" onclick="confirmDelete()">Избриши профил</button>
     </div>
 </div>
Index: frontend/js/formHandler.js
===================================================================
--- frontend/js/formHandler.js	(revision 0a7426e6328fcef1465400625f79fcb91c6bcff6)
+++ frontend/js/formHandler.js	(revision df7f3908d4d04d0a62480f95b6d163db19795365)
@@ -51,4 +51,5 @@
                 const dataList = document.getElementById('givenOptions');
                 dataList.innerHTML = '';
+
                 if (data.length === 0) {
                     const wrapper = document.createElement('div');
@@ -66,11 +67,11 @@
                         img.src = item.imgSrc || '';
                         optionDiv.appendChild(img);
-                        const WrapperDiv = document.createElement('div');
-                        optionDiv.appendChild(WrapperDiv);
+                        const wrapperDiv = document.createElement('div');
+                        optionDiv.appendChild(wrapperDiv);
 
                         const nameParagraph = document.createElement('p');
                         nameParagraph.id = 'name';
                         nameParagraph.textContent = item.hotelName || 'N/A';
-                        WrapperDiv.appendChild(nameParagraph);
+                        wrapperDiv.appendChild(nameParagraph);
 
                         const countryParagraph = document.createElement('p');
@@ -78,23 +79,23 @@
                         countryParagraph.style.fontSize = '20px';
                         countryParagraph.textContent = item.country || 'N/A';
-                        WrapperDiv.appendChild(countryParagraph);
+                        wrapperDiv.appendChild(countryParagraph);
 
                         const dateParagraph = document.createElement('h2');
                         dateParagraph.id = 'date';
                         dateParagraph.textContent = item.dateRange || 'N/A';
-                        WrapperDiv.appendChild(dateParagraph);
+                        wrapperDiv.appendChild(dateParagraph);
 
                         const peopleParagraph = document.createElement('p');
                         peopleParagraph.id = 'numPeople';
                         peopleParagraph.textContent = item.numPeople === 1 ? item.numPeople + " лице" : item.numPeople + " лица";
-                        WrapperDiv.appendChild(peopleParagraph);
+                        wrapperDiv.appendChild(peopleParagraph);
 
                         const priceHeading = document.createElement('h1');
                         priceHeading.textContent = 'Цена:';
-                        WrapperDiv.appendChild(priceHeading);
+                        wrapperDiv.appendChild(priceHeading);
                         const priceParagraph = document.createElement('h2');
                         priceParagraph.id = 'price';
                         priceParagraph.textContent = (item.price || 0) + " EUR";
-                        WrapperDiv.appendChild(priceParagraph);
+                        wrapperDiv.appendChild(priceParagraph);
 
                         const infoDiv = document.createElement('div');
@@ -110,4 +111,12 @@
                         infoDiv.appendChild(amenities);
                         optionDiv.appendChild(infoDiv);
+
+                        const changesDiv = document.createElement('div');
+                        item.changes.forEach(change => {
+                            const changeParagraph = document.createElement('p');
+                            changeParagraph.textContent = change.attribute + " changed from " + change.oldValue + " to " + change.newValue;
+                            changesDiv.appendChild(changeParagraph);
+                        });
+                        optionDiv.appendChild(changesDiv);
 
                         const link = document.createElement('a');
Index: frontend/js/siteFlow.js
===================================================================
--- frontend/js/siteFlow.js	(revision 0a7426e6328fcef1465400625f79fcb91c6bcff6)
+++ frontend/js/siteFlow.js	(revision df7f3908d4d04d0a62480f95b6d163db19795365)
@@ -168,5 +168,4 @@
         .then(data => {
             console.log('Option saved:', data);
-            // Update the UI to reflect that the option was saved
             updateFavoriteButtons();
         })
@@ -243,7 +242,18 @@
                 tripDiv.appendChild(price);
 
+                // Add change indicator
+                if(trip.changes && trip.changes.length > 0) {
+                    const changeDiv = document.createElement('div');
+                    changeDiv.classList.add('changes');
+                    trip.changes.forEach(change => {
+                        const changeParagraph = document.createElement('p');
+                        changeParagraph.textContent = `${change.attribute} се смени од ${change.oldValue} во ${change.newValue}`;
+                        changeDiv.appendChild(changeParagraph);
+                    });
+                    tripDiv.appendChild(changeDiv);
+                }
+
                 savedTripsList.appendChild(tripDiv);
             });
-
 
             const priceChangesList = document.getElementById('priceChangesList');
@@ -258,5 +268,5 @@
                 });
             } else {
-                priceChangesList.textContent = "нема промена на цената.";
+                priceChangesList.textContent = "нема промена во зачуваните патувања.";
             }
         })
@@ -265,4 +275,5 @@
         });
 }
+
 function removeFromSaved(optionId) {
     const userEmail = sessionStorage.getItem('user').replace(/^"|"$/g, '');
