Index: phonelux-backend/src/main/java/finki/it/phoneluxbackend/controllers/PhoneController.java
===================================================================
--- phonelux-backend/src/main/java/finki/it/phoneluxbackend/controllers/PhoneController.java	(revision 527b93f9d268998c8652c2f6a916a078873fb0c6)
+++ phonelux-backend/src/main/java/finki/it/phoneluxbackend/controllers/PhoneController.java	(revision e5b84dc652434cab61718f38889fc36867569866)
@@ -22,8 +22,11 @@
 //     handle request parameters for filtering phones
     @GetMapping(path = "/phones")
-    public List<Phone> getPhones(){
-        return phoneService.getPhones().stream()
-                .sorted(Comparator.comparing(Phone::getTotal_offers).reversed())
-                .collect(Collectors.toList());
+    public List<Phone> getPhones(@RequestParam(name = "shops", required = false) String shops,
+                                 @RequestParam(name = "brands", required = false) String brands,
+                                 @RequestParam(name = "sortBy", required = false) String sortBy,
+                                 @RequestParam(name = "priceRange", required = false) String priceRange,
+                                 @RequestParam(name = "searchValue", required = false) String searchValue){
+
+        return phoneService.getPhones(shops,brands,sortBy,priceRange,searchValue);
     }
 
Index: phonelux-backend/src/main/java/finki/it/phoneluxbackend/controllers/PhoneOfferController.java
===================================================================
--- phonelux-backend/src/main/java/finki/it/phoneluxbackend/controllers/PhoneOfferController.java	(revision 527b93f9d268998c8652c2f6a916a078873fb0c6)
+++ phonelux-backend/src/main/java/finki/it/phoneluxbackend/controllers/PhoneOfferController.java	(revision e5b84dc652434cab61718f38889fc36867569866)
@@ -16,13 +16,17 @@
 @RestController
 @AllArgsConstructor
-@RequestMapping(path = "/phones/offers/{phoneId}")
 public class PhoneOfferController {
     private final PhoneOfferService phoneOfferService;
     private final PhoneService phoneService;
 
-    @GetMapping
+    @GetMapping(path = "/phones/offers/{phoneId}")
     public List<PhoneOffer> getOffersForPhone(@PathVariable("phoneId") Long phoneId){
         return phoneOfferService.getPhoneOffersForPhone(phoneId);
     }
 
+    @GetMapping(path = "/phoneoffer/{offerId}")
+    public PhoneOffer getPhoneOffer(@PathVariable("offerId") Long offerId){
+        return phoneOfferService.getPhoneOffer(offerId);
+    }
+
 }
Index: phonelux-backend/src/main/java/finki/it/phoneluxbackend/security/CustomAuthenticationFilter.java
===================================================================
--- phonelux-backend/src/main/java/finki/it/phoneluxbackend/security/CustomAuthenticationFilter.java	(revision 527b93f9d268998c8652c2f6a916a078873fb0c6)
+++ phonelux-backend/src/main/java/finki/it/phoneluxbackend/security/CustomAuthenticationFilter.java	(revision e5b84dc652434cab61718f38889fc36867569866)
@@ -33,5 +33,5 @@
     @Override
     public Authentication attemptAuthentication(HttpServletRequest request, HttpServletResponse response) throws AuthenticationException {
-        String email = request.getParameter("email"); // mozda ke treba da se smeni vo username
+        String email = request.getParameter("email");
         String password = request.getParameter("password");
         UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(email,password);
@@ -46,5 +46,5 @@
         String access_token = JWT.create()
                 .withSubject(user.getEmail())
-                .withExpiresAt(new Date(System.currentTimeMillis() + 10 * 60 * 1000))
+                .withExpiresAt(new Date(System.currentTimeMillis() + 10 * 60 * 100000)) // approx. 16.5 hours
                 .withIssuer(request.getRequestURL().toString())
                 .withClaim("role", user.getAuthorities().stream()
Index: phonelux-backend/src/main/java/finki/it/phoneluxbackend/services/PhoneOfferService.java
===================================================================
--- phonelux-backend/src/main/java/finki/it/phoneluxbackend/services/PhoneOfferService.java	(revision 527b93f9d268998c8652c2f6a916a078873fb0c6)
+++ phonelux-backend/src/main/java/finki/it/phoneluxbackend/services/PhoneOfferService.java	(revision e5b84dc652434cab61718f38889fc36867569866)
@@ -30,4 +30,14 @@
     }
 
+    public PhoneOffer getPhoneOffer(Long offerId){
+        boolean exists = phoneOfferRepository.existsById(offerId);
+
+        if(!exists)
+            throw new IllegalStateException("Phone offer with id "+offerId+" does not exist");
+
+        return phoneOfferRepository.findById(offerId).get();
+    }
+
+
     public List<String> getShops() {
         return phoneOfferRepository.findAll().stream()
Index: phonelux-backend/src/main/java/finki/it/phoneluxbackend/services/PhoneService.java
===================================================================
--- phonelux-backend/src/main/java/finki/it/phoneluxbackend/services/PhoneService.java	(revision 527b93f9d268998c8652c2f6a916a078873fb0c6)
+++ phonelux-backend/src/main/java/finki/it/phoneluxbackend/services/PhoneService.java	(revision e5b84dc652434cab61718f38889fc36867569866)
@@ -10,4 +10,5 @@
 import java.util.Comparator;
 import java.util.List;
+import java.util.Objects;
 import java.util.stream.Collectors;
 
@@ -22,6 +23,55 @@
 
     // TODO: insert logic to filter
-    public List<Phone> getPhones(){
-        return phoneRepository.findAll();
+    public List<Phone> getPhones(String shops, String brands, String sortBy, String priceRange, String searchValue){
+        List<Phone> phones = phoneRepository.findAll();
+
+
+        if(brands != null)
+        {
+            phones = phones.stream()
+                    .filter(phone -> brands.contains(phone.getBrand())).collect(Collectors.toList());
+        }
+
+        if(shops != null)
+        {
+            phones = phones.stream()
+                    .filter(phone -> phone.getPhoneOffers().stream().anyMatch(offer -> shops.contains(offer.getOffer_shop())))
+                    .collect(Collectors.toList());
+        }
+
+        if(priceRange != null)
+        {
+            int lowestPrice = Integer.parseInt(priceRange.split("-")[0]);
+            int highestPrice = Integer.parseInt(priceRange.split("-")[1]);
+            phones = phones.stream()
+                    .filter(phone -> phone.getLowestPrice() >= lowestPrice && phone.getLowestPrice() <= highestPrice)
+                    .collect(Collectors.toList());
+        }
+
+        if(searchValue != null && !Objects.equals(searchValue.stripIndent(), "")){
+            phones = phones.stream()
+                    .filter(phone -> phone.getBrand().toLowerCase().contains(searchValue.stripIndent().toLowerCase())
+                            || phone.getModel().toLowerCase().contains(searchValue.stripIndent().toLowerCase()))
+                    .collect(Collectors.toList());
+        }
+
+        phones = phones.stream().sorted(Comparator.comparing(Phone::getTotal_offers).reversed())
+                .collect(Collectors.toList());
+        if(sortBy != null)
+        {
+            if(sortBy.equals("ascending")) {
+                phones = phones.stream()
+                        .sorted(Comparator.comparing(Phone::getLowestPrice))
+                        .collect(Collectors.toList());
+            }
+
+            if(sortBy.equals("descending")) {
+                phones = phones.stream()
+                        .sorted(Comparator.comparing(Phone::getLowestPrice).reversed())
+                        .collect(Collectors.toList());
+            }
+        }
+
+        return phones;
     }
 
Index: phonelux-backend/src/main/java/finki/it/phoneluxbackend/services/UserService.java
===================================================================
--- phonelux-backend/src/main/java/finki/it/phoneluxbackend/services/UserService.java	(revision 527b93f9d268998c8652c2f6a916a078873fb0c6)
+++ phonelux-backend/src/main/java/finki/it/phoneluxbackend/services/UserService.java	(revision e5b84dc652434cab61718f38889fc36867569866)
@@ -40,8 +40,8 @@
            User userToRegister =  userRepository.findByEmail(user.getEmail()).get();
            if(userToRegister.getEnabled()) {
-               return ResponseEntity.badRequest().body("Error: Email "+user.getEmail()+" already taken!");
+               return ResponseEntity.badRequest().body("Error:Е-маил адресата е веќе зафатена!");
            }
            else {
-               return ResponseEntity.badRequest().body("Email "+user.getEmail()+" not activated!" );
+               return ResponseEntity.badRequest().body("Error:Профилот не е активиран. Потврдете на вашата е-маил адреса!" );
            }
        }
Index: phonelux-frontend/package-lock.json
===================================================================
--- phonelux-frontend/package-lock.json	(revision 527b93f9d268998c8652c2f6a916a078873fb0c6)
+++ phonelux-frontend/package-lock.json	(revision e5b84dc652434cab61718f38889fc36867569866)
@@ -20,4 +20,5 @@
         "@testing-library/react": "^13.3.0",
         "@testing-library/user-event": "^13.5.0",
+        "@tippyjs/react": "^4.2.6",
         "axios": "^0.27.2",
         "react": "^18.2.0",
@@ -4092,4 +4093,16 @@
       }
     },
+    "node_modules/@tippyjs/react": {
+      "version": "4.2.6",
+      "resolved": "https://registry.npmjs.org/@tippyjs/react/-/react-4.2.6.tgz",
+      "integrity": "sha512-91RicDR+H7oDSyPycI13q3b7o4O60wa2oRbjlz2fyRLmHImc4vyDwuUP8NtZaN0VARJY5hybvDYrFzhY9+Lbyw==",
+      "dependencies": {
+        "tippy.js": "^6.3.1"
+      },
+      "peerDependencies": {
+        "react": ">=16.8",
+        "react-dom": ">=16.8"
+      }
+    },
     "node_modules/@tootallnate/once": {
       "version": "1.1.2",
@@ -16095,4 +16108,12 @@
       "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz",
       "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA=="
+    },
+    "node_modules/tippy.js": {
+      "version": "6.3.7",
+      "resolved": "https://registry.npmjs.org/tippy.js/-/tippy.js-6.3.7.tgz",
+      "integrity": "sha512-E1d3oP2emgJ9dRQZdf3Kkn0qJgI6ZLpyS5z6ZkY1DF3kaQaBsGZsndEpHwx+eC+tYM41HaSNvNtLx8tU57FzTQ==",
+      "dependencies": {
+        "@popperjs/core": "^2.9.0"
+      }
     },
     "node_modules/tmpl": {
@@ -20076,4 +20097,12 @@
       }
     },
+    "@tippyjs/react": {
+      "version": "4.2.6",
+      "resolved": "https://registry.npmjs.org/@tippyjs/react/-/react-4.2.6.tgz",
+      "integrity": "sha512-91RicDR+H7oDSyPycI13q3b7o4O60wa2oRbjlz2fyRLmHImc4vyDwuUP8NtZaN0VARJY5hybvDYrFzhY9+Lbyw==",
+      "requires": {
+        "tippy.js": "^6.3.1"
+      }
+    },
     "@tootallnate/once": {
       "version": "1.1.2",
@@ -28712,4 +28741,12 @@
       "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA=="
     },
