Index: pom.xml
===================================================================
--- pom.xml	(revision 799c63b93e3f8f543dd2947aee951e1aa8414917)
+++ pom.xml	(revision 401e38c5b45d3ac55e02831c32bf4e174bae08ca)
@@ -31,15 +31,14 @@
     </properties>
     <dependencies>
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-thymeleaf</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-security</artifactId>
-        </dependency>
+
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+            <scope>test</scope>
         </dependency>
 
@@ -49,4 +48,5 @@
             <scope>runtime</scope>
         </dependency>
+
         <dependency>
             <groupId>org.projectlombok</groupId>
@@ -54,8 +54,20 @@
             <optional>true</optional>
         </dependency>
+
         <dependency>
             <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-test</artifactId>
-            <scope>test</scope>
+            <artifactId>spring-boot-starter-thymeleaf</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-security</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.thymeleaf.extras</groupId>
+            <artifactId>thymeleaf-extras-springsecurity6</artifactId>
+            <!-- Temporary explicit version to fix Thymeleaf bug -->
+            <version>3.1.1.RELEASE</version>
         </dependency>
 
@@ -69,4 +81,6 @@
             <artifactId>spring-boot-starter-mail</artifactId>
         </dependency>
+
+
     </dependencies>
 
Index: src/main/java/mk/ukim/finki/db/distributorapp/config/CustomUserDetailsService.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/config/CustomUserDetailsService.java	(revision 799c63b93e3f8f543dd2947aee951e1aa8414917)
+++ src/main/java/mk/ukim/finki/db/distributorapp/config/CustomUserDetailsService.java	(revision 401e38c5b45d3ac55e02831c32bf4e174bae08ca)
@@ -3,4 +3,5 @@
 import mk.ukim.finki.db.distributorapp.model.Users;
 import mk.ukim.finki.db.distributorapp.repository.UsersRepository;
+import mk.ukim.finki.db.distributorapp.security.PassEncryptionPasswordEncoder;
 import org.springframework.security.core.userdetails.UserDetails;
 import org.springframework.security.core.userdetails.UserDetailsService;
@@ -12,18 +13,21 @@
 
     private final UsersRepository usersRepository;
+    private final PassEncryptionPasswordEncoder passwordEncoder;
 
-    public CustomUserDetailsService(UsersRepository usersRepository) {
+    public CustomUserDetailsService(UsersRepository usersRepository, PassEncryptionPasswordEncoder passwordEncoder) {
         this.usersRepository = usersRepository;
+        this.passwordEncoder = passwordEncoder;
     }
 
     @Override
     public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
-        Users user = this.usersRepository.findUserByUserEmailIgnoreCase(username).get();
-
-        if (user == null) {
-            throw new UsernameNotFoundException(username);
-        }
+        Users user = this.usersRepository.findUserByUserEmailIgnoreCase(username)
+                .orElseThrow(() -> new UsernameNotFoundException(username));
 
         return user;
     }
+
+    public boolean authenticateUser(String providedPassword, Users user){
+        return passwordEncoder.matchesWithSalt(providedPassword,user.getPassword(),user.getUser_salt());
+    }
 }
Index: src/main/java/mk/ukim/finki/db/distributorapp/config/SecurityConfig.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/config/SecurityConfig.java	(revision 799c63b93e3f8f543dd2947aee951e1aa8414917)
+++ src/main/java/mk/ukim/finki/db/distributorapp/config/SecurityConfig.java	(revision 401e38c5b45d3ac55e02831c32bf4e174bae08ca)
@@ -1,10 +1,13 @@
 package mk.ukim.finki.db.distributorapp.config;
 
+import mk.ukim.finki.db.distributorapp.security.PassEncryptionPasswordEncoder;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
-import org.springframework.security.authentication.dao.DaoAuthenticationProvider;
+import org.springframework.security.authentication.AuthenticationManager;
+import org.springframework.security.config.annotation.authentication.configuration.AuthenticationConfiguration;
 import org.springframework.security.config.annotation.web.builders.HttpSecurity;
 import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
