Index: src/main/java/com/example/domify/config/WebConfig.java
===================================================================
--- src/main/java/com/example/domify/config/WebConfig.java	(revision c00dc7ec0b66996281722aaa7f48acbc4af9bbf4)
+++ src/main/java/com/example/domify/config/WebConfig.java	(revision c00dc7ec0b66996281722aaa7f48acbc4af9bbf4)
@@ -0,0 +1,18 @@
+package com.example.domify.config;
+
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+@Configuration
+public class WebConfig implements WebMvcConfigurer {
+
+    @Override
+    public void addResourceHandlers(ResourceHandlerRegistry registry) {
+        registry.addResourceHandler("/uploads/**")
+                .addResourceLocations("file:uploads/");
+
+        registry.addResourceHandler("/static/**")
+                .addResourceLocations("classpath:/static/");
+    }
+}
Index: src/main/java/com/example/domify/service/impl/PropertiesServiceImpl.java
===================================================================
--- src/main/java/com/example/domify/service/impl/PropertiesServiceImpl.java	(revision 46a6e8cbdf9e59478b3f187df7ab6e0cd5671c47)
+++ src/main/java/com/example/domify/service/impl/PropertiesServiceImpl.java	(revision c00dc7ec0b66996281722aaa7f48acbc4af9bbf4)
@@ -10,10 +10,13 @@
 import com.example.domify.repository.PropertyTypeRepository;
 import com.example.domify.service.PropertiesService;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.web.multipart.MultipartFile;
-
-import java.io.File;
 import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
 import java.time.LocalDateTime;
+import java.util.Arrays;
 import java.util.List;
 import java.util.Optional;
@@ -26,5 +29,14 @@
     private final AddressRepository addressRepository;
 
-    public PropertiesServiceImpl(PropertyRepository propertyRepository, PropertyTypeRepository propertyTypeRepository, PropertyImageRepository propertyImageRepository, AddressRepository addressRepository) {
+    @Value("${app.upload.dir:static/uploads/properties/}")
+    private String uploadDir;
+
+    private static final List<String> ALLOWED_EXTENSIONS = Arrays.asList("jpg", "jpeg", "png", "gif", "webp");
+    private static final long MAX_FILE_SIZE = 5 * 1024 * 1024;
+
+    public PropertiesServiceImpl(PropertyRepository propertyRepository,
+                                 PropertyTypeRepository propertyTypeRepository,
+                                 PropertyImageRepository propertyImageRepository,
+                                 AddressRepository addressRepository) {
         this.propertyRepository = propertyRepository;
         this.propertyTypeRepository = propertyTypeRepository;
@@ -49,35 +61,77 @@
                                              UserD owner) throws IOException {
 
+        if (name == null || name.trim().isEmpty()) {
+            throw new IllegalArgumentException("Property name cannot be empty");
+        }
+
         var propertyType = propertyTypeRepository.findById(propertyTypeId)
                 .orElseThrow(() -> new RuntimeException("Property type not found with ID: " + propertyTypeId));
 
         Address address = new Address(street, streetNumber, municipality, city, country);
-        addressRepository.save(address);
-        Property property = new Property(name, description, LocalDateTime.now(), owner,
-                propertyType, address);
+        address = addressRepository.save(address);
+
+        Property property = new Property(name, description, LocalDateTime.now(), owner, propertyType, address);
         property = propertyRepository.save(property);
+
         if (images != null && images.length > 0) {
-            String uploadBaseDir = "src/main/resources/static/uploads/properties/";
-            for (int i = 0; i < images.length; i++) {
-                MultipartFile image = images[i];
-                if (!image.isEmpty()) {
-                    String filename = String.format("property_%d_img_%03d.jpg", property.getId(), i + 1);
+            processImageUploads(images, property);
+        }
+        return property;
+    }
 
-                    File uploadDir = new File(uploadBaseDir);
-                    if (!uploadDir.exists()) {
-                        uploadDir.mkdirs();
-                    }
+    private void processImageUploads(MultipartFile[] images, Property property) throws IOException {
+        String uploadDir = "uploads/properties/";
+        Path uploadPath = Paths.get(uploadDir);
 
-                    File destinationFile = new File(uploadDir, filename);
-                    image.transferTo(destinationFile);
-
-                    String imagePath = "/uploads/properties/" + filename;
-                    PropertyImage propertyImage = new PropertyImage(imagePath, property);
-                    propertyImageRepository.save(propertyImage);
-                }
-            }
+        if (!Files.exists(uploadPath)) {
+            Files.createDirectories(uploadPath);
         }
 
-        return property;
+        for (int i = 0; i < images.length; i++) {
+            MultipartFile image = images[i];
+            if (image.isEmpty()) {
+                continue;
+            }
+            validateImageFile(image);
+            String originalFilename = image.getOriginalFilename();
+            String extension = getFileExtension(originalFilename);
+            String filename = String.format("property_%d_img_%03d.%s",
+                    property.getId(), i + 1, extension);
+
+            Path destinationPath = uploadPath.resolve(filename);
+            Files.copy(image.getInputStream(), destinationPath);
+
+            String imagePath = "/uploads/properties/" + filename;
+            PropertyImage propertyImage = new PropertyImage(imagePath, property);
+            propertyImageRepository.save(propertyImage);
+        }
+    }
+
+    private void validateImageFile(MultipartFile file) throws IOException {
+        if (file.getSize() > MAX_FILE_SIZE) {
+            throw new IOException("File size exceeds maximum allowed size of 5MB");
+        }
+
+        String filename = file.getOriginalFilename();
+        if (filename == null || filename.isEmpty()) {
+            throw new IOException("Invalid filename");
+        }
+
+        String extension = getFileExtension(filename).toLowerCase();
+        if (!ALLOWED_EXTENSIONS.contains(extension)) {
+            throw new IOException("File type not allowed. Allowed types: " + ALLOWED_EXTENSIONS);
+        }
+        String contentType = file.getContentType();
+        if (contentType == null || !contentType.startsWith("image/")) {
+            throw new IOException("File is not a valid image");
+        }
+    }
+
+    private String getFileExtension(String filename) {
+        if (filename == null || filename.isEmpty()) {
+            return "";
+        }
+        int lastDot = filename.lastIndexOf('.');
+        return lastDot == -1 ? "" : filename.substring(lastDot + 1);
     }
 }