+    "tippy.js": {
+      "version": "6.3.7",
+      "resolved": "https://registry.npmjs.org/tippy.js/-/tippy.js-6.3.7.tgz",
+      "integrity": "sha512-E1d3oP2emgJ9dRQZdf3Kkn0qJgI6ZLpyS5z6ZkY1DF3kaQaBsGZsndEpHwx+eC+tYM41HaSNvNtLx8tU57FzTQ==",
+      "requires": {
+        "@popperjs/core": "^2.9.0"
+      }
+    },
     "tmpl": {
       "version": "1.0.5",
Index: phonelux-frontend/package.json
===================================================================
--- phonelux-frontend/package.json	(revision 527b93f9d268998c8652c2f6a916a078873fb0c6)
+++ phonelux-frontend/package.json	(revision e5b84dc652434cab61718f38889fc36867569866)
@@ -15,4 +15,5 @@
     "@testing-library/react": "^13.3.0",
     "@testing-library/user-event": "^13.5.0",
+    "@tippyjs/react": "^4.2.6",
     "axios": "^0.27.2",
     "react": "^18.2.0",
Index: phonelux-frontend/src/App.js
===================================================================
--- phonelux-frontend/src/App.js	(revision 527b93f9d268998c8652c2f6a916a078873fb0c6)
+++ phonelux-frontend/src/App.js	(revision e5b84dc652434cab61718f38889fc36867569866)
@@ -1,17 +1,10 @@
 import { BrowserRouter, Routes, Route } from "react-router-dom";
 import './App.css';
-import GroupedFiltersComponent from "./components/GroupedFiltersComponent/GroupedFiltersComponent";
-import HeaderComponent from "./components/HeaderComponent/HeaderComponent";
-import InputFormComponent from "./components/LoginRegisterComponents/InputFormComponent";
-import LoginFormComponent from "./components/LoginRegisterComponents/LoginFormComponent";
-import RegisterFormComponent from "./components/LoginRegisterComponents/RegisterFormComponent";
-import PaginationComponent from "./components/PaginationComponent/PaginationComponent"
-import PhoneCardComponent from "./components/PhoneCardComponent/PhoneCardComponent";
-import PhoneCardGridComponent from "./components/PhoneCardGridComponent/PhoneCardGridComponent";
 import HomepageComponent from "./components/HomepageComponent"
 import PhonePageComponent from "./components/PhonePageComponent";
-import SortByComponent from "./components/FiltersComponents/SortByComponent";
 import LoginPageComponent from "./components/LoginPageComponent"
 import RegisterPageComponent from "./components/RegisterPageComponent";
+import PhoneOfferDetailsComponent from "./components/PhoneOfferDetailsComponent/PhoneOfferDetailsComponent";
+
 
 
@@ -21,11 +14,9 @@
     <BrowserRouter>
       <Routes>
-        {/* { <Route path="/" element={<PhoneCardComponent 
-        image_url='https://admin.ledikom.mk/uploads/items/411/1641668143apple-iphone-13-pro-max-1-250x300-pad.jpg?v=1'
-        model='Apple iPhone 13 Pro Max' price='75000'/>}/> } */}
         <Route path="/" element={<HomepageComponent/>}/> 
         <Route path="/login" element={<LoginPageComponent/>}/>
         <Route path="/register" element={<RegisterPageComponent/>}/> 
         <Route path="/phones/:phoneId" element={<PhonePageComponent/>} />
+        <Route path="/phoneoffer/:offerId" element={<PhoneOfferDetailsComponent/>} />
 
       </Routes>
Index: phonelux-frontend/src/components/DataManager.js
===================================================================
--- phonelux-frontend/src/components/DataManager.js	(revision e5b84dc652434cab61718f38889fc36867569866)
+++ phonelux-frontend/src/components/DataManager.js	(revision e5b84dc652434cab61718f38889fc36867569866)
@@ -0,0 +1,17 @@
+import React from 'react'
+
+class DataManager{
+
+    filters = null;
+
+    setFilters = (filters) => {
+        this.filters = filters
+    }
+
+
+}
+
+
+const Data = new DataManager();
+
+export default Data;
Index: phonelux-frontend/src/components/FiltersComponents/FilterPriceComponent.js
===================================================================
--- phonelux-frontend/src/components/FiltersComponents/FilterPriceComponent.js	(revision 527b93f9d268998c8652c2f6a916a078873fb0c6)
+++ phonelux-frontend/src/components/FiltersComponents/FilterPriceComponent.js	(revision e5b84dc652434cab61718f38889fc36867569866)
@@ -18,5 +18,4 @@
 
   componentDidMount(){
-
 
   axios.get('/lowestPrice')
Index: phonelux-frontend/src/components/FiltersComponents/SortByComponent.css
===================================================================
--- phonelux-frontend/src/components/FiltersComponents/SortByComponent.css	(revision 527b93f9d268998c8652c2f6a916a078873fb0c6)
+++ phonelux-frontend/src/components/FiltersComponents/SortByComponent.css	(revision e5b84dc652434cab61718f38889fc36867569866)
@@ -10,3 +10,4 @@
     width: 15%;
     background-color: #e6f8ef;
+    margin-right: 15px;
 }
Index: phonelux-frontend/src/components/GroupedFiltersComponent/GroupedFiltersComponent.js
===================================================================
--- phonelux-frontend/src/components/GroupedFiltersComponent/GroupedFiltersComponent.js	(revision 527b93f9d268998c8652c2f6a916a078873fb0c6)
+++ phonelux-frontend/src/components/GroupedFiltersComponent/GroupedFiltersComponent.js	(revision e5b84dc652434cab61718f38889fc36867569866)
@@ -21,8 +21,4 @@
   }
   
-
-  componentDidMount(){
-  
-  }
 
   render() {
Index: phonelux-frontend/src/components/HeaderComponent/HeaderComponent.css
===================================================================
--- phonelux-frontend/src/components/HeaderComponent/HeaderComponent.css	(revision 527b93f9d268998c8652c2f6a916a078873fb0c6)
+++ phonelux-frontend/src/components/HeaderComponent/HeaderComponent.css	(revision e5b84dc652434cab61718f38889fc36867569866)
@@ -8,3 +8,11 @@
     width: 310px;
     height: 200px;
+    margin-top: -65px;
 }
+
+.homepage-navbar-component{
+    width: 100%;
+    display: flex;
+    justify-content: end;
+    background-color: #B6E2C8;
+}
Index: phonelux-frontend/src/components/HeaderComponent/HeaderComponent.js
===================================================================
--- phonelux-frontend/src/components/HeaderComponent/HeaderComponent.js	(revision 527b93f9d268998c8652c2f6a916a078873fb0c6)
+++ phonelux-frontend/src/components/HeaderComponent/HeaderComponent.js	(revision e5b84dc652434cab61718f38889fc36867569866)
@@ -2,4 +2,5 @@
 import { Link } from 'react-router-dom'
 import logo from '../../images/logo_phonelux.png'
+import NavbarComponent from '../NavbarComponent/NavbarComponent'
 import './HeaderComponent.css'
 
@@ -7,4 +8,8 @@
   render() {
     return (
+      <>
+      <div className='homepage-navbar-component'>
+        <NavbarComponent/>
+      </div>
       <div className='header-component'>
           <Link style={{ textDecoration: 'none' }} to={"/"}>
@@ -12,4 +17,5 @@
         </Link>
       </div>
+      </>
     )
   }
Index: phonelux-frontend/src/components/HomepageComponent.js
===================================================================
--- phonelux-frontend/src/components/HomepageComponent.js	(revision 527b93f9d268998c8652c2f6a916a078873fb0c6)
+++ phonelux-frontend/src/components/HomepageComponent.js	(revision e5b84dc652434cab61718f38889fc36867569866)
@@ -3,4 +3,5 @@
 import HeaderComponent from './HeaderComponent/HeaderComponent'
 import PhoneCardGridComponent from './PhoneCardGridComponent/PhoneCardGridComponent'
+
 
 export class HomepageComponent extends Component {
@@ -10,9 +11,9 @@
 
   this.state = {
-    shops: null,
-    brands: null,
-    priceRange: null,
-    searchValue: null,
-    sortBy: null
+    shops: '',
+    brands: '',
+    priceRange: '',
+    searchValue: '',
+    sortBy: 'mostPopular'
   }
 }
@@ -46,4 +47,5 @@
       searchValue: e.searchValue
     })
+
   }
 
@@ -56,4 +58,5 @@
 }
 