-import org.springframework.security.config.annotation.web.configurers.LogoutConfigurer;
+import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer;
+import org.springframework.security.crypto.password.PasswordEncoder;
 import org.springframework.security.web.SecurityFilterChain;
 
@@ -20,24 +23,47 @@
 
     @Bean
-    public DaoAuthenticationProvider authenticationProvider() {
-        DaoAuthenticationProvider authProvider = new DaoAuthenticationProvider();
-        authProvider.setUserDetailsService(userDetailsService);
-        return authProvider;
+    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
+//        http
+//                .authorizeHttpRequests(authorize -> authorize
+//                        .requestMatchers("/login","/register").permitAll()
+//                        .anyRequest().authenticated()
+//                )
+//                .formLogin(form -> form
+//                        .loginPage("/login")
+//                        .permitAll()
+//                )
+//                .logout(LogoutConfigurer::permitAll);
+
+        http
+                .csrf(AbstractHttpConfigurer::disable)
+                .authorizeHttpRequests(auth -> auth
+                        .requestMatchers("/register", "/login", "/css/**", "/js/**").permitAll()
+                        .requestMatchers("/manager/**").hasAuthority("Manager")
+                        .requestMatchers("/driver/**").hasAuthority("Driver")
+                        .requestMatchers("/customer/**").hasAuthority("Customer")
+                        .anyRequest().authenticated()
+                )
+                .formLogin(login -> login
+                        .loginPage("/login")
+                        .defaultSuccessUrl("/home", true)
+                        .permitAll()
+                )
+                .logout(logout -> logout
+                        .logoutUrl("/logout")
+                        .logoutSuccessUrl("/login")
+                        .permitAll()
+                );
+
+        return http.build();
     }
 
     @Bean
-    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
-        http
-                .authorizeHttpRequests(authorize -> authorize
-                        .requestMatchers("/login","/register").permitAll()
-                        .anyRequest().authenticated()
-                )
-                .formLogin(form -> form
-                        .loginPage("/login")
-                        .permitAll()
-                )
-                .logout(LogoutConfigurer::permitAll);
+    public AuthenticationManager authManager(AuthenticationConfiguration authConfig) throws Exception {
+        return authConfig.getAuthenticationManager();
+    }
 
-        return http.build();
+    @Bean
+    public PasswordEncoder passwordEncoder() {
+        return new PassEncryptionPasswordEncoder();
     }
 }
Index: src/main/java/mk/ukim/finki/db/distributorapp/model/Users.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/model/Users.java	(revision 799c63b93e3f8f543dd2947aee951e1aa8414917)
+++ src/main/java/mk/ukim/finki/db/distributorapp/model/Users.java	(revision 401e38c5b45d3ac55e02831c32bf4e174bae08ca)
@@ -61,5 +61,5 @@
     @Override
     public Collection<? extends GrantedAuthority> getAuthorities() {
-        return List.of(new SimpleGrantedAuthority("ROLE_"+this.getClass().getSimpleName()));
+        return List.of(new SimpleGrantedAuthority(this.getClass().getSimpleName()));
     }
 
@@ -81,5 +81,5 @@
     @Override
     public boolean isEnabled() {
-        return true;
+        return user_active;
     }
 }
Index: src/main/java/mk/ukim/finki/db/distributorapp/security/PassEncryption.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/security/PassEncryption.java	(revision 799c63b93e3f8f543dd2947aee951e1aa8414917)
+++ src/main/java/mk/ukim/finki/db/distributorapp/security/PassEncryption.java	(revision 401e38c5b45d3ac55e02831c32bf4e174bae08ca)
@@ -49,5 +49,5 @@
     }
 