Index: src/main/java/com/example/domify/web/PropertiesController.java
===================================================================
--- src/main/java/com/example/domify/web/PropertiesController.java	(revision 46a6e8cbdf9e59478b3f187df7ab6e0cd5671c47)
+++ src/main/java/com/example/domify/web/PropertiesController.java	(revision c00dc7ec0b66996281722aaa7f48acbc4af9bbf4)
@@ -7,4 +7,6 @@
 import com.example.domify.service.UserService;
 import jakarta.servlet.http.HttpServletRequest;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
@@ -16,4 +18,6 @@
 @RequestMapping("/properties")
 public class PropertiesController {
+    private static final Logger logger = LoggerFactory.getLogger(PropertiesController.class);
+
     private final PropertiesService propertiesService;
     private final UserService userService;
@@ -72,5 +76,5 @@
             @RequestParam("propertyType") Long propertyTypeId,
             @RequestParam("name") String name,
-            @RequestParam("description") String description,
+            @RequestParam(value = "description", defaultValue = "") String description,
             @RequestParam("street") String street,
             @RequestParam(value = "streetNumber", defaultValue = "") String streetNumber,
@@ -89,13 +93,33 @@
             }
 
+            if (name == null || name.trim().isEmpty()) {
+                redirectAttributes.addFlashAttribute("error", "Името на имотот е задолжително.");
+                return "redirect:/properties/add";
+            }
+
+            if (street == null || street.trim().isEmpty()) {
+                redirectAttributes.addFlashAttribute("error", "Улицата е задолжителна.");
+                return "redirect:/properties/add";
+            }
+
+            if (municipality == null || municipality.trim().isEmpty()) {
+                redirectAttributes.addFlashAttribute("error", "Општината е задолжителна.");
+                return "redirect:/properties/add";
+            }
+
+            if (city == null || city.trim().isEmpty()) {
+                redirectAttributes.addFlashAttribute("error", "Градот е задолжителен.");
+                return "redirect:/properties/add";
+            }
+
             Property property = propertiesService.createPropertyWithImages(
                     propertyTypeId,
-                    name,
-                    description,
-                    street,
-                    streetNumber,
-                    municipality,
-                    city,
-                    country,
+                    name.trim(),
+                    description != null ? description.trim() : "",
+                    street.trim(),
+                    streetNumber != null ? streetNumber.trim() : "",
+                    municipality.trim(),
+                    city.trim(),
+                    country.trim(),
                     images,
                     currentUser
@@ -105,4 +129,7 @@
             return "redirect:/properties/" + currentUser.getId();
 
+        } catch (IllegalArgumentException e) {
+            redirectAttributes.addFlashAttribute("error", e.getMessage());
+            return "redirect:/properties/add";
         } catch (Exception e) {
             redirectAttributes.addFlashAttribute("error", "Грешка при додавање на имотот: " + e.getMessage());
Index: src/main/resources/application.properties
===================================================================
--- src/main/resources/application.properties	(revision 46a6e8cbdf9e59478b3f187df7ab6e0cd5671c47)
+++ src/main/resources/application.properties	(revision c00dc7ec0b66996281722aaa7f48acbc4af9bbf4)
@@ -8,4 +8,13 @@
 
 spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
+spring.web.resources.add-mappings=true
+
+# File upload configuration
+spring.servlet.multipart.max-file-size=5MB
+spring.servlet.multipart.max-request-size=25MB
+spring.servlet.multipart.enabled=true
+
+app.upload.dir=static/uploads/properties/
+
 spring.web.resources.static-locations=classpath:/static/
-spring.web.resources.add-mappings=true
+
Index: src/main/resources/templates/create-property.html
===================================================================
--- src/main/resources/templates/create-property.html	(revision 46a6e8cbdf9e59478b3f187df7ab6e0cd5671c47)
+++ src/main/resources/templates/create-property.html	(revision c00dc7ec0b66996281722aaa7f48acbc4af9bbf4)
@@ -37,7 +37,8 @@
         <div class="row align-items-center">
             <div class="col-md-6 d-flex align-items-center">
-                <img src="/logo.png" class="ms-5 rounded-pill" style="width: 50px; height: 50px; object-fit: cover;">
+                <img src="/images/logo.png" class="ms-5 rounded-pill" style="width: 50px; height: 50px; object-fit: cover;">
                 <h1 class="h2 mb-0 ms-3 me-4">Domify</h1>
-                <button class="btn btn-outline-light">Мои изнајмувања</button>
+                <a href="/my-rentals" class="btn btn-outline-light" th:if="${user != null} and ${isLandlord}" >Мои огласи</a>
+                <a href="/my-rentals" class="btn btn-outline-light" th:if="${user != null} and ${!isLandlord}" >Мои изнајмувања</a>
             </div>
             <div class="col-md-6 d-flex justify-content-end align-items-center">
@@ -45,15 +46,30 @@
                     <button class="btn btn-outline-light dropdown-toggle" type="button" id="userDropdown"
                             data-bs-toggle="dropdown" aria-expanded="false">
-                        <i class="bi bi-person-circle me-2"></i>Стефан Николов
+                        <i class="bi bi-person-circle me-2"></i>
+
+                        <span th:if="${user != null}" th:text="${user.getFirstName() + ' ' + user.getLastName()}">Корисник</span>
+                        <span th:if="${user == null}">Најави се</span>
                     </button>
-                    <ul class="dropdown-menu dropdown-menu-end" aria-labelledby="userDropdown">
+
+                    <ul class="dropdown-menu dropdown-menu-end" aria-labelledby="userDropdown"
+                        th:if="${user != null} and ${isLandlord}">
                         <li><a class="dropdown-item" href="#">Профил</a></li>
                         <li><a class="dropdown-item" href="#">Мои изнајмувања</a></li>
                         <li><a class="dropdown-item" href="#">Направи оглас</a></li>
-                        <li><a class="dropdown-item" href="#">Мои имоти</a></li>
-                        <li>
-                            <hr class="dropdown-divider">
-                        </li>
-                        <li><a class="dropdown-item" href="#">Одјави се</a></li>
+                        <li><a class="dropdown-item" th:href="@{'/properties/' + ${user.getId()}}">Мои имоти</a></li>
+                        <li><hr class="dropdown-divider"></li>
+                        <li><a class="dropdown-item" href="/logout">Одјави се</a></li>
+                    </ul>
+
+                    <ul class="dropdown-menu dropdown-menu-end" aria-labelledby="userDropdown"
+                        th:if="${user != null} and !${isLandlord}">
+                        <li><a class="dropdown-item" href="#">Профил</a></li>
+                        <li><hr class="dropdown-divider"></li>
+                        <li><a class="dropdown-item" href="/logout">Одјави се</a></li>
+                    </ul>
+
+                    <ul class="dropdown-menu dropdown-menu-end" aria-labelledby="userDropdown"
+                        th:if="${user == null}">
+                        <li><a class="dropdown-item" href="/login">Најави се</a></li>
                     </ul>
                 </div>