+
   render() {
     return (
@@ -61,5 +64,5 @@
         <HeaderComponent/>
         <GroupedFiltersComponent passFilters={this.changeFilters}/>
-        <PhoneCardGridComponent/>
+        <PhoneCardGridComponent {...this.state}/>
         </>
     )
Index: phonelux-frontend/src/components/LoginRegisterComponents/LoginFormComponent.css
===================================================================
--- phonelux-frontend/src/components/LoginRegisterComponents/LoginFormComponent.css	(revision 527b93f9d268998c8652c2f6a916a078873fb0c6)
+++ phonelux-frontend/src/components/LoginRegisterComponents/LoginFormComponent.css	(revision e5b84dc652434cab61718f38889fc36867569866)
@@ -16,5 +16,5 @@
   width: fit-content;
   box-shadow: 11px 12px 13px 12px rgb(207, 207, 207);
-  padding-top: 30px;
+  padding-top: 20px;
   border-radius: 60px; 
   background-color: white;
@@ -23,5 +23,5 @@
 }
 .loginform-imgs-div {
-    padding-top: 20px;
+    padding-top: 10px;
     justify-content: center;
     display: flex;
@@ -43,5 +43,5 @@
 
 .loginform-sub-main-div > div{
-  margin-bottom: 50px;
+  margin-bottom: 30px;
   margin-left: 80px;
   margin-right: 80px;
@@ -137,10 +137,27 @@
     color: blue;
 }
- .register-link > a{
-     color: rgb(53, 99, 70);
-     text-decoration: none;
+
+
+
+ .registerform-link{
+  color: rgb(53, 99, 70);
+  text-decoration: none;
  }
 
- .register-link > a:hover{
-  color: blue;
+ .registerform-link:hover{
+   color: blue;
  }
+
+ .loginform-message-wrapper{
+  display: flex;
+  justify-content: center;
+ }
+
+ .loginform-error-message{
+  color: red;
+  border: 1px solid red;
+  width: fit-content;
+  padding: 10px;
+  border-radius: 50px;
+  background-color: rgb(251, 224, 224);
+ }
Index: phonelux-frontend/src/components/LoginRegisterComponents/LoginFormComponent.js
===================================================================
--- phonelux-frontend/src/components/LoginRegisterComponents/LoginFormComponent.js	(revision 527b93f9d268998c8652c2f6a916a078873fb0c6)
+++ phonelux-frontend/src/components/LoginRegisterComponents/LoginFormComponent.js	(revision e5b84dc652434cab61718f38889fc36867569866)
@@ -17,4 +17,5 @@
       email: '',
       password: '',
+      serverResponse: ''
     }
   }
@@ -42,9 +43,12 @@
 
       axios(config)
-      .then(function (response) {
-        console.log(response.data);
+      .then((response) => {
+       // store access token in local storage, redirect to homepage
+       console.log(response.data)
       })
-      .catch(function (error) {
-        console.log(error);
+      .catch((error) => {
+        this.setState({
+          serverResponse: 'error'
+        })
       });
 
@@ -67,5 +71,6 @@
        <div className="loginform-sub-main-div">
          <div>
-
+          {this.state.serverResponse == 'error' ? <div className='loginform-message-wrapper'>
+                          <h5 className='loginform-error-message'>Невалидна е-маил адреса или лозинка!</h5></div> : <></>}
            <div className="loginform-imgs-div">
              <div className="loginform-image-container">
@@ -93,5 +98,5 @@
             </div>  
            </form>
-           <p className='register-link'><Link to={"/register"}><a>Регистрирај се</a></Link></p>
+           <p className='register-link'><Link className='registerform-link' to={"/register"}>Регистрирај се</Link></p>
   
          </div>
Index: phonelux-frontend/src/components/LoginRegisterComponents/RegisterFormComponent.css
===================================================================
--- phonelux-frontend/src/components/LoginRegisterComponents/RegisterFormComponent.css	(revision 527b93f9d268998c8652c2f6a916a078873fb0c6)
+++ phonelux-frontend/src/components/LoginRegisterComponents/RegisterFormComponent.css	(revision e5b84dc652434cab61718f38889fc36867569866)
@@ -23,5 +23,5 @@
   }
   .registerform-imgs-div {
-      padding-top: 20px;
+      padding-top: 5px;
       justify-content: center;
       display: flex;
@@ -158,4 +158,26 @@
   }
 
+  .registerform-message-wrapper{
+    display: flex;
+    justify-content: center;
+  }
+
+  .registerform-error-message{
+    color: red;
+    border: 1px solid red;
+    width: fit-content;
+    padding: 10px;
+    border-radius: 50px;
+    background-color: rgb(251, 224, 224);
+  }
+
+  .registerform-success-message{
+    color: green;
+    border: 1px solid green;
+    width: fit-content;
+    padding: 10px;
+    border-radius: 50px;
+    background-color: #B6E2C8;
+  }
 
 
Index: phonelux-frontend/src/components/LoginRegisterComponents/RegisterFormComponent.js
===================================================================
--- phonelux-frontend/src/components/LoginRegisterComponents/RegisterFormComponent.js	(revision 527b93f9d268998c8652c2f6a916a078873fb0c6)
+++ phonelux-frontend/src/components/LoginRegisterComponents/RegisterFormComponent.js	(revision e5b84dc652434cab61718f38889fc36867569866)
@@ -20,4 +20,5 @@
         password: '',
         confirmPassword:'',
+        serverResponse: ''
       }
     }
@@ -43,9 +44,13 @@
 
         axios(config)
-        .then(function (response) {
-          console.log(response);
+        .then((response) => {
+          this.setState({
+            serverResponse: response.data
+          })
         })
-        .catch(function (error) {
-          console.log(error);
+        .catch((error) => {
+          this.setState({
+            serverResponse: error.response.data
+          })
         });
 
@@ -59,6 +64,4 @@
 
 
-    
-
   render() {
 
@@ -69,4 +72,24 @@
          <div className="registerform-sub-main-div">
            <div>
+
+            {(() => {
+              if(this.state.serverResponse == '')
+              {
+                return <></> 
+              }
+
+              if(this.state.serverResponse != '' && this.state.serverResponse.includes('Error'))
+              {
+                return <div className='registerform-message-wrapper'>
+                          <h5 className='registerform-error-message'>{this.state.serverResponse.split(':')[1]}</h5> </div>
+              }
+
+              if(this.state.serverResponse != '' && this.state.serverResponse.includes('token'))
+              {
+                return <div className='registerform-message-wrapper'>
+                          <h5 className='registerform-success-message'>Вашата регистрација е во тек. Потврдете на вашата е-маил адреса!</h5> </div>
+              }
+
+            })()}
 
              <div className="registerform-imgs-div">
Index: phonelux-frontend/src/components/NavbarComponent/NavbarComponent.css
===================================================================
--- phonelux-frontend/src/components/NavbarComponent/NavbarComponent.css	(revision e5b84dc652434cab61718f38889fc36867569866)
+++ phonelux-frontend/src/components/NavbarComponent/NavbarComponent.css	(revision e5b84dc652434cab61718f38889fc36867569866)
@@ -0,0 +1,16 @@
+.phonelux-navbar{
+    width: fit-content;
+    margin-right: 20px;
+}
+
+.navbar-account-box-icon{
+    font-size: 50px;
+    margin-top: 10px;
+}
+
+.navbar-account-box-icon:hover{
+    cursor: pointer;
+}
+
+
+/* style={{ fontSize: '50px', marginTop: '10px' }} */
Index: phonelux-frontend/src/components/NavbarComponent/NavbarComponent.js
===================================================================
--- phonelux-frontend/src/components/NavbarComponent/NavbarComponent.js	(revision e5b84dc652434cab61718f38889fc36867569866)
+++ phonelux-frontend/src/components/NavbarComponent/NavbarComponent.js	(revision e5b84dc652434cab61718f38889fc36867569866)
@@ -0,0 +1,35 @@
+import React, { Component } from 'react'
+import './NavbarComponent.css'
+import AccountBoxIcon from '@mui/icons-material/AccountBox';
+import { style } from '@mui/system';
+import Tippy from '@tippyjs/react';
+import 'tippy.js/dist/tippy.css'
+import { Link } from 'react-router-dom';
+import PersonIcon from '@mui/icons-material/Person';
+import LogoutIcon from '@mui/icons-material/Logout';
+
+export class NavbarComponent extends Component {
+
+    constructor(props) {
+      super(props)
+    
+      this.state = {
+         profileSectionOpen: false
+      }
+    }
+    
+  render() {
+    return (
+      <div className='phonelux-navbar'>
+        <Tippy placement='bottom' content='Најави се'>
+        <Link style={{color: 'black'}} to={"/login"}> <PersonIcon  style={{fontSize: '50px', marginTop: '10px' }} className='navbar-account-box-icon'/></Link>
+        </Tippy>
+
+        {/* favourite offers icon goes here */}
+
+      </div>
+    )
+  }
+}
+
+export default NavbarComponent
Index: onelux-frontend/src/components/PaginationComponent/PaginationComponent.css
===================================================================
--- phonelux-frontend/src/components/PaginationComponent/PaginationComponent.css	(revision 527b93f9d268998c8652c2f6a916a078873fb0c6)
+++ 	(revision )
@@ -1,7 +1,0 @@
-.pagination-wrapper{
-    margin-top: 40px;
-    padding-bottom: 40px;
-    display: flex;
-    justify-content: center;
-}
-
Index: onelux-frontend/src/components/PaginationComponent/PaginationComponent.js
===================================================================
--- phonelux-frontend/src/components/PaginationComponent/PaginationComponent.js	(revision 527b93f9d268998c8652c2f6a916a078873fb0c6)
+++ 	(revision )
@@ -1,26 +1,0 @@
-import * as React from 'react';
-import Pagination from '@mui/material/Pagination';
-import Stack from '@mui/material/Stack';
-import "./PaginationComponent.css"
-
-export class PaginationComponent extends React.Component {
-    constructor(props) {
-      super(props)
-    
-      this.state = {
-         
-      }
-    }
-
-  render() {
-    return (
-      <div className='pagination-wrapper'>
-         <Pagination className='paginationcomponent-pagination' onChange={(event) => this.props.changePageHandler(event.currentTarget.textContent)} 
-         count={this.props.numberOfPages} color="primary" />
-      </div>
-    )
-  }
-}
-
-export default PaginationComponent
-
Index: phonelux-frontend/src/components/PhoneCardComponent/PhoneCardComponent.css
===================================================================
--- phonelux-frontend/src/components/PhoneCardComponent/PhoneCardComponent.css	(revision 527b93f9d268998c8652c2f6a916a078873fb0c6)
+++ phonelux-frontend/src/components/PhoneCardComponent/PhoneCardComponent.css	(revision e5b84dc652434cab61718f38889fc36867569866)
@@ -1,14 +1,20 @@
 .phonecard{
-    background-color: #B6E2C8;
+    /* background-color: #B6E2C8; */
     padding:15px;
     justify-items: center;
+    padding-top: 35px;
     width: 250px;
     height: 400px;
     border-radius: 25px;
+    border: 3px solid #B6E2C8;
+    border-radius: 50px;
 }
 
 .phonecard:hover{
-    background-color: #84c69f;
+    /* background-color: #B6E2C8; */
     cursor: pointer;
+    box-shadow: 0 12px 16px 0 rgba(0,0,0,0.24), 0 17px 50px 0 rgba(0,0,0,0.19);
+    transition: box-shadow 0.5s, background-color 0.5s ;
+    border-radius: 50px;
 }
 
@@ -26,11 +32,20 @@
 
 .phonecard-lowestprice-header, .phonecard-totaloffers-header{
-    margin-top: -10px;
-    color: rgb(34, 106, 106);
-    text-align: center;
+    margin-top: 20px;
+    text-align: right;
+}
+
+.phonecard-totaloffers-header{
+    margin-top: -15px;
 }
 
 .phonecard-model-header{
     text-align: center;
+    border: 1px solid rgb(161, 165, 163);
+    border-radius: 20px 100px;
+    background-color: rgb(222, 228, 225);
+    padding: 5px;
+    padding-right: 10px;
+    
 }
 
@@ -44,4 +59,12 @@
 }
 
+.phonecard-lowestprice-header{
+    /* color: rgb(24, 117, 24); */
+}
+
+.phonecard-totaloffers-header{
+    /* color: rgb(24, 117, 24); */
+}
+
 .phonecard > h5 > p{
     display: inline;
Index: phonelux-frontend/src/components/PhoneCardComponent/PhoneCardComponent.js
===================================================================
--- phonelux-frontend/src/components/PhoneCardComponent/PhoneCardComponent.js	(revision 527b93f9d268998c8652c2f6a916a078873fb0c6)
+++ phonelux-frontend/src/components/PhoneCardComponent/PhoneCardComponent.js	(revision e5b84dc652434cab61718f38889fc36867569866)
@@ -24,5 +24,5 @@
         <h3 className='phonecard-model-header'>{this.props.model}</h3>
         <h5 className='phonecard-lowestprice-header'>Најниска цена: <p className='phonecard-lowestprice'>{this.props.lowestPrice}</p> ден.</h5>
-        <h6 className='phonecard-totaloffers-header'>Вкупно понуди: <p className='phonecard-totaloffers'>{this.props.total_offers}</p></h6>
+        <h5 className='phonecard-totaloffers-header'>Вкупно понуди: <p className='phonecard-totaloffers'>{this.props.total_offers}</p></h5>
       </div>
       </Paper>
Index: phonelux-frontend/src/components/PhoneCardGridComponent/PhoneCardGridComponent.css
===================================================================
--- phonelux-frontend/src/components/PhoneCardGridComponent/PhoneCardGridComponent.css	(revision 527b93f9d268998c8652c2f6a916a078873fb0c6)
+++ phonelux-frontend/src/components/PhoneCardGridComponent/PhoneCardGridComponent.css	(revision e5b84dc652434cab61718f38889fc36867569866)
@@ -15,3 +15,11 @@
 }
 
+.pagination-wrapper{
+    margin-top: 40px;
+    padding-bottom: 40px;
+    display: flex;
+    justify-content: center;
+}
 
+
+
Index: phonelux-frontend/src/components/PhoneCardGridComponent/PhoneCardGridComponent.js
===================================================================
--- phonelux-frontend/src/components/PhoneCardGridComponent/PhoneCardGridComponent.js	(revision 527b93f9d268998c8652c2f6a916a078873fb0c6)
+++ phonelux-frontend/src/components/PhoneCardGridComponent/PhoneCardGridComponent.js	(revision e5b84dc652434cab61718f38889fc36867569866)
@@ -1,6 +1,5 @@
-import { Grid } from '@mui/material'
+import { Grid, Pagination } from '@mui/material'
 import axios from 'axios'
 import React, { Component } from 'react'
-import PaginationComponent from '../PaginationComponent/PaginationComponent'
 import '../PhoneCardComponent/PhoneCardComponent'
 import PhoneCardComponent from '../PhoneCardComponent/PhoneCardComponent'
@@ -15,5 +14,4 @@
     this.state = {
       phones: [],
-      loading: true,
       currentPage: 1,
       phonesPerPage: 12,
@@ -24,13 +22,50 @@
   }
 
+  componentDidUpdate(prevProps) {
+    if(JSON.stringify(prevProps) != JSON.stringify(this.props)){
+      let filters = '?'
+
+      if(this.props.shops)
+      {
+        filters += 'shops='+this.props.shops+'&'
+      }
+      if(this.props.brands)
+      {
+        filters += 'brands='+this.props.brands+'&'
+      }
+      if(this.props.priceRange)
+      {
+        filters += 'priceRange='+this.props.priceRange+'&'
+      }
+      if(this.props.searchValue)
+      {
+        filters += 'searchValue='+this.props.searchValue+'&'
+      }
+
+      if(this.props.sortBy)
+      {
+        filters += 'sortBy='+this.props.sortBy+'&'
+      }
+
+      axios.get('/phones'+filters)
+      .then(response => {
+        this.setState({
+          phones: response.data,
+          numberOfPages: Math.ceil(response.data.length / this.state.phonesPerPage)
+        },(e) => this.setNewPage(e,this.state.currentPage))
+      }
+      )
+      .catch(error => console.log(error))
+      console.log(filters)
+    }
+  }
+
   componentDidMount() {
-
     axios.get('/phones')
       .then(response => {
         this.setState({
           phones: response.data,
-          loading: false,
           numberOfPages: Math.ceil(response.data.length / this.state.phonesPerPage)
-        },() => this.setNewPage(this.state.currentPage))
+        },(e) => this.setNewPage(e,this.state.currentPage))
       }
       )
@@ -38,17 +73,8 @@
   }
 
-  setNewPage = (newPage) => {
-    if(newPage == '')
-    {
-      newPage = this.state.currentPage-1
-    }
 
-    if(newPage == '')
-    {
-      newPage = this.state.currentPage+1
-    }
+  setNewPage = (event,page) => {
 
-
-    const indexOfLastPhone = parseInt(newPage) * this.state.phonesPerPage;
+    const indexOfLastPhone = parseInt(page) * this.state.phonesPerPage;
     const indexOfFirstPhone = indexOfLastPhone - this.state.phonesPerPage;
 
@@ -56,5 +82,5 @@
 
     this.setState({
-      currentPage: parseInt(newPage),
+      currentPage: parseInt(page),
       currentPhones: currPhones
     })
@@ -63,4 +89,5 @@
 
   render() {
+
     return (
       <div className='phonecardgrid-wrapper'>
@@ -71,19 +98,15 @@
        spacing={2}>
 
-        {this.state.currentPhones.map((phone) => <Grid className='phonecardgrid-item' item md={3}>
-          <PhoneCardComponent key={phone.id} id={phone.id} brand={phone.brand}
+        {this.state.currentPhones.map((phone,idx) => <Grid key={idx} className='phonecardgrid-item' item md={3}>
+          <PhoneCardComponent id={phone.id} brand={phone.brand}
           model={phone.model} image_url={phone.image_url == null ? phoneImage : phone.image_url} total_offers={phone.total_offers} lowestPrice={phone.lowestPrice}/></Grid>)}
 
-        {/* <Grid item xs={12} md={12}>
-        <PaginationComponent
-          currentPage={this.state.currentPage}
-          changePageHandler={this.setNewPage}
-          numberOfPages={this.state.numberOfPages} />
-          </Grid> */}
       </Grid>
-      <PaginationComponent
-          currentPage={this.state.currentPage}
-          changePageHandler={this.setNewPage}
-          numberOfPages={this.state.numberOfPages} />
+
+      <div className='pagination-wrapper'>
+         <Pagination className='paginationcomponent-pagination' onChange={this.setNewPage} page={this.state.currentPage}
+          count={this.state.numberOfPages} color="primary" />
+      </div>
+
       </div>
     )
Index: phonelux-frontend/src/components/PhoneOfferComponent/PhoneOfferComponent.css
===================================================================
--- phonelux-frontend/src/components/PhoneOfferComponent/PhoneOfferComponent.css	(revision 527b93f9d268998c8652c2f6a916a078873fb0c6)
+++ phonelux-frontend/src/components/PhoneOfferComponent/PhoneOfferComponent.css	(revision e5b84dc652434cab61718f38889fc36867569866)
@@ -0,0 +1,28 @@
+.phone-with-offers-table-row{
+    font-size: 18px;
+}
+
+.phone-with-offers-table-row > td:first-of-type {
+    font-weight: bold;
+}
+
+.phone-offer-specifications-button{
+    font-size: 17px;
+    padding: 10px;
+    background-color: #B6E2C8;
+    border-radius: 20px;
+    border: 1px solid black;
+}
+
+.phone-with-offers-table-row td:last-of-type{
+    display: flex;
+    justify-content: center;
+    flex-wrap: wrap;
+}
+
+.phone-offer-specifications-button:hover{
+    cursor: pointer;
+    background-color: rgb(166, 201, 171);
+    box-shadow: 0 12px 16px 0 rgba(0,0,0,0.24), 0 17px 50px 0 rgba(0,0,0,0.19);
+    transition: box-shadow 0.5s, background-color 0.5s ;
+}
Index: phonelux-frontend/src/components/PhoneOfferComponent/PhoneOfferComponent.js
===================================================================
--- phonelux-frontend/src/components/PhoneOfferComponent/PhoneOfferComponent.js	(revision 527b93f9d268998c8652c2f6a916a078873fb0c6)
+++ phonelux-frontend/src/components/PhoneOfferComponent/PhoneOfferComponent.js	(revision e5b84dc652434cab61718f38889fc36867569866)
@@ -1,3 +1,5 @@
 import React, { Component } from 'react'
+import { Link } from 'react-router-dom'
+import './PhoneOfferComponent.css'
 
 export class PhoneOfferComponent extends Component {
@@ -13,11 +15,15 @@
     
   render() {
-    console.log(this.props)
+    // console.log(this.props)
     return (
       <tr className='phone-with-offers-table-row'>
       <td>{this.props.offer_shop}</td>
-      <td><a href={this.props.offer_url}>{this.props.offer_name}</a></td>
+      <td><a style={{ textDecoration: 'none' }} href={this.props.offer_url}>{this.props.offer_name}</a></td>
       <td>{this.props.price} ден.</td>
-      <td></td>
+      <td>
+        <Link style={{ textDecoration: 'none' }} to={"/phoneoffer/"+this.props.id}>
+          <button className='phone-offer-specifications-button'>Спецификации</button>
+        </Link>
+        </td>
       </tr>
     )
@@ -27,24 +33,2 @@
 export default PhoneOfferComponent
 
-
-
-
-// back_camera: null
-// battery: null
-// chipset: null
-// color: null
-// cpu: null
-// front_camera: null
-// id: 486
-// image_url: "https://setec.mk/image/cache/catalog/Product/51841_0-228x228.jpg"
-// is_validated: false
-// last_updated: "2022-07-26T22:00:00.000+00:00"
-// offer_description: "Apple iPhone 13 128GB Midnight, GSM/CDMA/HSPA/EVDO/LTE/ 5G, Display: Super Retina XDR OLED; HDR10; Dolby Vision; 800 nits (HBM); 1200 nit…"
-// offer_name: "Apple iPhone 13 128GB Midnight"
-// offer_shop: "Setec"
-// offer_shop_code: "51841"
-// offer_url: "https://setec.mk/index.php?route=product/product&path=10066_10067&product_id=51841"
-// operating_system: null
-// price: 63990
-// ram_memory: null
-// rom_memory: null
Index: phonelux-frontend/src/components/PhoneOfferDetailsComponent/PhoneOfferDetailsComponent.css
===================================================================
--- phonelux-frontend/src/components/PhoneOfferDetailsComponent/PhoneOfferDetailsComponent.css	(revision e5b84dc652434cab61718f38889fc36867569866)
+++ phonelux-frontend/src/components/PhoneOfferDetailsComponent/PhoneOfferDetailsComponent.css	(revision e5b84dc652434cab61718f38889fc36867569866)
@@ -0,0 +1,72 @@
+.phone-offer-details-main{
+    width: 100%;
+}
+
+.phone-offer-details-table th{
+    text-align: center;
+    font-size: 38px;
+    padding: 20px;
+}
+
+.phone-offer-details-table thead tr{
+    background-color: #a6c9ab;
+}
+
+.phone-offer-details-table-row:nth-of-type(even){
+    background-color: #eef2f0;
+}
+
+.phone-offer-details-table-row{
+    border: 1px solid gainsboro;
+
+}
+
+.phone-offer-details-table{
+    border-collapse: collapse;
+    width: 80%;
+    table-layout: fixed;
+}
+
+.phone-offer-details-table-row td{
+    text-align: center;
+    word-wrap: break-word;
+    font-size: 22px;
+    padding: 20px;
+}
+
+.phone-offer-details-table-wrapper{
+    display: flex;
+    justify-content: center;
+    margin-top: 30px;
+}
+
+.phone-offer-details-table-section{
+    display: flex;
+    justify-content: center;
+    margin-bottom: 50px;
+}
+
+.phone-offer-details-table-row td a{
+    text-decoration: none;
+}
+
+.phone-offer-details-table-row td a:hover{
+    color: rgb(40, 117, 40);
+}
+
+.phone-offer-details-last-updated-header{
+    width: 25%;
+    margin-left: 20px;
+    padding: 10px;
+    border: 1px solid rgb(199, 193, 193);
+    background-color: #B6E2C8;
+    border-radius: 50px;
+    text-align: center;
+}
+
+.phone-offer-details-last-updated-wrapper{
+    display: flex;
+    justify-content: start;
+}
+
+
Index: phonelux-frontend/src/components/PhoneOfferDetailsComponent/PhoneOfferDetailsComponent.js
===================================================================
--- phonelux-frontend/src/components/PhoneOfferDetailsComponent/PhoneOfferDetailsComponent.js	(revision e5b84dc652434cab61718f38889fc36867569866)
+++ phonelux-frontend/src/components/PhoneOfferDetailsComponent/PhoneOfferDetailsComponent.js	(revision e5b84dc652434cab61718f38889fc36867569866)
@@ -0,0 +1,118 @@
+import React, { Component } from 'react'
+import axios from 'axios'
+import './PhoneOfferDetailsComponent.css'
+import HeaderComponent from '../HeaderComponent/HeaderComponent'
+
+
+export class PhoneOfferDetailsComponent extends Component {
+
+    constructor(props) {
+      super(props)
+    
+      this.state = {
+        offerId: window.location.href.split('/')[4],
+        offer: null
+      }
+    }
+
+    componentDidMount(){
+        axios.get('/phoneoffer/'+this.state.offerId)
+        .then(response => {
+            this.setState({
+                offer: response.data
+            })
+        }).catch(error => console.log(error))
+    }
+
+  render() {
+    console.log(this.state)
+    return (
+      <div className='phone-offer-details-main'>
+        <HeaderComponent/>
+        <div className='phone-offer-details-last-updated-wrapper'>
+          <h3 className='phone-offer-details-last-updated-header'>Последно ажурирана: {this.state.offer == null || 
+          this.state.offer.last_updated == null ? '#' : this.state.offer.last_updated.split('T')[0]}</h3>
+        </div>
+        <div className='phone-offer-details-table-wrapper'>
+        <div className='phone-offer-details-table-section'>
+        <table className='phone-offer-details-table'>
+          <thead>
+          <tr><th colSpan={2}>Детали за понудата</th></tr>
+          </thead>
+          <tbody>
+            <tr className='phone-offer-details-table-row'>
+              <td>Понуда</td><td><a href={this.state.offer == null || this.state.offer.offer_url == null ? 
+              '#' : this.state.offer.offer_url}>{this.state.offer == null || this.state.offer.offer_name == null ? 
+              '/' : this.state.offer.offer_name}</a></td>
+            </tr>
+
+            <tr className='phone-offer-details-table-row'>
+              <td>Продавница</td><td>{this.state.offer == null || 
+              this.state.offer.offer_shop == null ? '/' : this.state.offer.offer_shop}</td>
+            </tr>
+
+            <tr className='phone-offer-details-table-row'>
+              <td>Цена</td><td>{this.state.offer == null || 
+              this.state.offer.price == null ? '/' : this.state.offer.price+' ден.'}</td>
+            </tr>
+            <tr className='phone-offer-details-table-row'>
+              <td>Предна камера</td><td>{this.state.offer == null || 
+              this.state.offer.front_camera == null ? '/' : this.state.offer.front_camera}</td>
+            </tr>
+
+            <tr className='phone-offer-details-table-row'>
+              <td>Задна камера</td><td>{this.state.offer == null || 
+              this.state.offer.back_camera == null ? '/' : this.state.offer.back_camera}</td>
+            </tr>
+
+            <tr className='phone-offer-details-table-row'>
+              <td>РОМ меморија</td><td>{this.state.offer == null || 
+              this.state.offer.rom_memory == null ? '/' : this.state.offer.rom_memory}</td>
+            </tr>
+
+            <tr className='phone-offer-details-table-row'>
+              <td>РАМ меморија</td><td>{this.state.offer == null || 
+              this.state.offer.ram_memory == null ? '/' : this.state.offer.ram_memory}</td>
+            </tr>
+
+            <tr className='phone-offer-details-table-row'>
+              <td>Оперативен систем</td><td>{this.state.offer == null || 
+              this.state.offer.operating_system == null ? '/' : this.state.offer.operating_system}</td>
+            </tr>
+
+            <tr className='phone-offer-details-table-row'>
+              <td>Чипсет</td><td>{this.state.offer == null || 
+              this.state.offer.chipset == null ? '/' : this.state.offer.chipset}</td>
+            </tr>
+
+            <tr className='phone-offer-details-table-row'>
+              <td>Процесор</td><td>{this.state.offer == null || 
+              this.state.offer.cpu == null ? '/' : this.state.offer.cpu}</td>
+            </tr>
+
+            <tr className='phone-offer-details-table-row'>
+              <td>Батерија</td><td>{this.state.offer == null || 
+              this.state.offer.battery == null ? '/' : this.state.offer.battery}</td>
+            </tr>
+
+            <tr className='phone-offer-details-table-row'>
+              <td>Боја</td><td>{this.state.offer == null || 
+              this.state.offer.color == null ? '/' : this.state.offer.color}</td>
+            </tr>
+
+            <tr className='phone-offer-details-table-row'>
+              <td>Опис</td><td>{this.state.offer == null || 
+              this.state.offer.offer_description == null ? '/' : this.state.offer.offer_description}</td>
+            </tr>
+            
+          </tbody>
+        </table>
+        </div>
+        </div>
+
+      </div>
+    )
+  }
+}
+
+export default PhoneOfferDetailsComponent
Index: phonelux-frontend/src/components/PhoneWithOffersComponent/PhoneWithOffersComponent.css
===================================================================
--- phonelux-frontend/src/components/PhoneWithOffersComponent/PhoneWithOffersComponent.css	(revision 527b93f9d268998c8652c2f6a916a078873fb0c6)
+++ phonelux-frontend/src/components/PhoneWithOffersComponent/PhoneWithOffersComponent.css	(revision e5b84dc652434cab61718f38889fc36867569866)
@@ -23,5 +23,5 @@
 
 .phone-with-offers-table-row:nth-of-type(even){
-    background-color: #DEE4E1;
+    background-color: #eef2f0;
 }
 
@@ -51,2 +51,20 @@
     font-size: 22px;
 }
+
+.phone-with-offers-model-header{
+    border: 1px solid gray;
+    padding: 10px;
+    padding-left: 50px;
+    padding-right: 50px;
+    border-radius: 10px 60px;
+    box-shadow: inset 0px 0px 25px 0px rgb(120, 190, 139);
+    outline: none;
+    background-color: #c4f3d8;
+}
+
+.phone-with-offers-totaloffers-header{
+    padding: 10px;
+    border: 1px solid rgb(199, 193, 193);
+    background-color: #B6E2C8;
+    border-radius: 50px;
+}
Index: phonelux-frontend/src/components/PhoneWithOffersComponent/PhoneWithOffersComponent.js
===================================================================
--- phonelux-frontend/src/components/PhoneWithOffersComponent/PhoneWithOffersComponent.js	(revision 527b93f9d268998c8652c2f6a916a078873fb0c6)
+++ phonelux-frontend/src/components/PhoneWithOffersComponent/PhoneWithOffersComponent.js	(revision e5b84dc652434cab61718f38889fc36867569866)
@@ -31,5 +31,5 @@
         <div className='phone-with-offers-sub-main'>
             <div className='phone-with-offers-totaloffers-div'>
-                <h3>Понуди: {this.props.total_offers}</h3>
+                <h3 className='phone-with-offers-totaloffers-header'>Понуди: {this.props.total_offers}</h3>
             </div>
 
@@ -41,5 +41,5 @@
 
             <div className='phone-with-offers-model-wrapper'>
-            <h1>{this.props.model}</h1>
+            <h1 className='phone-with-offers-model-header'>{this.props.model}</h1>
             </div>
         </div>
@@ -58,5 +58,5 @@
             <tbody>
               {
-                this.state.phone_offers.map((offer) => <PhoneOfferComponent key={offer.offer_id} id={offer.id}
+                this.state.phone_offers.map((offer,idx) => <PhoneOfferComponent key={idx} id={offer.id}
                 is_validated={offer.is_validated} offer_shop={offer.offer_shop} offer_name={offer.offer_name}
                 price={offer.price} offer_url={offer.offer_url}
Index: phonelux-frontend/src/index.js
===================================================================
--- phonelux-frontend/src/index.js	(revision 527b93f9d268998c8652c2f6a916a078873fb0c6)
+++ phonelux-frontend/src/index.js	(revision e5b84dc652434cab61718f38889fc36867569866)
@@ -4,5 +4,7 @@
 import App from './App';
 import reportWebVitals from './reportWebVitals';
+import Data from './components/DataManager';
 
+window.Data = Data;
 const root = ReactDOM.createRoot(document.getElementById('root'));
 root.render(
Index: phonelux_scrappers/outputfile.txt
===================================================================
--- phonelux_scrappers/outputfile.txt	(revision 527b93f9d268998c8652c2f6a916a078873fb0c6)
+++ phonelux_scrappers/outputfile.txt	(revision e5b84dc652434cab61718f38889fc36867569866)
@@ -1,319 +1,571 @@
-id: 3
-id: 4
-id: 5
-id: 6
-id: 7
-id: 8
-id: 9
-id: 10
-id: 12
-id: 13
-id: 14
-id: 15
-id: 16
-id: 18
-id: 19
-id: 20
-id: 21
-id: 22
-id: 23
-id: 24
-id: 25
-id: 26
-id: 27
-id: 28
-id: 30
-id: 32
-id: 34
-id: 35
-id: 37
-id: 38
-id: 40
-id: 41
-id: 42
-id: 43
-id: 44
-id: 45
-id: 46
-id: 47
-id: 48
-id: 54
-id: 55
-id: 56
-id: 57
-id: 58
-id: 59
-id: 61
-id: 62
-id: 63
-id: 64
-id: 65
-id: 68
-id: 69
-id: 70
-id: 71
-id: 73
-id: 74
-id: 75
-id: 76
-id: 77
-id: 79
-id: 80
-id: 81
-id: 82
-id: 83
-id: 85
-id: 86
-id: 87
-id: 88
-id: 89
-id: 90
-id: 91
-id: 92
-id: 98
-id: 102
-id: 104
-id: 106
-id: 119
-id: 125
-id: 126
-id: 129
-id: 140
-id: 153
-id: 156
-id: 159
-id: 161
-id: 173
-id: 184
-id: 194
-id: 195
-id: 196
-id: 199
-id: 200
-id: 201
-id: 202
-id: 203
-id: 204
-id: 205
-id: 206
-id: 207
-id: 208
-id: 209
-id: 210
-id: 211
-id: 214
-id: 215
-id: 216
-id: 217
-id: 219
-id: 220
-id: 221
-id: 222
-id: 223
-id: 224
-id: 225
-id: 226
-id: 227
-id: 228
-id: 229
-id: 230
-id: 231
-id: 232
-id: 233
-id: 234
-id: 235
-id: 237
-id: 238
-id: 239
-id: 240
-id: 241
-id: 243
-id: 244
-id: 245
-id: 246
-id: 247
-id: 249
-id: 250
-id: 251
-id: 252
-id: 253
-id: 255
-id: 256
-id: 257
-id: 260
-id: 261
-id: 262
-id: 263
-id: 264
-id: 265
-id: 266
-id: 267
-id: 270
-id: 271
-id: 272
-id: 273
-id: 274
-id: 275
-id: 276
-id: 277
-id: 278
-id: 279
-id: 280
-id: 282
-id: 285
-id: 286
-id: 287
-id: 288
-id: 289
-id: 290
-id: 291
-id: 292
-id: 293
-id: 294
-id: 295
-id: 296
-id: 297
-id: 298
-id: 299
-id: 300
-id: 301
-id: 304
-id: 305
-id: 306
-id: 307
-id: 308
-id: 309
-id: 310
-id: 313
-id: 314
-id: 315
-id: 316
-id: 318
-id: 319
-id: 321
-id: 323
-id: 325
-id: 326
-id: 327
-id: 328
-id: 329
-id: 330
-id: 331
-id: 332
-id: 333
-id: 334
-id: 336
-id: 337
-id: 338
-id: 340
-id: 341
-id: 342
-id: 343
-id: 344
-id: 345
-id: 346
-id: 348
-id: 349
-id: 350
-id: 351
-id: 352
-id: 353
-id: 354
-id: 355
-id: 356
-id: 357
-id: 358
-id: 359
-id: 360
-id: 361
-id: 362
-id: 363
-id: 364
-id: 365
-id: 366
-id: 367
-id: 368
-id: 369
-id: 370
-id: 371
-id: 372
-id: 373
-id: 374
-id: 375
-id: 376
-id: 377
-id: 378
-id: 379
-id: 380
-id: 381
-id: 382
-id: 383
-id: 384
-id: 385
-id: 386
-id: 387
-id: 388
-id: 389
-id: 390
-id: 391
-id: 392
-id: 393
-id: 394
-id: 395
-id: 396
-id: 397
-id: 398
-id: 399
-id: 400
-id: 401
-id: 402
-id: 403
-id: 404
-id: 405
-id: 406
-id: 407
-id: 408
-id: 409
-id: 410
-id: 411
-id: 412
-id: 413
-id: 414
-id: 415
-id: 416
-id: 417
-id: 418
-id: 419
-id: 420
-id: 421
-id: 422
-id: 423
-id: 424
-id: 425
-id: 426
-id: 427
-id: 428
-id: 429
-id: 430
-id: 431
-id: 432
-id: 433
-id: 434
-id: 435
-id: 436
-id: 437
-id: 438
-id: 439
-id: 440
-id: 441
-id: 442
-id: 443
-id: 444
-id: 445
-id: 446
-id: 447
-id: 448
-id: 449
-id: 450
-id: 451
-id: 452
+phone id: 3
+https://admin.ledikom.mk/uploads/items/1500/1649755126honor-50-1-250x300-pad.jpg?v=1
+phone id: 4
+https://setec.mk/image/cache/catalog/Product/74172_0-228x228.jpg
+phone id: 5
+https://admin.ledikom.mk/uploads/items/412/1641670848apple-iphone-13-1-250x300-pad.jpg?v=1
+phone id: 6
+https://admin.ledikom.mk/uploads/items/413/1641671221apple-iphone-13-pro-1-250x300-pad.jpg?v=1
+phone id: 7
+https://admin.ledikom.mk/uploads/items/411/1641668143apple-iphone-13-pro-max-1-250x300-pad.jpg?v=1
+phone id: 8
+https://admin.ledikom.mk/uploads/items/342/1641664916apple-iphone-12-1-250x300-pad.jpg?v=1
+phone id: 9
+https://admin.ledikom.mk/uploads/items/192/1641654006apple-iphone-11-1-250x300-pad.jpg?v=1
+phone id: 10
+https://mobitech.mk/wp-content/uploads/2022/01/apple-iphone-xr-new.jpg
+phone id: 12
+https://admin.ledikom.mk/uploads/items/372/1642792043samsung-galaxy-a32-1-250x300-pad.jpg?v=1
+phone id: 13
+https://admin.ledikom.mk/uploads/items/1501/1649755462honor-50-lite-1-250x300-pad.jpg?v=1
+phone id: 14
+https://mobitech.mk/wp-content/uploads/2021/12/apple-iphone-7r4-1.jpg
+phone id: 15
+https://mobitech.mk/wp-content/uploads/2021/12/apple-iphone-x-1.jpg
+phone id: 16
+https://mobitech.mk/wp-content/uploads/2021/12/apple-iphone-xs-new.jpg
+phone id: 18
+https://admin.ledikom.mk/uploads/items/83/1653051611nokia-105-2017-duos-1-250x300-pad.jpg?v=1
+phone id: 19
+https://admin.ledikom.mk/uploads/items/1478/1647544681samsung-galaxy-s22-5g-1-250x300-pad.jpg?v=1
+phone id: 20
+https://admin.ledikom.mk/uploads/items/392/1642792789samsung-galaxy-a22-5g-1-250x300-pad.jpg?v=1
+phone id: 21
+https://admin.ledikom.mk/uploads/items/1563/1651071492samsung-galaxy-a33-5g-1-250x300-pad.jpg?v=1
+phone id: 22
+https://www.neptun.mk/2022/04/07/23_e3fe9e55-914d-4ac3-89af-8aea5e659341.JPG?width=192
+phone id: 23
+https://admin.ledikom.mk/uploads/items/1497/1649754127samsung-galaxy-a13-1-250x300-pad.jpg?v=1
+phone id: 24
+https://mobelix.com.mk/storage/app/uploads/public/5eb/2bf/b67/thumb_2064_550_800_0_0_crop.jpg
+phone id: 25
+https://admin.ledikom.mk/uploads/items/3036/1655459489xiaomi-redmi-10-1-250x300-pad.jpg?v=1
+phone id: 26
+https://admin.ledikom.mk/uploads/items/1499/1649754737samsung-galaxy-a53-5g-1-250x300-pad.jpg?v=1
+phone id: 27
+https://www.neptun.mk/2021/10/09/15571370a_e41b8951-dd67-4951-a899-104b37ff4f9d.jpg?width=192
+phone id: 28
+https://admin.ledikom.mk/uploads/items/344/1642708501samsung-galaxy-s21-5g-1-250x300-pad.jpg?v=1
+phone id: 30
+https://mobigo.mk/wp-content/uploads/2021/12/huawei-nova-9-5g.jpg
+phone id: 32
+https://admin.ledikom.mk/uploads/items/406/1642794048samsung-a03s-1-250x300-pad.jpg?v=1
+phone id: 34
+https://mobigo.mk/wp-content/uploads/2021/07/xiaomi-redmi-note10-pro.jpg
+phone id: 35
+https://mobigo.mk/wp-content/uploads/2021/01/xiaomi-mi-10t-5g-pro.jpg
+phone id: 37
+https://www.a1.mk/documents/20126/2021612/POCO_X3_Pro.png
+phone id: 38
+https://admin.ledikom.mk/uploads/items/340/1642705059samsung-galaxy-a02s-1-250x300-pad.jpg?v=1
+phone id: 40
+https://admin.ledikom.mk/uploads/items/390/mi10tlite5g-978742-250x300-pad.jpg?v=1
+phone id: 41
+https://mobigo.mk/wp-content/uploads/2020/07/samsung-galaxy-a10s.jpg
+phone id: 42
+https://setec.mk/image/cache/catalog/Product/73862_0-228x228.jpg
+phone id: 43
+https://admin.ledikom.mk/uploads/items/351/1653051682nokia-3310-2017-1-250x300-pad.jpg?v=1
+phone id: 44
+https://mobigo.mk/wp-content/uploads/2019/07/huawei-p30-pro.jpg
+phone id: 45
+https://mobigo.mk/wp-content/uploads/2019/02/huawei-mate-20-pro-1.jpg
+phone id: 46
+https://admin.ledikom.mk/uploads/items/364/1642789715samsung-galaxy-a72-1-250x300-pad.jpg?v=1
+phone id: 47
+https://mobelix.com.mk/storage/app/uploads/public/605/319/381/thumb_2496_550_800_0_0_crop.jpg
+phone id: 48
+https://mobelix.com.mk/storage/app/uploads/public/605/31a/2d7/thumb_2499_550_800_0_0_crop.jpg
+phone id: 54
+https://mobelix.com.mk/storage/app/uploads/public/622/360/d34/thumb_3692_550_800_0_0_crop.png
+phone id: 55
+https://mobelix.com.mk/storage/app/uploads/public/5f8/037/ce9/thumb_2308_550_800_0_0_crop.png
+phone id: 56
+https://admin.ledikom.mk/uploads/items/395/mi10lite5g-836560-250x300-pad.jpg?v=1
+phone id: 57
+https://mobelix.com.mk/storage/app/uploads/public/5f2/bc0/63d/thumb_2194_550_800_0_0_crop.jpg
+phone id: 58
+https://mobelix.com.mk/storage/app/uploads/public/5dd/3c7/29c/thumb_1944_550_800_0_0_crop.jpg
+phone id: 59
+https://mobelix.com.mk/storage/app/uploads/public/623/876/e71/thumb_3713_550_800_0_0_crop.png
+phone id: 61
+https://mobelix.com.mk/storage/app/uploads/public/5de/4e7/f26/thumb_1978_550_800_0_0_crop.jpg
+phone id: 62
+https://mobelix.com.mk/storage/app/uploads/public/5e5/3c4/5e6/thumb_2034_550_800_0_0_crop.png
+phone id: 63
+https://mobelix.com.mk/storage/app/uploads/public/5de/4e7/49d/thumb_1976_550_800_0_0_crop.jpg
+phone id: 64
+https://mobelix.com.mk/storage/app/uploads/public/5c9/0dc/413/thumb_1773_550_800_0_0_crop.jpg
+phone id: 65
+https://mobelix.com.mk/storage/app/uploads/public/5cd/053/0ab/thumb_1811_550_800_0_0_crop.jpg
+phone id: 68
+https://mobelix.com.mk/storage/app/uploads/public/5bc/877/975/thumb_686_550_800_0_0_crop.jpg
+phone id: 69
+https://admin.ledikom.mk/uploads/items/436/1653051842nokia-6310-2021-1-250x300-pad.jpg?v=1
+phone id: 70
+https://admin.ledikom.mk/uploads/items/315/1644588871xiaomi-poco-x3-nfc-1-250x300-pad.jpg?v=1
+phone id: 71
+https://mobelix.com.mk/storage/app/uploads/public/5fd/343/c47/thumb_2416_550_800_0_0_crop.jpg
+phone id: 73
+https://www.neptun.mk/2022/01/13/1150569a91-b4ec-4484-a977-da071903f48b_37266053-7f21-42d2-bde9-ebb29a1220c6.jpg?width=192
+phone id: 74
+https://mobelix.com.mk/storage/app/uploads/public/5ff/f06/b11/thumb_2451_550_800_0_0_crop.png
+phone id: 75
+https://admin.ledikom.mk/uploads/items/345/1642711031samsung-galaxy-s21-5g-1-250x300-pad.jpg?v=1
+phone id: 76
+https://admin.ledikom.mk/uploads/items/362/1653383457asus-rog-phone-5-1-250x300-pad.jpg?v=1
+phone id: 77
+https://admin.ledikom.mk/uploads/items/343/1642708100samsung-galaxy-s21-ultra-5g-1-250x300-pad.jpg?v=1
+phone id: 79
+https://mobelix.com.mk/storage/app/uploads/public/606/eff/40a/thumb_2684_550_800_0_0_crop.png
+phone id: 80
+https://mobelix.com.mk/storage/app/uploads/public/609/2af/b4b/thumb_3135_550_800_0_0_crop.png
+phone id: 81
+https://mobelix.com.mk/storage/app/uploads/public/609/2af/c8d/thumb_3137_550_800_0_0_crop.png
+phone id: 82
+https://admin.ledikom.mk/uploads/items/359/1642789645samsung-galaxy-a52-1-250x300-pad.jpg?v=1
+phone id: 83
+https://admin.ledikom.mk/uploads/items/379/1653381685xiaomi-redmi-note-10-pro-max-1-250x300-pad.jpg?v=1
+phone id: 85
+https://setec.mk/image/cache/catalog/Product/60645_0-228x228.jpg
+phone id: 86
+https://admin.ledikom.mk/uploads/items/354/1642788228samsung-galaxy-m02s-1-250x300-pad.jpg?v=1
+phone id: 87
+https://mobelix.com.mk/storage/app/uploads/public/60d/ed0/0f3/thumb_3191_550_800_0_0_crop.png
+phone id: 88
+https://mobelix.com.mk/storage/app/uploads/public/60d/eef/d6a/thumb_3193_550_800_0_0_crop.png
+phone id: 89
+https://admin.ledikom.mk/uploads/items/398/1651156416xiaomi-mi-11-ultra-1-250x300-pad.jpg?v=1
+phone id: 90
+https://www.neptun.mk/2021/05/18/22222_28c3ee3c-d029-4ccd-a5a6-64aa1ab03fb2.jpg?width=192
+phone id: 91
+https://mobelix.com.mk/storage/app/uploads/public/5ee/0f2/e81/thumb_2131_550_800_0_0_crop.png
+phone id: 98
+https://www.a1.mk/documents/20126/2346005/Honor-X7-Front.png
+phone id: 102
+https://d3mrte3vpewnxc.cloudfront.net/img/products/full/22032022111538download(1).jpg
+phone id: 106
+https://www.neptun.mk/2022/02/22/xiaomiredminote11azulestelar01l_367116a3-c5cb-46a0-af2b-b97401a4155f.jpg?width=192
+phone id: 119
+https://mobitech.mk/wp-content/uploads/2021/12/apple-iphone-xs-max-new1.jpg
+phone id: 125
+https://admin.ledikom.mk/uploads/items/1498/1649754304samsung-galaxy-a23-1-250x300-pad.jpg?v=1
+phone id: 126
+https://admin.ledikom.mk/uploads/items/352/1642711564samsung-galaxy-a02-1-250x300-pad.jpg?v=1
+phone id: 129
+https://i2.wp.com/mobilezone.mk/wp-content/uploads/2021/08/12-pro-blue.png?resize=512%2C600&ssl=1
+phone id: 140
+https://www.a1.mk/documents/20126/2336887/Nokia+C21_Front_Blue.png
+phone id: 153
+https://admin.ledikom.mk/uploads/items/429/1641673183apple-iphone-13-mini-1-250x300-pad.jpg?v=1
+phone id: 156
+https://admin.ledikom.mk/uploads/items/1477/1647544699samsung-galaxy-s21-fe-5g-1-250x300-pad.jpg?v=1
+phone id: 173
+https://www.a1.mk/documents/20126/2315371/Honor-8X-2022-Front-Blue.png
+phone id: 184
+https://akcija.com.mk/app/img/products/gallery/2021/07/WIKVIEWBLAST_Wiko_View_4G_Black_32_+_3.webp
+phone id: 194
+https://admin.ledikom.mk/uploads/items/1502/1649758047google-pixel-6-1-250x300-pad.jpg?v=1
+phone id: 195
+https://mobelix.com.mk/storage/app/uploads/public/612/e29/ab9/thumb_3301_550_800_0_0_crop.png
+phone id: 196
+https://admin.ledikom.mk/uploads/items/408/galaxyzfold35g-874417-250x300-pad.jpg?v=1
+phone id: 199
+https://www.neptun.mk/2021/11/10/xiaomi11tproblancomedianoche04adl_dcdba358-c8be-4ed6-ada5-0dac8dd6a314.jpg?width=192
+phone id: 200
+https://mobelix.com.mk/storage/app/uploads/public/618/11f/35e/thumb_3446_550_800_0_0_crop.png
+phone id: 201
+https://www.a1.mk/documents/20126/1900464/A1-Alpha-21.png
+phone id: 202
+https://www.a1.mk/documents/20126/2152486/Motorola-MOTO-G60-Front.png
+phone id: 203
+https://admin.ledikom.mk/uploads/items/1503/1649766652google-pixel-6-pro-1-250x300-pad.jpg?v=1
+phone id: 204
+https://mobelix.com.mk/storage/app/uploads/public/61a/0c6/65d/thumb_3478_550_800_0_0_crop.png
+phone id: 205
+https://www.neptun.mk/2021/09/02/720_c7b32e05-41eb-47c4-b2e6-64b19d789d54.jpg?width=192
+phone id: 206
+https://admin.ledikom.mk/uploads/items/1485/1649682740xiaomi-redmi-note-11t-5g-1-250x300-pad.jpg?v=1
+phone id: 207
+https://mobelix.com.mk/storage/app/uploads/public/61f/26c/5d9/thumb_3564_550_800_0_0_crop.png
+phone id: 208
+https://mobelix.com.mk/storage/app/uploads/public/5eb/2cd/447/thumb_2075_550_800_0_0_crop.png
+phone id: 209
+https://www.a1.mk/documents/20126/1862420/Nokia-G10.png
+phone id: 210
+https://admin.ledikom.mk/uploads/items/299/1642704279samsung-galaxy-note20-1-250x300-pad.jpg?v=1
+phone id: 211
+https://admin.ledikom.mk/uploads/items/341/1642707896samsung-galaxy-note20-ultra-5g-1-250x300-pad.jpg?v=1
+phone id: 214
+https://mobelix.com.mk/storage/app/uploads/public/621/a31/b32/thumb_3662_550_800_0_0_crop.png
+phone id: 215
+https://www.neptun.mk/2022/07/21/54000_0a9e6bb1-320e-4b2e-a10a-0bfd4093b9fc.jpg?width=192
+phone id: 216
+https://admin.ledikom.mk/uploads/items/1492/1653141418xiaomi-redmi-note-11-pro-1-250x300-pad.jpg?v=1
+phone id: 217
+https://www.a1.mk/documents/20126/2336936/TCL-306_Atlantic-Blue_Front.png
+phone id: 219
+https://admin.ledikom.mk/uploads/items/2798/1652776962xiaomi-poco-x4-pro-5g-1-250x300-pad.jpg?v=1
+phone id: 220
+https://admin.ledikom.mk/uploads/items/1480/1647546041samsung-galaxy-s22-ultra-5g-1-250x300-pad.jpg?v=1
+phone id: 221
+https://mobelix.com.mk/storage/app/uploads/public/5ec/92e/6d3/thumb_2119_550_800_0_0_crop.png
+phone id: 222
+https://mobelix.com.mk/storage/app/uploads/public/624/5ca/928/thumb_3764_550_800_0_0_crop.png
+phone id: 223
+https://admin.ledikom.mk/uploads/items/1566/1651355303oneplus-10-pro-1-250x300-pad.jpg?v=1
+phone id: 224
+https://admin.ledikom.mk/uploads/items/1564/1651071926samsung-galaxy-a73-5g-1-250x300-pad.jpg?v=1
+phone id: 225
+https://mobelix.com.mk/storage/app/uploads/public/628/ba6/995/thumb_3840_550_800_0_0_crop.png
+phone id: 226
+https://mobelix.com.mk/storage/app/uploads/public/629/ddd/5ac/thumb_3862_550_800_0_0_crop.png
+phone id: 227
+https://admin.ledikom.mk/uploads/items/3026/1655278093samsung-galaxy-m33-5g-1-250x300-pad.jpg?v=1
+phone id: 228
+https://mobelix.com.mk/storage/app/uploads/public/62c/d2d/bb7/thumb_3883_550_800_0_0_crop.png
+phone id: 229
+https://mobelix.com.mk/storage/app/uploads/public/62d/574/ea8/thumb_3889_550_800_0_0_crop.png
+phone id: 233
+https://www.neptun.mk/2019/12/31/06a36488-e86c-4599-8c59-7c7a4c588c80_8dbb8b4f-de84-4ae3-8392-5468909ee0e0.png?width=192
+phone id: 234
+https://akcija.com.mk/app/img/products/gallery/2022/03/Alcatel_1066G_Black.webp
+phone id: 235
+https://www.neptun.mk/2018/08/14/Tiger_L5_Black_Special_v11.23_1c0a6cd6-8705-42ad-a6ba-db7c7b939b7c.jpg?width=192
+phone id: 237
+https://admin.ledikom.mk/uploads/items/1488/1649683643xiaomi-redmi-9c-nfc-1-250x300-pad.jpg?v=1
+phone id: 238
+https://admin.ledikom.mk/uploads/items/432/redmi9a-48378-250x300-pad.jpg?v=1
+phone id: 239
+https://www.neptun.mk/2022/03/21/realmec1120212gb32gb04azuladll_253ab3fd-0f10-4c00-97b3-062c3db73710.jpg?width=192
+phone id: 240
+https://akcija.com.mk/app/img/products/gallery/2022/03/Blackview_A80_Black_49835.jpg
+phone id: 241
+https://akcija.com.mk/app/img/products/gallery/2021/07/WIKVIEMAXWP2ANTST_Wiko_View_Max_Anthracite.webp
+phone id: 243
+https://akcija.com.mk/app/img/products/gallery/2021/07/WIKLENNYWK400ANTST_Wiko_Lenny5_WK400_Anthracit.webp
+phone id: 244
+https://www.neptun.mk/2021/06/04/xiaomi-black-shark-4-600x600-600x600_78632f44-8eab-4436-8d92-4c30017fa7c5.jpg?width=192
+phone id: 245
+https://www.neptun.mk/2021/10/21/gsmarena004_415d078d-4c7e-43c8-b76c-857922a385b2.jpg?width=192
+phone id: 246
+https://www.a1.mk/documents/20126/2315411/Honor-Magic-4-lite-5G-Black-Front.png
+phone id: 247
+https://www.a1.mk/documents/20126/2087663/POCO-M4_Pro-5G-black.png
+phone id: 249
+https://admin.ledikom.mk/uploads/items/2800/1652862618xiaomi-poco-f4-gt-1-250x300-pad.jpg?v=1
+phone id: 250
+https://www.neptun.mk/2022/07/25/Capture1_39933e15-2e42-4fdd-ad50-b26daefc653d.JPG?width=192
+phone id: 251
+https://www.neptun.mk/2020/12/29/2.jpeg?width=192
+phone id: 252
+https://www.a1.mk/documents/20126/1482115/LG-K52.png
+phone id: 253
+https://www.a1.mk/documents/20126/2097647/TCL-20-plus-Milky-Way-Grey.png
+phone id: 255
+https://admin.ledikom.mk/uploads/items/400/1653051754nokia-6300-4g-1-250x300-pad.jpg?v=1
+phone id: 256
+https://setec.mk/image/cache/catalog/Product/73864_0-228x228.jpg
+phone id: 257
+https://www.neptun.mk/2022/07/21/22.JPG?width=192
+phone id: 260
+https://www.neptun.mk/2021/11/24/white_542da90b-c215-4e75-b6a0-416d1cbb745c.JPG?width=192
+phone id: 261
+https://www.a1.mk/documents/20126/622141/CAT-S62-front.png
+phone id: 262
+https://www.a1.mk/documents/20126/622141/CAT-B26.png
+phone id: 263
+https://www.a1.mk/documents/20126/2014065/Alcatel-3082-4G.png
+phone id: 264
+https://www.a1.mk/documents/20126/1384010/Doro_1370.png
+phone id: 265
+https://www.a1.mk/documents/20126/1741700/Alcatel-3080.png
+phone id: 266
+https://www.a1.mk/documents/20126/1384010/Doro_2404.png
+phone id: 267
+https://www.a1.mk/documents/20126/2065640/Motorola-MOTO-E20.png
+phone id: 270
+https://www.neptun.mk/2020/02/05/resizer.php_49f522a0-9f44-4a37-8212-e0e1b2995fa8.jpg?width=192
+phone id: 271
+https://setec.mk/image/cache/catalog/Product/48063_0-228x228.jpg
+phone id: 272
+https://setec.mk/image/cache/catalog/Product/50397_0-228x228.jpg
+phone id: 273
+https://setec.mk/image/cache/catalog/Product/52379_0-228x228.jpg
+phone id: 274
+https://setec.mk/image/cache/catalog/Product/53519_0-228x228.jpg
+phone id: 275
+https://d3mrte3vpewnxc.cloudfront.net/img/products/full/27062022151936download.jpg
+phone id: 276
+https://d3mrte3vpewnxc.cloudfront.net/img/products/full/a60problack_1.jpg
+phone id: 277
+https://setec.mk/image/cache/catalog/Product/49840_0-228x228.jpg
+phone id: 278
+https://setec.mk/image/cache/catalog/Product/48542_0-228x228.jpg
+phone id: 279
+https://setec.mk/image/cache/catalog/Product/52744_0-228x228.jpg
+phone id: 280
+https://setec.mk/image/cache/catalog/Product/50394_0-228x228.jpg
+phone id: 282
+https://www.neptun.mk/2021/01/27/111_3237af8a-8b15-4e3e-aff8-38a86a1bcb40.jpg?width=192
+phone id: 285
+https://www.neptun.mk/2022/03/21/C21Y-Black_3fe958bc-9eeb-4bc6-8cc5-5caa930a4369.jpg?width=192
+phone id: 286
+https://setec.mk/image/cache/catalog/Product/49553_0-228x228.jpg
+phone id: 287
+https://setec.mk/image/cache/catalog/Product/74712_0-228x228.jpg
+phone id: 288
+https://setec.mk/image/cache/catalog/Product/48099_0-228x228.jpg
+phone id: 289
+https://d3mrte3vpewnxc.cloudfront.net/img/products/full/g10-auroragrey-front.jpg
+phone id: 290
+https://setec.mk/image/cache/catalog/Product/52740_0-228x228.jpg
+phone id: 291
+https://setec.mk/image/cache/catalog/Product/74998_0-228x228.jpg
+phone id: 292
+https://setec.mk/image/cache/catalog/Product/52389_0-228x228.jpg
+phone id: 293
+https://www.neptun.mk/2022/06/23/156755-1200-1200.png?width=192
+phone id: 294
+https://setec.mk/image/cache/catalog/Product/75793_0-228x228.jpg
+phone id: 295
+https://www.neptun.mk/2022/06/23/156729-1200-1200.png?width=192
+phone id: 296
+https://setec.mk/image/cache/catalog/Product/74694_0-228x228.jpg
+phone id: 297
+https://www.neptun.mk/2021/10/18/746380-1000x1000_4a0ec6bb-6131-439e-a4b4-406e57caf52e.jpg?width=192
+phone id: 298
+https://setec.mk/image/cache/catalog/Product/74996_0-228x228.jpg
+phone id: 299
+https://www.neptun.mk/2022/03/21/2_50b1868c-30f0-4a9a-a8c5-180a3868aef5.JPG?width=192
+phone id: 300
+https://setec.mk/image//var/www/setec/image/catalog/Product/75706_0.jpg
+phone id: 301
+https://setec.mk/image/cache/catalog/Product/74997_0-228x228.jpg
+phone id: 304
+https://setec.mk/image/cache/catalog/Product/75805_0-228x228.jpg
+phone id: 305
+https://www.neptun.mk/2022/03/22/33.JPG?width=192
+phone id: 306
+https://setec.mk/image/cache/catalog/Product/75703_0-228x228.jpg
+phone id: 307
+https://setec.mk/image/cache/catalog/Product/74704_0-228x228.jpg
+phone id: 308
+https://admin.ledikom.mk/uploads/items/368/1644923487xiaomi-mi-11-lite-1-250x300-pad.jpg?v=1
+phone id: 309
+https://www.neptun.mk/2022/06/23/156684-1600-1600.png?width=192
+phone id: 310
+https://admin.ledikom.mk/uploads/items/3042/1655899106oneplus-nord-ce-5g-1-250x300-pad.jpg?v=1
+phone id: 313
+https://www.neptun.mk/2022/03/21/11_e8705b0f-d153-4b36-b5f5-776e49163dbd.JPG?width=192
+phone id: 314
+https://www.neptun.mk/2022/05/13/xiaomi-11t-5g-8gb-128gb-dual-sim-blanco41319a91-e898-4122-9dad-0f3115643b9f_65cc4f17-4add-4eea-a64e-49b60f2d45b1.jpg?width=192
+phone id: 315
+https://setec.mk/image/cache/catalog/Product/75403_0-228x228.jpg
+phone id: 316
+https://admin.ledikom.mk/uploads/items/2756/1651663563xiaomi-12x-1-250x300-pad.jpg?v=1
+phone id: 318
+https://admin.ledikom.mk/uploads/items/1562/1651071199xiaomi-12-1-250x300-pad.jpg?v=1
+phone id: 319
+https://admin.ledikom.mk/uploads/items/401/1642796375samsung-galaxy-z-flip3-5g-1-250x300-pad.jpg?v=1
+phone id: 321
+https://d3mrte3vpewnxc.cloudfront.net/img/products/full/11022022143748download.jpg
+phone id: 323
+https://i2.wp.com/mobilezone.mk/wp-content/uploads/2021/08/12-pro-max-blue.png?resize=512%2C600&ssl=1
+phone id: 325
+https://i0.wp.com/mobilezone.mk/wp-content/uploads/2021/08/12-mini-blue.png?resize=512%2C600&ssl=1
+phone id: 326
+https://i2.wp.com/mobilezone.mk/wp-content/uploads/2021/08/11-pro-black.png?resize=512%2C600&ssl=1
+phone id: 327
+https://i0.wp.com/mobilezone.mk/wp-content/uploads/2021/08/11-pro-max-black.png?resize=512%2C600&ssl=1
+phone id: 328
+https://admin.ledikom.mk/uploads/items/1481/1649102984apple-iphone-se-2022-1-250x300-pad.jpg?v=1
+phone id: 329
+https://admin.ledikom.mk/uploads/items/1479/1647545279samsung-galaxy-s22-5g-1-250x300-pad.jpg?v=1
+phone id: 330
+https://admin.ledikom.mk/uploads/items/297/1642703362samsung-galaxy-a01-core-1-250x300-pad.jpg?v=1
+phone id: 331
+phone id: 332
+phone id: 333
+phone id: 334
+phone id: 336
+https://admin.ledikom.mk/uploads/items/319/1642704346samsung-galaxy-s20-fe-1-250x300-pad.jpg?v=1
+phone id: 337
+https://setec.mk/image/cache/catalog/Product/73860_0-228x228.jpg
+phone id: 338
+https://admin.ledikom.mk/uploads/items/1486/1649685350xiaomi-redmi-9i-1-250x300-pad.jpg?v=1
+phone id: 340
+https://setec.mk/image/cache/catalog/Product/74714_0-228x228.jpg
+phone id: 341
+https://www.neptun.mk/2021/06/14/xiaomiredminote105g00v2grisadl_a83a542a-c9d1-4475-8fc7-dae3521b9bc6.jpg?width=192
+phone id: 342
+https://www.neptun.mk/2022/07/19/51UhkQTNxmL.ACSL1000_37699529-bf74-498e-9d9b-ecc8e6b57976.jpg?width=192
+phone id: 343
+https://www.neptun.mk/2022/05/13/222_e9b3e0e4-4026-4d87-9b5f-44f05b306611.JPG?width=192
+phone id: 344
+https://admin.ledikom.mk/uploads/items/3044/1656151222xiaomi-12-pro-1-250x300-pad.jpg?v=1
+phone id: 345
+phone id: 346
+phone id: 348
+phone id: 349
+phone id: 350
+phone id: 351
+phone id: 352
+https://admin.ledikom.mk/uploads/items/356/1642789488samsung-galaxy-m62-1-250x300-pad.jpg?v=1
+phone id: 353
+phone id: 354
+phone id: 355
+phone id: 356
+https://d3mrte3vpewnxc.cloudfront.net/img/products/full/14102020175047ory-unlocked-global-872783_800x.jpg
+phone id: 357
+https://mobelix.com.mk/storage/app/uploads/public/613/094/943/thumb_3309_550_800_0_0_crop.png
+phone id: 358
+https://www.neptun.mk/2019/11/19/555.jpg_99d86467-c5a7-42e7-8896-2ff76ac4874d.PNG?width=192
+phone id: 359
+https://www.neptun.mk/2019/11/19/555.jpg_e9a27a11-7377-40e5-ba21-2c42a6216ed8.PNG?width=192
+phone id: 360
+https://www.neptun.mk/2021/10/25/20200514120927alcatel3025x256mbmetallicblue_5968b52f-10cf-408c-96ee-6ebb76a83d0e.jpeg?width=192
+phone id: 361
+https://www.neptun.mk/2021/10/25/71qaRJFLH2L.ACSS450_58ea1f14-bd9f-49a4-91e2-2af91b5826a0.jpg?width=192
+phone id: 362
+https://www.neptun.mk/2021/03/15/1122_3c24c189-3b4b-4b37-9d43-1232b082244b.png?width=192
+phone id: 363
+https://www.neptun.mk/2021/11/21/Alcatel-1S-2021513x599-1_6c7faa25-0939-4db9-b9ec-b80be480509f.png?width=192
+phone id: 364
+https://akcija.com.mk/app/img/products/gallery/2022/03/Alcatel_5024D_1S_3GB-32GB_LTE_Dual-Sim_Metallic_Black.webp
+phone id: 365
+https://www.neptun.mk/2020/06/03/12_b9efc36f-7581-4ace-a550-007ac853a6cd.jpg?width=192
+phone id: 366
+https://www.a1.mk/documents/20126/2333741/Alcatel-1B_Front.png
+phone id: 367
+phone id: 368
+phone id: 369
+https://www.neptun.mk/2020/08/14/1122_7fa6daf3-975e-4abe-9edb-197b70ffb150.jpeg?width=192
+phone id: 370
+https://www.a1.mk/documents/20126/2142278/Alcatel-1-2021.png
+phone id: 371
+phone id: 372
+phone id: 373
+https://d3mrte3vpewnxc.cloudfront.net/img/products/full/a70problack.jpg
+phone id: 374
+https://d3mrte3vpewnxc.cloudfront.net/img/products/full/c20purple.jpg
+phone id: 375
+https://d3mrte3vpewnxc.cloudfront.net/img/products/full/doogee_x96_2gb_32gb_rojo_01_l.jpg
+phone id: 376
+https://d3mrte3vpewnxc.cloudfront.net/img/products/full/doogee-x96-pro_arenamobiles.jpg
+phone id: 377
+https://d3mrte3vpewnxc.cloudfront.net/img/products/full/10112021121646x95black_1.jpg
+phone id: 378
+https://d3mrte3vpewnxc.cloudfront.net/img/products/full/x95black_1.jpg
+phone id: 379
+https://d3mrte3vpewnxc.cloudfront.net/img/products/full/thumb_548333_default_big.jpg
+phone id: 380
+https://d3mrte3vpewnxc.cloudfront.net/img/products/full/doogee_s58_pro_6gb_64gb_05_negro_ad_l.jpg
+phone id: 381
+https://www.neptun.mk/2021/07/02/4_6eaa4b73-2e6d-40b3-86c2-6c5940433cbd.JPG?width=192
+phone id: 382
+https://www.neptun.mk/2020/11/17/77_55ded608-c4a7-45f6-84e2-1dd826f4db2c.jpg?width=192
+phone id: 383
+https://www.neptun.mk/2021/07/02/1_3c75a06b-29ee-459b-8260-3c065616cf65.JPG?width=192
+phone id: 384
+https://www.neptun.mk/2021/11/24/Motorola-Edge-20-Pro-128GB-Midnight-Blue-0840023220623-01102021-01-p_6099d602-c2c4-428c-9560-1dd79df3338d.jpg?width=192
+phone id: 385
+https://www.a1.mk/documents/20126/1706113/MOTO-G50.png
+phone id: 386
+https://www.neptun.mk/2021/11/04/gsmarena004_6a7fd9b3-8102-4bb7-960b-0c72ca683936.jpg?width=192
+phone id: 387
+https://www.neptun.mk/2022/06/23/156709-1600-1600.png?width=192
+phone id: 388
+https://www.neptun.mk/2022/06/23/157221-1600-auto.png?width=192
+phone id: 389
+https://www.neptun.mk/2022/03/21/51u9-q9539L.SL1000_f04a7be5-ad53-445d-9bde-9a33c0ff3f33.jpg?width=192
+phone id: 390
+https://www.neptun.mk/2022/03/21/Realme-9-Pro-Plus-Green_d8eec8b7-5912-4dea-b36b-a3f66832abd4.jpg?width=192
+phone id: 391
+https://www.neptun.mk/2022/03/21/222_4c36f6d2-1a4b-4e91-a096-21d115330db2.JPG?width=192
+phone id: 392
+https://mobelix.com.mk/storage/app/uploads/public/619/e62/78d/thumb_3468_550_800_0_0_crop.png
+phone id: 393
+https://www.neptun.mk/2022/03/21/523920-1000x1000_e0d86853-abff-4048-bd07-e6d6ca0915db.jpg?width=192
+phone id: 394
+https://www.neptun.mk/2022/03/21/6935117828220-003-1400Wx1400H_90483936-5a39-47cb-b1c8-f9e868d765c8.jpg?width=192
+phone id: 395
+https://www.neptun.mk/2019/10/16/hq_c86c98c2-729b-49d5-aab9-216be2fea777.jpg?width=192
+phone id: 396
+phone id: 397
+https://d3mrte3vpewnxc.cloudfront.net/img/products/full/nokia_106.jpg
+phone id: 398
+phone id: 399
+phone id: 400
+https://www.neptun.mk/2022/07/08/45_7f5afee7-d808-4111-9853-738a7b5993a3.JPG?width=192
+phone id: 401
+https://www.neptun.mk/2022/07/21/1234_97e5321e-7ec0-438b-8c9b-0c89acb73b2f.JPG?width=192
+phone id: 402
+https://www.neptun.mk/2022/07/08/333_bda690bd-c2a4-4ee4-82c7-3e4001fd1655.JPG?width=192
+phone id: 403
+https://www.neptun.mk/2021/12/16/infinix-note-11-pro-8-128-zeleni-mobilni-6-95-quot-octa-core-mediatek-helio-g96-8gb-128gb-64mpx-13mpx-2mpx-dual-simZFNfn4_2d108fb3-756e-4d1b-a41a-afeae6104ac9.jpg?width=192
+phone id: 404
+https://d3mrte3vpewnxc.cloudfront.net/img/products/full/max10black_1.jpg
+phone id: 405
+https://d3mrte3vpewnxc.cloudfront.net/img/products/full/flex50gtturnedred.jpg
+phone id: 406
+https://d3mrte3vpewnxc.cloudfront.net/img/products/full/09142292_name.jpg
+phone id: 407
+phone id: 408
+phone id: 409
+phone id: 410
+phone id: 411
+phone id: 412
+phone id: 413
+phone id: 414
+phone id: 415
+https://mobelix.com.mk/storage/app/uploads/public/5cd/051/f4c/thumb_1809_550_800_0_0_crop.jpg
+phone id: 416
+https://d3mrte3vpewnxc.cloudfront.net/img/products/full/510095mub.jpg
+phone id: 417
+phone id: 418
+phone id: 419
+phone id: 420
+phone id: 421
+https://i0.wp.com/mobilezone.mk/wp-content/uploads/2021/11/Honor-9x-lite-black.png?resize=512%2C600&ssl=1
+phone id: 422
+phone id: 423
+https://www.a1.mk/documents/20126/2117931/Wiko_Y62.png
+phone id: 424
+https://d3mrte3vpewnxc.cloudfront.net/img/products/full/21122021152115ilt-in-camera-main-camera-03-mp.jpg
+phone id: 425
+https://d3mrte3vpewnxc.cloudfront.net/img/products/full/21122021141255download.jpg
+phone id: 426
+phone id: 427
+phone id: 428
+phone id: 429
+phone id: 430
+phone id: 431
+phone id: 432
+phone id: 433
+phone id: 434
+phone id: 435
+phone id: 436
+phone id: 437
+phone id: 438
+phone id: 439
+phone id: 440
+https://admin.ledikom.mk/uploads/items/3040/1655892316oppo-a94-5g-1-250x300-pad.jpg?v=1
+phone id: 441
+https://admin.ledikom.mk/uploads/items/3041/1655898755oppo-find-x5-lite-5g-1-250x300-pad.jpg?v=1
+phone id: 442
+phone id: 443
+phone id: 444
+https://d3mrte3vpewnxc.cloudfront.net/img/products/full/11012022150451veteranivplus_1.jpg
+phone id: 445
+https://d3mrte3vpewnxc.cloudfront.net/img/products/full/seniorflipxl_1.jpg
+phone id: 446
+https://d3mrte3vpewnxc.cloudfront.net/img/products/full/denver-bas-18300m-1.jpg
+phone id: 447
+https://d3mrte3vpewnxc.cloudfront.net/img/products/full/23022022105342123.jpg
+phone id: 448
+phone id: 449
+phone id: 450
+phone id: 451
+phone id: 452
+https://d3mrte3vpewnxc.cloudfront.net/img/products/full/09150922_name.jpg
Index: phonelux_scrappers/phones_image_setter.py
===================================================================
--- phonelux_scrappers/phones_image_setter.py	(revision e5b84dc652434cab61718f38889fc36867569866)
+++ phonelux_scrappers/phones_image_setter.py	(revision e5b84dc652434cab61718f38889fc36867569866)
@@ -0,0 +1,45 @@
+import unicodedata
+from datetime import datetime
+
+import psycopg2
+import config_read
+from bs4 import BeautifulSoup
+import requests
+
+import sys
+
+file_path = 'outputfile.txt'
+sys.stdout = open(file_path, "w")
+
+# Call to read the configuration file and connect to database
+cinfo = config_read.get_databaseconfig("postgresdb.config")
+db_connection = psycopg2.connect(
+    database=cinfo[0],
+    host=cinfo[1],
+    user=cinfo[2],
+    password=cinfo[3]
+)
+cur = db_connection.cursor()
+
+cur.execute('SELECT * FROM PHONES ORDER BY id')
+
+db_connection.commit()
+phones = cur.fetchall()
+
+for phone in phones:
+    print(phone)
+    phone_id = phone[0]
+    cur.execute('SELECT phone_offers.image_url FROM phone_offers JOIN phones ON'
+                ' phone_offers.phone_id = phones.id WHERE '
+                'phones.id='+str(phone_id)+' AND phone_offers.image_url IS NOT NULL LIMIT 1')
+    tuple_image = cur.fetchone()
+    if tuple_image is not None:
+        print(tuple_image[0])
+        cur.execute('UPDATE phones SET image_url = \''+tuple_image[0]+'\' WHERE id='+str(phone_id));
+        db_connection.commit()
+    else:
+        print('None');
+
+
+cur.close()
+db_connection.close()