-    public boolean verifyUserPassword(String providedPassword, String securedPassword, String salt){
+    public static boolean verifyUserPassword(String providedPassword, String securedPassword, String salt){
         boolean res = false;
         String newSecuredPassword = generateSecurePassword(securedPassword,salt);
Index: c/main/java/mk/ukim/finki/db/distributorapp/security/PassEncryptionAdapter.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/security/PassEncryptionAdapter.java	(revision 799c63b93e3f8f543dd2947aee951e1aa8414917)
+++ 	(revision )
@@ -1,30 +1,0 @@
-//package mk.ukim.finki.db.distributorapp.security;
-//
-//import org.springframework.security.crypto.password.PasswordEncoder;
-//
-//public class PassEncryptionAdapter implements PasswordEncoder {
-//
-//    private final PassEncryption passEncryption;
-//
-//    public PassEncryptionAdapter(PassEncryption passEncryption) {
-//        this.passEncryption = passEncryption;
-//    }
-//
-//    @Override
-//    public String encode(CharSequence rawPassword) {
-//        String salt = this.passEncryption.
-//    }
-//
-//    @Override
-//    public boolean matches(CharSequence rawPassword, String encodedPassword) {
-//        String[] parts = encodedPassword.split(":");
-//        if(parts.length!=2){
-//            return false;
-//        }
-//
-//        String salt = parts[0];
-//        String storedPass = parts[1];
-//
-//        return passEncryption.verifyUserPassword(rawPassword.toString(),storedPass,salt);
-//    }
-//}
Index: src/main/java/mk/ukim/finki/db/distributorapp/security/PassEncryptionPasswordEncoder.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/security/PassEncryptionPasswordEncoder.java	(revision 401e38c5b45d3ac55e02831c32bf4e174bae08ca)
+++ src/main/java/mk/ukim/finki/db/distributorapp/security/PassEncryptionPasswordEncoder.java	(revision 401e38c5b45d3ac55e02831c32bf4e174bae08ca)
@@ -0,0 +1,29 @@
+package mk.ukim.finki.db.distributorapp.security;
+
+import org.springframework.security.crypto.password.PasswordEncoder;
+import org.springframework.stereotype.Component;
+
+@Component
+public class PassEncryptionPasswordEncoder implements PasswordEncoder {
+
+    @Override
+    public String encode(CharSequence rawPassword) {
+        // Generate a new salt and hash the password
+        throw new UnsupportedOperationException("Salt must be provided explicitly!");
+    }
+
+    public String encodeWithSalt(CharSequence rawPassword, String salt) {
+        return PassEncryption.generateSecurePassword(rawPassword.toString(), salt);
+    }
+
+    @Override
+    public boolean matches(CharSequence rawPassword, String encodedPassword) {
+        // Split stored password into salt and hash
+        throw new UnsupportedOperationException("Use matchesWithSalt for explicit salt verification!");
+    }
+
+    public boolean matchesWithSalt(CharSequence rawPassword, String encodedPassword, String salt) {
+        return PassEncryption.verifyUserPassword(rawPassword.toString(), encodedPassword, salt);
+    }
+}
+
Index: src/main/java/mk/ukim/finki/db/distributorapp/service/impl/UsersServiceImpl.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/service/impl/UsersServiceImpl.java	(revision 799c63b93e3f8f543dd2947aee951e1aa8414917)
+++ src/main/java/mk/ukim/finki/db/distributorapp/service/impl/UsersServiceImpl.java	(revision 401e38c5b45d3ac55e02831c32bf4e174bae08ca)
@@ -10,4 +10,5 @@
 import mk.ukim.finki.db.distributorapp.security.EmailService;
 import mk.ukim.finki.db.distributorapp.security.PassEncryption;
+import mk.ukim.finki.db.distributorapp.security.PassEncryptionPasswordEncoder;
 import mk.ukim.finki.db.distributorapp.service.UsersService;
 import org.springframework.http.ResponseEntity;
@@ -23,9 +24,11 @@
     private final ConfirmationTokenRepository confirmationTokenRepository;
     private final EmailService emailService;
+    private final PassEncryptionPasswordEncoder passwordEncoder;
 
-    public UsersServiceImpl(UsersRepository usersRepository, ConfirmationTokenRepository confirmationTokenRepository, EmailService emailService) {
+    public UsersServiceImpl(UsersRepository usersRepository, ConfirmationTokenRepository confirmationTokenRepository, EmailService emailService, PassEncryptionPasswordEncoder passwordEncoder) {
         this.usersRepository = usersRepository;
         this.confirmationTokenRepository = confirmationTokenRepository;
         this.emailService = emailService;
+        this.passwordEncoder = passwordEncoder;
     }
 
@@ -46,5 +49,5 @@
         }
 
-        String secPassword = PassEncryption.generateSecurePassword(password,usersRepository.findUserByUserName(username).get().getUser_salt());
+        String secPassword = passwordEncoder.encodeWithSalt(password,usersRepository.findUserByUserName(username).get().getUser_salt());
 
         return usersRepository.findUserByUserNameAndUserPassword(username,secPassword).orElseThrow(InvalidUserCredentialsException::new);
@@ -54,5 +57,5 @@
     public Users register(String name, String surname, String email, String password, String mobile, String image, City city) {
         String saltValue = PassEncryption.genSaltValue(30);
-        String safePass = PassEncryption.generateSecurePassword(password, saltValue);
+        String safePass = passwordEncoder.encodeWithSalt(password, saltValue);
 
         this.usersRepository.create(name, surname, safePass, email, mobile, saltValue, false, image, city.getCity_id());
Index: src/main/java/mk/ukim/finki/db/distributorapp/web/controller/CustomerController.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/web/controller/CustomerController.java	(revision 799c63b93e3f8f543dd2947aee951e1aa8414917)
+++ src/main/java/mk/ukim/finki/db/distributorapp/web/controller/CustomerController.java	(revision 401e38c5b45d3ac55e02831c32bf4e174bae08ca)
@@ -2,5 +2,4 @@
 
 import org.springframework.stereotype.Controller;
-import org.springframework.ui.Model;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -11,7 +10,6 @@
 
     @GetMapping("/home")
-    public String customerHome(Model model) {
-        model.addAttribute("welcomeMessage", "Welcome Customer!");
-        return "customerHome";
+    public String customerHome() {
+        return "userCustomer/home";
     }
 }
Index: src/main/java/mk/ukim/finki/db/distributorapp/web/controller/DriverController.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/web/controller/DriverController.java	(revision 799c63b93e3f8f543dd2947aee951e1aa8414917)
+++ src/main/java/mk/ukim/finki/db/distributorapp/web/controller/DriverController.java	(revision 401e38c5b45d3ac55e02831c32bf4e174bae08ca)
@@ -2,5 +2,4 @@
 
 import org.springframework.stereotype.Controller;
-import org.springframework.ui.Model;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -11,7 +10,6 @@
 
     @GetMapping("/home")
-    public String driverHome(Model model) {
-        model.addAttribute("welcomeMessage", "Welcome Driver!");
-        return "driverHome";
+    public String driverHome() {
+        return "userDriver/home";
     }
 }
Index: src/main/java/mk/ukim/finki/db/distributorapp/web/controller/HomeController.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/web/controller/HomeController.java	(revision 799c63b93e3f8f543dd2947aee951e1aa8414917)
+++ src/main/java/mk/ukim/finki/db/distributorapp/web/controller/HomeController.java	(revision 401e38c5b45d3ac55e02831c32bf4e174bae08ca)
@@ -5,5 +5,4 @@
 import mk.ukim.finki.db.distributorapp.model.Manager;
 import mk.ukim.finki.db.distributorapp.model.Users;
-import mk.ukim.finki.db.distributorapp.service.UsersService;
 import org.springframework.security.core.Authentication;
 import org.springframework.security.core.context.SecurityContextHolder;
@@ -14,25 +13,27 @@
 @Controller
 public class HomeController {
-    private final UsersService usersService;
-
-    public HomeController(UsersService usersService) {
-        this.usersService = usersService;
-    }
 
     @GetMapping
     public String homePage(Model model) {
         Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
-        String username = authentication.getName();
 
-        Users user = usersService.getUserByEmail(username).get();
+        if (authentication == null || !authentication.isAuthenticated() || authentication.getPrincipal().equals("anonymousUser")) {
+            model.addAttribute("userType", "Guest");
+            return "home";
+        }
+
+        Users user = (Users) authentication.getPrincipal();
 
         if(user instanceof Customer){
+            model.addAttribute("userType", "Customer");
             return "redirect:customer/home";
         }else if(user instanceof Driver){
+            model.addAttribute("userType", "Driver");
             return "redirect:driver/home";
         } else if (user instanceof Manager){
+            model.addAttribute("userType", "Manager");
             return "redirect:manager/home";
         }
-
+        model.addAttribute("userType", "Guest");
         return "home";
     }
Index: src/main/java/mk/ukim/finki/db/distributorapp/web/controller/ManagerController.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/web/controller/ManagerController.java	(revision 799c63b93e3f8f543dd2947aee951e1aa8414917)
+++ src/main/java/mk/ukim/finki/db/distributorapp/web/controller/ManagerController.java	(revision 401e38c5b45d3ac55e02831c32bf4e174bae08ca)
@@ -2,5 +2,4 @@
 
 import org.springframework.stereotype.Controller;
-import org.springframework.ui.Model;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -11,7 +10,6 @@
 
     @GetMapping("/home")
-    public String managerHome(Model model) {
-        model.addAttribute("welcomeMessage", "Welcome Manager!");
-        return "managerHome";
+    public String managerHome() {
+        return "userManager/home";
     }
 }
Index: c/main/resources/templates/customerHome.html
===================================================================
--- src/main/resources/templates/customerHome.html	(revision 799c63b93e3f8f543dd2947aee951e1aa8414917)
+++ 	(revision )
@@ -1,11 +1,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-    <meta charset="UTF-8">
-    <title>Customer Home</title>
-</head>
-<body>
-<h1 th:text="${welcomeMessage}"></h1>
-<p>Customer-specific content goes here.</p>
-</body>
-</html>
Index: c/main/resources/templates/driverHome.html
===================================================================
--- src/main/resources/templates/driverHome.html	(revision 799c63b93e3f8f543dd2947aee951e1aa8414917)
+++ 	(revision )
@@ -1,11 +1,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-    <meta charset="UTF-8">
-    <title>Driver Home</title>
-</head>
-<body>
-<h1 th:text="${welcomeMessage}"></h1>
-<p>Driver-specific content goes here.</p>
-</body>
-</html>
Index: src/main/resources/templates/fragments/footer.html
===================================================================
--- src/main/resources/templates/fragments/footer.html	(revision 401e38c5b45d3ac55e02831c32bf4e174bae08ca)
+++ src/main/resources/templates/fragments/footer.html	(revision 401e38c5b45d3ac55e02831c32bf4e174bae08ca)
@@ -0,0 +1,3 @@
+<footer>
+    <p>&copy; 2024 Distributor App</p>
+</footer>
Index: src/main/resources/templates/fragments/header.html
===================================================================
--- src/main/resources/templates/fragments/header.html	(revision 401e38c5b45d3ac55e02831c32bf4e174bae08ca)
+++ src/main/resources/templates/fragments/header.html	(revision 401e38c5b45d3ac55e02831c32bf4e174bae08ca)
@@ -0,0 +1,41 @@
+<header>
+    <nav>
+        <ul>
+            <li><a th:href="@{/}">Home</a></li>
+
+            <!--Customer-Specific Navigation-->
+            <li th:if="${userType == 'Customer'}">
+                <a th:href="@{/customer/orders}">My Orders</a>
+            </li>
+            <li th:if="${userType == 'Customer'}">
+                <a>Account details</a>
+            </li>
+
+            <!--Manager-Specific Navigation-->
+            <li th:if="${userType == 'Manager'}">
+                <a>Assign Deliveries</a>
+            </li>
+            <li th:if="${userType == 'Manager'}">
+                <a>Monitor Progress</a>
+            </li>
+
+            <!--Driver-Specific Navigation-->
+            <li th:if="${userType == 'Driver'}">
+                <a>Assigned Deliveries</a>
+            </li>
+            <li th:if="${userType == 'Driver'}">
+                <a>My Schedule</a>
+            </li>
+
+            <li th:if="${#authorization.expression('isAuthenticated()')}">
+                <a th:href="@{/logout}">Logout</a>
+            </li>
+            <li th:if="${#authorization.expression('!isAuthenticated()')}">
+                <a th:href="@{/login}">Login</a>
+            </li>
+            <li th:if="${#authorization.expression('!isAuthenticated()')}">
+                <a th:href="@{/register}">Register</a>
+            </li>
+        </ul>
+    </nav>
+</header>
Index: src/main/resources/templates/fragments/messages.html
===================================================================
--- src/main/resources/templates/fragments/messages.html	(revision 401e38c5b45d3ac55e02831c32bf4e174bae08ca)
+++ src/main/resources/templates/fragments/messages.html	(revision 401e38c5b45d3ac55e02831c32bf4e174bae08ca)
@@ -0,0 +1,6 @@
+<div th:if="${message}" class="alert alert-info">
+  <p th:text="${message}"></p>
+</div>
+<div th:if="${error}" class="alert alert-danger">
+  <p th:text="${error}"></p>
+</div>
Index: src/main/resources/templates/home.html
===================================================================
--- src/main/resources/templates/home.html	(revision 799c63b93e3f8f543dd2947aee951e1aa8414917)
+++ src/main/resources/templates/home.html	(revision 401e38c5b45d3ac55e02831c32bf4e174bae08ca)
@@ -1,10 +1,16 @@
-<!DOCTYPE html>
-<html lang="en">
+<!DOCTYPE html >
+<html lang="en" xmlns:th="http://www.thymeleaf.org">
 <head>
     <meta charset="UTF-8">
     <title>Title</title>
+    <link rel="stylesheet" th:href="@{/../static/css/style.css}">
 </head>
 <body>
-
+<div th:replace="fragments/header :: header"></div>
+<main>
+    <h1>Welcome to Our Application</h1>
+    <p>If you have an account, please log in. Otherwise, register to get started.</p>
+</main>
+<div th:replace="fragments/footer :: footer"></div>
 </body>
 </html>
Index: src/main/resources/templates/login.html
===================================================================
--- src/main/resources/templates/login.html	(revision 799c63b93e3f8f543dd2947aee951e1aa8414917)
+++ src/main/resources/templates/login.html	(revision 401e38c5b45d3ac55e02831c32bf4e174bae08ca)
@@ -4,32 +4,37 @@
     <meta charset="UTF-8">
     <title>Login</title>
+    <link rel="stylesheet" th:href="@{/../static/css/style.css}">
 </head>
 <body>
-<div class="container">
-    <form class="form-signin mt-xl-5" method="post" th:action="@{/login}">
-        <h2 class="form-signin-heading">Sign in</h2>
-        <p>
-            <label for="email" class="sr-only">Email</label>
-            <input type="email" id="email" class="form-control"
-                   placeholder="Email" required="" autofocus="">
-        </p>
-        <p>
-            <label for="password" class="sr-only">Password</label>
-            <input type="password" id="password" class="form-control"
-                   placeholder="Password" required="" autofocus="">
-        </p>
+<div th:replace="fragments/header :: header"></div>
+<main>
+    <div class="container">
+        <form class="form-signin mt-xl-5" method="post" th:action="@{/login}">
+            <h2 class="form-signin-heading">Sign in</h2>
+            <p>
+                <label for="email" class="sr-only">Email</label>
+                <input type="email" id="email" class="form-control"
+                       placeholder="Email" required="" autofocus="">
+            </p>
+            <p>
+                <label for="password" class="sr-only">Password</label>
+                <input type="password" id="password" class="form-control"
+                       placeholder="Password" required="" autofocus="">
+            </p>
 
-        <div th:if="${param.error}" th:text="${param.error}" class="text-danger"></div>
+            <div th:if="${param.error}" th:text="${param.error}" class="text-danger"></div>
 
-        <div class="row">
-            <div class="col-md-3">
-                <button id="submit" class="btn btn-lg btn-primary btn-block" type="submit">Sign in</button>
+            <div class="row">
+                <div class="col-md-3">
+                    <button id="submit" class="btn btn-lg btn-primary btn-block" type="submit">Sign in</button>
+                </div>
+                <div class="col-md-3">
+                    <a href="/register" class="btn btn-lg btn-block btn-light">Register here</a>
+                </div>
             </div>
-            <div class="col-md-3">
-                <a href="/register" class="btn btn-lg btn-block btn-light">Register here</a>
-            </div>
-        </div>
-    </form>
-</div>
+        </form>
+    </div>
+</main>
+<div th:replace="fragments/footer :: footer"></div>
 </body>
 </html>
Index: c/main/resources/templates/managerHome.html
===================================================================
--- src/main/resources/templates/managerHome.html	(revision 799c63b93e3f8f543dd2947aee951e1aa8414917)
+++ 	(revision )
@@ -1,11 +1,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-    <meta charset="UTF-8">
-    <title>Manager Home</title>
-</head>
-<body>
-<h1 th:text="${welcomeMessage}"></h1>
-<p>Manager-specific content goes here.</p>
-</body>
-</html>
Index: src/main/resources/templates/register.html
===================================================================
--- src/main/resources/templates/register.html	(revision 799c63b93e3f8f543dd2947aee951e1aa8414917)
+++ src/main/resources/templates/register.html	(revision 401e38c5b45d3ac55e02831c32bf4e174bae08ca)
@@ -4,57 +4,62 @@
     <meta charset="UTF-8">
     <title>Register</title>
+    <link rel="stylesheet" th:href="@{/../static/css/style.css}">
 </head>
 <body>
-<div class="container mb-4">
-    <form class="form-signin mt-xl-5" method="post" th:action="@{/register}">
-        <h2 class="form-signin-heading">Register</h2>
-        <p>
-            <label for="email" class="sr-only">Email: </label>
-            <input type="email" id="email" name="email" class="form-control"
-                   placeholder="Email" required="" autofocus="">
-        </p><br><br>
-        <p>
-            <label for="password" class="sr-only">Password: </label>
-            <input type="password" id="password" name="password" class="form-control"
-                   placeholder="Password" required="" autofocus="">
-        </p><br><br>
-        <p>
-            <label for="repeatedPassword" class="sr-only">Repeat Password: </label>
-            <input type="password" id="repeatedPassword" name="repeatPassword" class="form-control"
-                   placeholder="Repeat Password" required="" autofocus="">
-        </p><br><br>
-        <p>
-            <label for="name" class="sr-only">First Name: </label>
-            <input type="text" id="name" name="Name" class="form-control"
-                   placeholder="First Name" required="" autofocus="">
-        </p><br><br>
-        <p>
-            <label for="surname" class="sr-only">Last Name: </label>
-            <input type="text" id="surname" name="Surname" class="form-control"
-                   placeholder="Last Name" required="" autofocus="">
-        </p><br><br>
-        <p>
-            <label for="mobile" class="sr-only">Mobile: </label>
-            <input type="tel" id="mobile" name="Mobile" class="form-control"
-                   placeholder="Mobile" required="" autofocus="">
-        </p><br><br>
-        <p>
-            <label for="profileImage" class="sr-only">Profile Picture: </label>
-            <input type="file" id="profileImage" name="profileImage" accept="image/*">
-        </p><br><br>
+<div th:replace="fragments/header :: header"></div>
+<main>
+    <div class="container mb-4">
+        <form class="form-signin mt-xl-5" method="post" th:action="@{/register}">
+            <h2 class="form-signin-heading">Register</h2>
+            <p>
+                <label for="email" class="sr-only">Email: </label>
+                <input type="email" id="email" name="email" class="form-control"
+                       placeholder="Email" required="" autofocus="">
+            </p><br><br>
+            <p>
+                <label for="password" class="sr-only">Password: </label>
+                <input type="password" id="password" name="password" class="form-control"
+                       placeholder="Password" required="" autofocus="">
+            </p><br><br>
+            <p>
+                <label for="repeatedPassword" class="sr-only">Repeat Password: </label>
+                <input type="password" id="repeatedPassword" name="repeatPassword" class="form-control"
+                       placeholder="Repeat Password" required="" autofocus="">
+            </p><br><br>
+            <p>
+                <label for="name" class="sr-only">First Name: </label>
+                <input type="text" id="name" name="Name" class="form-control"
+                       placeholder="First Name" required="" autofocus="">
+            </p><br><br>
+            <p>
+                <label for="surname" class="sr-only">Last Name: </label>
+                <input type="text" id="surname" name="Surname" class="form-control"
+                       placeholder="Last Name" required="" autofocus="">
+            </p><br><br>
+            <p>
+                <label for="mobile" class="sr-only">Mobile: </label>
+                <input type="tel" id="mobile" name="Mobile" class="form-control"
+                       placeholder="Mobile" required="" autofocus="">
+            </p><br><br>
+            <p>
+                <label for="profileImage" class="sr-only">Profile Picture: </label>
+                <input type="file" id="profileImage" name="profileImage" accept="image/*">
+            </p><br><br>
 
-        <p>
-            <label for="city" class="sr-only">What city are you from? </label><br><br>
-            <select id="city" name="city" style="width: 300px;">
-                <option value="" disabled selected>Select a city</option>
-                <th:block th:each="city : ${cities}">
-                    <option th:value="${city.getCity_id()}" th:text="${city.getCity_name()}"></option>
-                </th:block>
-            </select>
-        </p>
+            <p>
+                <label for="city" class="sr-only">What city are you from? </label><br><br>
+                <select id="city" name="city" style="width: 300px;">
+                    <option value="" disabled selected>Select a city</option>
+                    <th:block th:each="city : ${cities}">
+                        <option th:value="${city.getCity_id()}" th:text="${city.getCity_name()}"></option>
+                    </th:block>
+                </select>
+            </p>
 
-        <button type="submit">Register</button>
-    </form>
-</div>
+            <button type="submit">Register</button>
+        </form>
+    </div>
+</main>
+<div th:replace="fragments/footer :: footer"></div>
 </body>
 </html>
Index: src/main/resources/templates/userCustomer/home.html
===================================================================
--- src/main/resources/templates/userCustomer/home.html	(revision 401e38c5b45d3ac55e02831c32bf4e174bae08ca)
+++ src/main/resources/templates/userCustomer/home.html	(revision 401e38c5b45d3ac55e02831c32bf4e174bae08ca)
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<html lang="en" xmlns:th="http://www.thymeleaf.org">
+<head>
+    <meta charset="UTF-8">
+    <title>Title</title>
+    <link rel="stylesheet" th:href="@{/../static/css/style.css}">
+</head>
+<body>
+<div th:replace="fragments/header :: header"></div>
+<main>
+    <h1>Welcome, Customer!</h1>
+    <p>View your orders, account details, and more.</p>
+</main>
+<div th:replace="fragments/footer :: footer"></div>
+</body>
+</html>
Index: src/main/resources/templates/userDriver/home.html
===================================================================
--- src/main/resources/templates/userDriver/home.html	(revision 401e38c5b45d3ac55e02831c32bf4e174bae08ca)
+++ src/main/resources/templates/userDriver/home.html	(revision 401e38c5b45d3ac55e02831c32bf4e174bae08ca)
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<html lang="en" xmlns:th="http://www.thymeleaf.org">
+<head>
+    <meta charset="UTF-8">
+    <title>Title</title>
+    <link rel="stylesheet" th:href="@{/../static/css/style.css}">
+</head>
+<body>
+<div th:replace="fragments/header :: header"></div>
+<main>
+    <h1>Welcome, Driver!</h1>
+    <p>View your assigned deliveries and schedules.</p>
+</main>
+<div th:replace="fragments/footer :: footer"></div>
+</body>
+</html>
Index: src/main/resources/templates/userManager/home.html
===================================================================
--- src/main/resources/templates/userManager/home.html	(revision 401e38c5b45d3ac55e02831c32bf4e174bae08ca)
+++ src/main/resources/templates/userManager/home.html	(revision 401e38c5b45d3ac55e02831c32bf4e174bae08ca)
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<html lang="en" xmlns:th="http://www.thymeleaf.org">
+<head>
+    <meta charset="UTF-8">
+    <title>Title</title>
+    <link rel="stylesheet" th:href="@{/../static/css/style.css}">
+</head>
+<body>
+<div th:replace="fragments/header :: header"></div>
+<main>
+    <h1>Welcome, Manager!</h1>
+    <p>Assign deliveries, manage deliveries, and monitor progress.</p>
+</main>
+<div th:replace="fragments/footer :: footer"></div>
+</body>
+</html>
