diff --git a/User_MicroService_Group3/Dockerfile b/User_MicroService_Group3/Dockerfile
deleted file mode 100644
index 7148b367d2da835dedfe208b5aec5590b27bc048..0000000000000000000000000000000000000000
--- a/User_MicroService_Group3/Dockerfile
+++ /dev/null
@@ -1,66 +0,0 @@
-FROM python:3.11.4
-
-#Copy requirements
-COPY requirements.txt /user_ms/
-
-COPY app /user_ms/
-
-#Set working direcroty
-WORKDIR /user_ms
-
-#Install dependencies
-RUN pip install --no-cache-dir -r requirements.txt
-
-
-#Install other libraries in container
-RUN apt-get update && apt-get install -y \
-    unixodbc \
-    unixodbc-dev \
-	iputils-ping\
-	apt-transport-https \
-	gcc\
-    curl \
-    gnupg \
-    freetds-dev \
-    tdsodbc \
-    && rm -rf /var/lib/apt/lists/*
-
-
-#Install ODBC Driver for Microsoft SQL Server Section...
-#Source: https://learn.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server?view=sql-server-ver16&tabs=debian18-install%2Calpine17-install%2Cdebian8-install%2Credhat7-13-install%2Crhel7-offline
-
-
-#Add Microsoft repository GPG key
-RUN curl https://packages.microsoft.com/keys/microsoft.asc | tee /etc/apt/trusted.gpg.d/microsoft.asc
-
-#Add the Microsoft SQL Server repository for Debian 12
-RUN curl https://packages.microsoft.com/config/debian/12/prod.list | tee /etc/apt/sources.list.d/mssql-release.list
-
-
-#Add Microsoft GPG key
-RUN curl -fsSL https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor -o /usr/share/keyrings/microsoft-archive-keyring.gpg
-
-#Add the Microsoft SQL Server repository for Debian 12
-RUN echo "deb [arch=amd64 signed-by=/usr/share/keyrings/microsoft-archive-keyring.gpg] https://packages.microsoft.com/debian/12/prod bookworm main" > /etc/apt/sources.list.d/mssql-release.list
-
-#Update package list
-RUN apt-get update
-
-#Install ODBC Driver 17 for SQL Server
-RUN ACCEPT_EULA=Y apt-get install -y msodbcsql17
-
-#Install mssql-tools
-RUN ACCEPT_EULA=Y apt-get install -y mssql-tools
-RUN bash -c "echo 'export PATH=\"$PATH:/opt/mssql-tools/bin\"' >> ~/.bashrc && source ~/.bashrc"
-
-
-#RUN echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc && source ~/.bashrc
-
-#Install unixodbc-dev and kerberos library
-RUN apt-get install -y libgssapi-krb5-2
-
-#Set environment variables for ODBC configuration
-ENV ODBCINI=/etc/odbc.ini
-ENV ODBCSYSINI=/etc
-
-CMD ["python", "index.py"]
\ No newline at end of file
diff --git a/User_MicroService_Group3/Dockerfile.userdb b/User_MicroService_Group3/Dockerfile.userdb
deleted file mode 100644
index c7d3ab70d82a45909512cf4bc2a09936ade8c4ad..0000000000000000000000000000000000000000
--- a/User_MicroService_Group3/Dockerfile.userdb
+++ /dev/null
@@ -1,27 +0,0 @@
-FROM mcr.microsoft.com/mssql/server:2022-latest
-
-# Set environment variables
-ENV SA_PASSWORD WebTechGroup3
-ENV ACCEPT_EULA=Y
-
-COPY User_Management.bak /var/opt/mssql/data/
-
-
-
-
-# Change user permissions
-USER root
-
-RUN chown -R mssql:mssql /var/opt/mssql/data
-
-COPY entrypoint.sh /usr/local/bin/entrypoint.sh
-
-
-# Expose the default SQL Server port
-EXPOSE 1433
-
-ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
-
-
-# Define the default command to run when the container starts
-CMD ["/opt/mssql/bin/sqlservr"]
\ No newline at end of file
diff --git a/User_MicroService_Group3/Dockerfile.userms b/User_MicroService_Group3/Dockerfile.userms
deleted file mode 100644
index 3e73e5fab859fa6eaf160356db11b952ca22c20a..0000000000000000000000000000000000000000
--- a/User_MicroService_Group3/Dockerfile.userms
+++ /dev/null
@@ -1,62 +0,0 @@
-FROM python:3.11.4
-
-#Copy requirements
-COPY requirements.txt /user_ms/
-
-COPY app /user_ms/
-
-#Set working direcroty
-WORKDIR /user_ms
-
-#Install dependencies
-RUN pip install --no-cache-dir -r requirements.txt
-
-
-#Install other libraries in container
-RUN apt-get update && apt-get install -y \
-    unixodbc \
-    unixodbc-dev \
-	iputils-ping\
-	apt-transport-https \
-	gcc\
-    curl \
-    gnupg \
-    freetds-dev \
-    tdsodbc \
-    && rm -rf /var/lib/apt/lists/*
-
-
-#Add Microsoft repository GPG key
-RUN curl https://packages.microsoft.com/keys/microsoft.asc | tee /etc/apt/trusted.gpg.d/microsoft.asc
-
-#Add the Microsoft SQL Server repository for Debian 12
-RUN curl https://packages.microsoft.com/config/debian/12/prod.list | tee /etc/apt/sources.list.d/mssql-release.list
-
-
-#Add Microsoft GPG key
-RUN curl -fsSL https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor -o /usr/share/keyrings/microsoft-archive-keyring.gpg
-
-#Add the Microsoft SQL Server repository for Debian 12
-RUN echo "deb [arch=amd64 signed-by=/usr/share/keyrings/microsoft-archive-keyring.gpg] https://packages.microsoft.com/debian/12/prod bookworm main" > /etc/apt/sources.list.d/mssql-release.list
-
-#Update package list
-RUN apt-get update
-
-#Install ODBC Driver 17 for SQL Server
-RUN ACCEPT_EULA=Y apt-get install -y msodbcsql17
-
-#Optional: Install mssql-tools and add to PATH
-RUN ACCEPT_EULA=Y apt-get install -y mssql-tools
-RUN bash -c "echo 'export PATH=\"$PATH:/opt/mssql-tools/bin\"' >> ~/.bashrc && source ~/.bashrc"
-
-
-#RUN echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc && source ~/.bashrc
-
-#Optional: Install unixodbc-dev and kerberos library
-RUN apt-get install -y libgssapi-krb5-2
-
-#Set environment variables for ODBC configuration if needed
-ENV ODBCINI=/etc/odbc.ini
-ENV ODBCSYSINI=/etc
-
-CMD ["python", "index.py"]
\ No newline at end of file
diff --git a/User_MicroService_Group3/User_Management.bak b/User_MicroService_Group3/User_Management.bak
deleted file mode 100644
index 8286826a43c0de28f2cdc67078940fdafcfd9f9a..0000000000000000000000000000000000000000
Binary files a/User_MicroService_Group3/User_Management.bak and /dev/null differ
diff --git a/User_MicroService_Group3/app.yaml b/User_MicroService_Group3/app.yaml
deleted file mode 100644
index ab488dfb9077cfca361f84c8511c86b3ed935dbb..0000000000000000000000000000000000000000
--- a/User_MicroService_Group3/app.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
-runtime: python312
-entrypoint: gunicorn -b :$PORT index:app
\ No newline at end of file
diff --git a/User_MicroService_Group3/app/__init__.py b/User_MicroService_Group3/app/__init__.py
deleted file mode 100644
index e5da06c31592e6410ec992cae27f65004ade98d6..0000000000000000000000000000000000000000
--- a/User_MicroService_Group3/app/__init__.py
+++ /dev/null
@@ -1,10 +0,0 @@
-from flask import Flask
-
-from app.models import login
-
-app = Flask(__name__)
-
-from app import routes
-
-if __name__ == '__main__':
-    app.run(debug=True)
\ No newline at end of file
diff --git a/User_MicroService_Group3/app/__pycache__/config.cpython-311.pyc b/User_MicroService_Group3/app/__pycache__/config.cpython-311.pyc
deleted file mode 100644
index 091813a29718206a89d166b99bce03396b05d34c..0000000000000000000000000000000000000000
Binary files a/User_MicroService_Group3/app/__pycache__/config.cpython-311.pyc and /dev/null differ
diff --git a/User_MicroService_Group3/app/config.py b/User_MicroService_Group3/app/config.py
deleted file mode 100644
index 0405b913851c12c81c205bd6e66277fba2a0278a..0000000000000000000000000000000000000000
--- a/User_MicroService_Group3/app/config.py
+++ /dev/null
@@ -1,11 +0,0 @@
-import os
-
-
-DEBUG = True
-SECRET_KEY = "Group3"
-
-PORT = 5000
-
-KAFKA_SERVER = "kafka:9092"
-
-HOST = "0.0.0.0"
\ No newline at end of file
diff --git a/User_MicroService_Group3/app/controllers/__init__.py b/User_MicroService_Group3/app/controllers/__init__.py
deleted file mode 100644
index 83fe4b03fbf1ea1097fdec730685170c3a35cc8d..0000000000000000000000000000000000000000
--- a/User_MicroService_Group3/app/controllers/__init__.py
+++ /dev/null
@@ -1,3 +0,0 @@
-from flask import Flask
-from flask import Blueprint
-
diff --git a/User_MicroService_Group3/app/controllers/__pycache__/__init__.cpython-311.pyc b/User_MicroService_Group3/app/controllers/__pycache__/__init__.cpython-311.pyc
deleted file mode 100644
index 5a4bfd8103bb4380305718ed59e96e027557a8a4..0000000000000000000000000000000000000000
Binary files a/User_MicroService_Group3/app/controllers/__pycache__/__init__.cpython-311.pyc and /dev/null differ
diff --git a/User_MicroService_Group3/app/controllers/__pycache__/changePasswordController.cpython-311.pyc b/User_MicroService_Group3/app/controllers/__pycache__/changePasswordController.cpython-311.pyc
deleted file mode 100644
index 34cc426ee500d1191ecb52b66c1c4517c902dad9..0000000000000000000000000000000000000000
Binary files a/User_MicroService_Group3/app/controllers/__pycache__/changePasswordController.cpython-311.pyc and /dev/null differ
diff --git a/User_MicroService_Group3/app/controllers/__pycache__/deleteProfileController.cpython-311.pyc b/User_MicroService_Group3/app/controllers/__pycache__/deleteProfileController.cpython-311.pyc
deleted file mode 100644
index 6ce448acfcb8142341af9ce1dbd5583428925b08..0000000000000000000000000000000000000000
Binary files a/User_MicroService_Group3/app/controllers/__pycache__/deleteProfileController.cpython-311.pyc and /dev/null differ
diff --git a/User_MicroService_Group3/app/controllers/__pycache__/fetchUsernameController.cpython-311.pyc b/User_MicroService_Group3/app/controllers/__pycache__/fetchUsernameController.cpython-311.pyc
deleted file mode 100644
index 4cbe6aa45038b2bd7bda92392953d3e3b023f3a3..0000000000000000000000000000000000000000
Binary files a/User_MicroService_Group3/app/controllers/__pycache__/fetchUsernameController.cpython-311.pyc and /dev/null differ
diff --git a/User_MicroService_Group3/app/controllers/__pycache__/login.cpython-311.pyc b/User_MicroService_Group3/app/controllers/__pycache__/login.cpython-311.pyc
deleted file mode 100644
index ee02eac64b23cc7222f821324eb85aa9d76b8dc0..0000000000000000000000000000000000000000
Binary files a/User_MicroService_Group3/app/controllers/__pycache__/login.cpython-311.pyc and /dev/null differ
diff --git a/User_MicroService_Group3/app/controllers/__pycache__/loginController.cpython-311.pyc b/User_MicroService_Group3/app/controllers/__pycache__/loginController.cpython-311.pyc
deleted file mode 100644
index c0b17d9c4604c96ba994a28b64fd1eebc7061a71..0000000000000000000000000000000000000000
Binary files a/User_MicroService_Group3/app/controllers/__pycache__/loginController.cpython-311.pyc and /dev/null differ
diff --git a/User_MicroService_Group3/app/controllers/__pycache__/logoutController.cpython-311.pyc b/User_MicroService_Group3/app/controllers/__pycache__/logoutController.cpython-311.pyc
deleted file mode 100644
index 63d12e36ae470889c341e2c26608db4c1b994b39..0000000000000000000000000000000000000000
Binary files a/User_MicroService_Group3/app/controllers/__pycache__/logoutController.cpython-311.pyc and /dev/null differ
diff --git a/User_MicroService_Group3/app/controllers/__pycache__/showReviewsController.cpython-311.pyc b/User_MicroService_Group3/app/controllers/__pycache__/showReviewsController.cpython-311.pyc
deleted file mode 100644
index 51d9ad122d7784716c744cb4a8122c6254d70f40..0000000000000000000000000000000000000000
Binary files a/User_MicroService_Group3/app/controllers/__pycache__/showReviewsController.cpython-311.pyc and /dev/null differ
diff --git a/User_MicroService_Group3/app/controllers/__pycache__/signupController.cpython-311.pyc b/User_MicroService_Group3/app/controllers/__pycache__/signupController.cpython-311.pyc
deleted file mode 100644
index 55cd6b76556ac83d7c5d814dc2a64f828492b907..0000000000000000000000000000000000000000
Binary files a/User_MicroService_Group3/app/controllers/__pycache__/signupController.cpython-311.pyc and /dev/null differ
diff --git a/User_MicroService_Group3/app/controllers/__pycache__/updateProfileController.cpython-311.pyc b/User_MicroService_Group3/app/controllers/__pycache__/updateProfileController.cpython-311.pyc
deleted file mode 100644
index 8b7bc1569e5e102cdf2927d1001d7ef46f330135..0000000000000000000000000000000000000000
Binary files a/User_MicroService_Group3/app/controllers/__pycache__/updateProfileController.cpython-311.pyc and /dev/null differ
diff --git a/User_MicroService_Group3/app/controllers/changePasswordController.py b/User_MicroService_Group3/app/controllers/changePasswordController.py
deleted file mode 100644
index 5fbb96dbca89b737017962cde091c6c2b72d7499..0000000000000000000000000000000000000000
--- a/User_MicroService_Group3/app/controllers/changePasswordController.py
+++ /dev/null
@@ -1,122 +0,0 @@
-#This page allows users to change their password
-#
-#
-from flask import Blueprint, jsonify, request, session
-from models.changePassword import check_old_password, set_new_password
-import hashlib
-import secrets
-import hmac
-
-change_password_bp = Blueprint("change_password",__name__)
-
-@change_password_bp.route("/user/change_password", methods=["POST"])
-def change_password():
-
-    user_id = session.get("user_id") #Get user ID from session
-
-    if user_id:#checks if user is logges in
-
-        if request.method == 'POST':
-
-            #User data from front end
-            data = request.get_json()
-            email = data.get("email")
-            old_password = data.get("old_password")
-            new_password = data.get("new_password")
-
-            new_encoded_password = generate_password_hash(new_password)
-            new_password_hash = new_encoded_password["hash"]
-            new_password_salt = new_encoded_password["salt"]
-            new_password_iterations = new_encoded_password["iterations"]
-
-            #collect old password, user id and email into json
-            old_auth = {
-                "user_id" : user_id,
-                "email" : email,
-                "password": old_password
-            }
-
-            #user_old_auth = check_old_password(old_auth) 
-            
-
-            #send old password to database            
-            old_auth_info, value = check_old_password(old_auth) #function returns certain columns collected from database
-
-            if value == 1: #if user exists in database
-
-                old_password_hash = old_auth_info.get("PasswordHash")
-                old_password_salt = old_auth_info.get("PasswordSalt")
-                old_password_iterations = old_auth_info.get("Iterations")
-
-
-                #password authentication. Calls password fucntions
-                old_password_info = generate_password_hash(old_password)
-                is_correct = verify_password(old_password_info, old_password, old_password_salt, old_password_iterations, old_password_hash)
-
-                if is_correct == True:#if password is correct
-
-                    #passes new password information to json
-                    new_auth = {
-                        "user_id" : user_id,
-                        "email" : email,
-                        "password": new_password,
-                        "hash": new_password_hash,
-                        "salt": new_password_salt,
-                        "iterations": new_password_iterations
-                    }
-
-                    #sends new password to database
-                    new_auth_info = set_new_password(new_auth)
-
-
-
-                    response_data = {"message":"Password is correct"}
-                    return jsonify(new_auth_info, user_id)
-                
-                else:
-                    response_data = {"error":"Old password is incorrect", "email": email}
-                    return jsonify(response_data)
-                
-            else:
-                return {"error" : "Email does not exist"}
-            
-        
-        return {"error" : "null"}
-    
-    else:
-        return {"error" : "User not logged in"}
-
-        
-
-    
-
-#password encoding
-def generate_password_hash(password):
-    # Generate a 16-byte salt
-    salt = secrets.token_bytes(16)
-    # Define the number of iterations
-    iterations = 100000
-    # Generate the hash using PBKDF2-HMAC-SHA-256
-    hash = hashlib.pbkdf2_hmac('sha256', password.encode(), salt, iterations)
-    
-    # Return the salt, iterations, and hash, encoded in a way that can be stored in the database
-    return {
-        'salt': salt.hex(),
-        'iterations': iterations,
-        'hash': hash.hex()
-    }
-
-
-#password verification
-def verify_password(stored_password_info, submitted_password, salt, iterations, user_hash):
-    # Convert the stored salt back to bytes
-    salt = bytes.fromhex(salt)
-    # Use the same number of iterations as when the password was hashed
-    iterations = iterations
-    # Hash the submitted password with the stored salt and iterations
-    hash = hashlib.pbkdf2_hmac('sha256', submitted_password.encode(), salt, iterations)
-    
-    # Compare the newly generated hash with the stored hash
-    # Convert the generated hash to hex for comparison
-    
-    return hmac.compare_digest(hash.hex(), user_hash)
\ No newline at end of file
diff --git a/User_MicroService_Group3/app/controllers/deleteProfileController.py b/User_MicroService_Group3/app/controllers/deleteProfileController.py
deleted file mode 100644
index f29f3689923437d63695693ebaf81f1be31a2dcb..0000000000000000000000000000000000000000
--- a/User_MicroService_Group3/app/controllers/deleteProfileController.py
+++ /dev/null
@@ -1,37 +0,0 @@
-#This section allows a user to delete their profile
-#
-
-from flask import Blueprint, jsonify, request, session
-from models.deleteProfile import delete
-
-deleteProfile_bp = Blueprint("deleteProfile",__name__)
-
-@deleteProfile_bp.route("/user/deleteProfile", methods=["POST"])
-def deleteProfile():
-
-    #collects user id from session
-    user_id = session.get("user_id")
-
-    if user_id:#checks if user is logged in
-
-        if request.method == 'POST':
-
-            #User data from front end
-            data = request.get_json()
-            email = data.get("email")
-
-            user_info = {
-                "email" : email,
-                "user_id" : user_id
-            }
-
-            user = delete(user_info) #sends user data to database
-            
-
-            return jsonify(user, user_id)
-        
-        else:
-            return {"message" : "null"}
-    
-    else:
-        return {"error" : "User not logged in"}
\ No newline at end of file
diff --git a/User_MicroService_Group3/app/controllers/fetchUsernameController.py b/User_MicroService_Group3/app/controllers/fetchUsernameController.py
deleted file mode 100644
index 00380458a388542e5aaa69a20561324d7f152a0c..0000000000000000000000000000000000000000
--- a/User_MicroService_Group3/app/controllers/fetchUsernameController.py
+++ /dev/null
@@ -1,30 +0,0 @@
-from flask import Blueprint, jsonify, request, json, session
-from models.fetchUsername import get_username
-
-fetch_username_bp = Blueprint("getUsername",__name__)
-
-#This function is for the product microservice. It makes a call to this
-#endpoint to fetch a user's username when they want to add a product review
-@fetch_username_bp.route("/user/getUsername", methods=["POST"])
-def username():
-
-    user_id = session.get("user_id") #gets session data
-
-    #if user_id: #if user is logged in
-
-    if request.method == 'POST':
-
-        #User data from front end
-        data = request.get_json()
-        userID = data.get("id")
-
-            
-
-        username= get_username(userID) #Send user info to database
-
-        return jsonify({"username" : username}), 200
-    
-    else:
-        return {"error" : "null"}
-    #else:
-     #   return {"error" : "User not logged in"}
\ No newline at end of file
diff --git a/User_MicroService_Group3/app/controllers/getUsersController.py b/User_MicroService_Group3/app/controllers/getUsersController.py
deleted file mode 100644
index e2a9bd4c09b48d0beb756dddd03e66562435a8ba..0000000000000000000000000000000000000000
--- a/User_MicroService_Group3/app/controllers/getUsersController.py
+++ /dev/null
@@ -1,19 +0,0 @@
-from flask import Blueprint, jsonify, request, json, session, redirect
-from config import KAFKA_SERVER
-
-from models.getUsers import fetch_user_info
-
-from kafka import KafkaConsumer
-
-consumer = KafkaConsumer("review_events", bootstrap_servers=KAFKA_SERVER)
-
-def getusers(user_id):
-
-    pass
-
-
-for message in consumer:
-
-    event_data = json.loads(message.value.decode())
-    user_id = event_data["user_id"]
-    username = getusers(user_id)
\ No newline at end of file
diff --git a/User_MicroService_Group3/app/controllers/loginController.py b/User_MicroService_Group3/app/controllers/loginController.py
deleted file mode 100644
index 232350cda6d673061fd1a75a26a98ddcd07ab8de..0000000000000000000000000000000000000000
--- a/User_MicroService_Group3/app/controllers/loginController.py
+++ /dev/null
@@ -1,93 +0,0 @@
-#This section allows a user to log in
-
-from flask import Blueprint, jsonify, request, session
-from models.login import fetch_user
-from models.login import fetch_password
-import hashlib
-import secrets
-import hmac
-
-login_bp = Blueprint("login",__name__)
-
-@login_bp.route("/login", methods=["POST"])
-def login():
-
-    if request.method == 'POST':
-
-        #User data from front end
-        data = request.get_json()
-        email = data.get("email")
-        password = data.get("password")
-
-        
-
-        user = fetch_user(email) #Collect user data from database
-        
-        #User authentication
-        if user is not None: #If database found matching email the user entered
-
-            user_email = user.get("Email") #User email from database
-
-
-            if user_email == email: #Checks if email returned from database is the same as what user entered
-                
-                auth = fetch_password(user_email) #function returns certain columns collected from database
-
-                user_hash = auth.get("PasswordHash")
-                user_salt = auth.get("PasswordSalt")
-                user_iterations = auth.get("Iterations")
-
-
-                #password authentication
-                password_info = generate_password_hash(password)
-                is_correct = verify_password(password_info, password, user_salt, user_iterations, user_hash)
-
-                if is_correct == True: #if password is correct
-                    session["user_id"] = user.get("UserID")
-                    response_data = {"message":"Login Sucessful", "email": email, "session" : session["user_id"]}
-                    return jsonify(response_data)
-                
-                else:
-                    response_data = {"message":"Email or password incorrect", "email": email}
-                    return jsonify(response_data)
-
-                
-            else:
-                return ("Email does not exist")
-            
-        else:
-            response_data = {"message":"Email does not exist", "email": email}
-            return jsonify(response_data)
-    
-    return {"message" : "null"}
-    
-
-#password encryption
-def generate_password_hash(password):
-    # Generate a 16-byte salt
-    salt = secrets.token_bytes(16)
-    # Define the number of iterations
-    iterations = 100000
-    # Generate the hash using PBKDF2-HMAC-SHA-256
-    hash = hashlib.pbkdf2_hmac('sha256', password.encode(), salt, iterations)
-    
-    # Return the salt, iterations, and hash, encoded in a way that can be stored in the database
-    return {
-        'salt': salt.hex(),
-        'iterations': iterations,
-        'hash': hash.hex()
-    }
-
-#password verification
-def verify_password(stored_password_info, submitted_password, salt, iterations, user_hash):
-    # Convert the stored salt back to bytes
-    salt = bytes.fromhex(salt)
-    # Use the same number of iterations as when the password was hashed
-    iterations = iterations
-    # Hash the submitted password with the stored salt and iterations
-    hash = hashlib.pbkdf2_hmac('sha256', submitted_password.encode(), salt, iterations)
-    
-    # Compare the newly generated hash with the stored hash
-    # Convert the generated hash to hex for comparison
-    
-    return hmac.compare_digest(hash.hex(), user_hash)
\ No newline at end of file
diff --git a/User_MicroService_Group3/app/controllers/logoutController.py b/User_MicroService_Group3/app/controllers/logoutController.py
deleted file mode 100644
index e296c4dae0172fed0af189b5005cfbef8d1a021c..0000000000000000000000000000000000000000
--- a/User_MicroService_Group3/app/controllers/logoutController.py
+++ /dev/null
@@ -1,23 +0,0 @@
-#This section allows a user to log out
-
-from flask import Blueprint, jsonify, request, json, session, redirect
-
-
-logout_bp = Blueprint("logout",__name__)
-
-@logout_bp.route("/logout", methods=["POST"])
-def logout():
-
-    user_id = session.get("user_id") #get session data
-
-    if user_id: #if user is logged in
-
-        if request.method == 'POST':
-
-            session.pop("user_id", None) #deletes session
-            return ({"message" : "Log out successful"})
-        
-        else:
-            return {"error" : "null"}
-    else:
-        return {"error" : "User not logged in"}
\ No newline at end of file
diff --git a/User_MicroService_Group3/app/controllers/showReviewsController.py b/User_MicroService_Group3/app/controllers/showReviewsController.py
deleted file mode 100644
index 42d853475f2622e476bcb9ca5ed87e0c8d58e472..0000000000000000000000000000000000000000
--- a/User_MicroService_Group3/app/controllers/showReviewsController.py
+++ /dev/null
@@ -1,56 +0,0 @@
-from flask import Blueprint, jsonify, request, session
-from kafka import KafkaConsumer
-import json
-from config import KAFKA_SERVER
-
-show_reviews_bp = Blueprint("showReviews", __name__)
-
-
-consumer_conf = {
-    "bootstrap_servers": KAFKA_SERVER,
-    "group_id": "show_reviews_group", 
-    "auto_offset_reset": "earliest"   
-}
-
-#Function to consume reviews published by product microservice
-def consume_reviews(num_reviews=1):
-    consumer = KafkaConsumer("customer_reviews", **consumer_conf)
-    reviews = []
-    
-
-    for message in consumer:
-
-        review_data_str = message.value.decode("utf-8")
-        
-
-        review_data = json.loads(review_data_str)
-        
-
-        reviews.append(review_data)
-        
-
-        if len(reviews) >= num_reviews:
-            break
-
-
-    consumer.close()
-
-    return reviews
-
-
-#Route to show reviews for a user
-@show_reviews_bp.route("/user/showReviews", methods=["POST"])
-def show_reviews():
-    #Collect user id from session
-    user_id = session.get("user_id")
-
-    if user_id:  # Check if user is logged in
-        if request.method == 'POST':
-            #Call function to consume reviews
-            reviews = consume_reviews()
-
-            return jsonify(reviews)
-        else:
-            return {"message": "null"}
-    else:
-        return {"error": "User not logged in"}
diff --git a/User_MicroService_Group3/app/controllers/signupController.py b/User_MicroService_Group3/app/controllers/signupController.py
deleted file mode 100644
index 0ec066371a3283032f8f059a08a2e7eab3ea1d78..0000000000000000000000000000000000000000
--- a/User_MicroService_Group3/app/controllers/signupController.py
+++ /dev/null
@@ -1,71 +0,0 @@
-#This section allows a user to create a profile
-
-from flask import Blueprint, jsonify, request, json
-from models.signup import new_user
-import hashlib
-import secrets
-
-signup_bp = Blueprint("signup",__name__)
-
-@signup_bp.route("/signup", methods=["POST"])
-def signup():
-
-    if request.method == 'POST':
-
-        #User data from front end
-        data = request.get_json()
-        email = data.get("email")
-        first_name = data.get("first_name")
-        last_name = data.get("last_name")
-        location = data.get("location")
-        gender = data.get("gender")
-        password = data.get("password")
-        encoded_password = generate_password_hash(password)
-        hash = encoded_password["hash"]
-        salt = encoded_password["salt"]
-        iterations = encoded_password["iterations"]
-
-        if email.strip() != "": #checks if email is not empty (email cannot be null)
-            
-            # Create a dictionary from user data
-            user_data = {
-                "email": email,
-                "first_name": first_name,
-                "last_name": last_name,
-                "location": location,
-                "gender": gender,
-                "password": password,
-                "hash": hash,
-                "salt": salt,
-                "iterations": iterations
-            }
-
-            # Convert to JSON
-            json_user_data = json.dumps(user_data)
-
-
-            update = new_user(user_data) #Send user info to database
-
-            return jsonify(update)
-        
-        else:
-            return {"error" : "email cannot be empty"}
-    
-    return {"error" : "null"}
-    
-
-#This function encrypts the user's password
-def generate_password_hash(password):
-    # Generate a 16-byte salt
-    salt = secrets.token_bytes(16)
-    # Define the number of iterations
-    iterations = 100000
-    # Generate the hash using PBKDF2-HMAC-SHA-256
-    hash = hashlib.pbkdf2_hmac('sha256', password.encode(), salt, iterations)
-    
-    # Return the salt, iterations, and hash, encoded in a way that can be stored in the database
-    return {
-        'salt': salt.hex(),
-        'iterations': iterations,
-        'hash': hash.hex()
-    }
diff --git a/User_MicroService_Group3/app/controllers/updateProfileController.py b/User_MicroService_Group3/app/controllers/updateProfileController.py
deleted file mode 100644
index bca3119885f245ad049dc58820fc7c92a1d5aceb..0000000000000000000000000000000000000000
--- a/User_MicroService_Group3/app/controllers/updateProfileController.py
+++ /dev/null
@@ -1,56 +0,0 @@
-#This section allows a user to update their profile
-
-from flask import Blueprint, jsonify, request, json, session
-from models.updateProfile import update_user
-from models.updateProfile import fetch_user_info
-
-from events.eventDefinitions import updated_username
-from publishers.kafkaPublishers import publish_username_updated_event
-
-update_profile_bp = Blueprint("update",__name__)
-
-@update_profile_bp.route("/user/update", methods=["POST"])
-def update_profile():
-
-    user_id = session.get("user_id") #gets session data
-
-    if user_id: #if user is logged in
-
-        user_info = fetch_user_info(user_id)
-        print(jsonify(user_info))
-
-        if request.method == 'POST':
-
-            #User data from front end
-            data = request.get_json()
-            email = data.get("email")
-            first_name = data.get("first_name")
-            last_name = data.get("last_name")
-            location = data.get("location")
-            gender = data.get("gender")
-
-                
-            # Create a json object from user data
-            user_data = {
-                "user_id" : user_id,
-                "email": email,
-                "first_name": first_name,
-                "last_name": last_name,
-                "location": location,
-                "gender": gender,
-            }
-
-            update = update_user(user_data) #Send user info to database
-
-            if "message" in update:
-
-                event_data = {"user_id" : user_id, "new_username" : user_data["first_name"]}
-                event_message = updated_username(user_id, user_data["first_name"])
-                publish_username_updated_event(event_data)
-
-                return jsonify({"Update Status": update, "Username" : user_data["first_name"], "User ID" : user_id, "Event message" : event_message})
-        
-        else:
-            return {"error" : "null"}
-    else:
-        return {"error" : "User not logged in"}
\ No newline at end of file
diff --git a/User_MicroService_Group3/app/events/__init__.py b/User_MicroService_Group3/app/events/__init__.py
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/User_MicroService_Group3/app/events/__pycache__/__init__.cpython-311.pyc b/User_MicroService_Group3/app/events/__pycache__/__init__.cpython-311.pyc
deleted file mode 100644
index 95be18671d60d24a8dd5c89660bea97b034080d2..0000000000000000000000000000000000000000
Binary files a/User_MicroService_Group3/app/events/__pycache__/__init__.cpython-311.pyc and /dev/null differ
diff --git a/User_MicroService_Group3/app/events/__pycache__/eventDefinitions.cpython-311.pyc b/User_MicroService_Group3/app/events/__pycache__/eventDefinitions.cpython-311.pyc
deleted file mode 100644
index 26189d001a07adbc3c51f25578fd46235d1830b5..0000000000000000000000000000000000000000
Binary files a/User_MicroService_Group3/app/events/__pycache__/eventDefinitions.cpython-311.pyc and /dev/null differ
diff --git a/User_MicroService_Group3/app/events/eventDefinitions.py b/User_MicroService_Group3/app/events/eventDefinitions.py
deleted file mode 100644
index bb88066408e7c588d1eeadaec115cac9b4c2f06a..0000000000000000000000000000000000000000
--- a/User_MicroService_Group3/app/events/eventDefinitions.py
+++ /dev/null
@@ -1,5 +0,0 @@
-def updated_username(user_id, new_username):
-
-    return {"event_type": "profile_updated",
-        "user_id": user_id,
-        "new_username": new_username}
\ No newline at end of file
diff --git a/User_MicroService_Group3/app/index.py b/User_MicroService_Group3/app/index.py
deleted file mode 100644
index 2ee61fb8d8d7cd0d715eb4c479b74b65da147209..0000000000000000000000000000000000000000
--- a/User_MicroService_Group3/app/index.py
+++ /dev/null
@@ -1,80 +0,0 @@
-from flask import Flask, jsonify, redirect, json, url_for, request, render_template, make_response, session, abort
-from flask_cors import CORS
-from flask import jsonify
-from controllers.loginController import login_bp
-from controllers.signupController import signup_bp
-from controllers.updateProfileController import update_profile_bp
-from controllers.changePasswordController import change_password_bp
-from controllers.deleteProfileController import deleteProfile_bp
-from controllers.logoutController import logout_bp
-from controllers.fetchUsernameController import fetch_username_bp
-from controllers.showReviewsController import show_reviews_bp
-
-from config import DEBUG, SECRET_KEY, PORT, HOST
-import os
-import requests
-import publishers
-
-
-
-app = Flask(__name__)
-CORS(app)
-
-
-@app.route('/')
-def index():
-    return render_template("index.html")
-
-
-@app.route("/hello/<int:score>")
-def hello_user(score):
-    return render_template("hello.html", marks=score)
-
-
-app.register_blueprint(login_bp)
-
-app.register_blueprint(signup_bp)
-
-app.register_blueprint(update_profile_bp)
-
-app.register_blueprint(change_password_bp)
-
-app.register_blueprint(deleteProfile_bp)
-
-app.register_blueprint(logout_bp)
-
-app.register_blueprint(fetch_username_bp)
-
-app.register_blueprint(show_reviews_bp)
-
-publishers.create_profile_updated_topic()
-
-
-#Check if application is running in docker to collect or set secret key
-try:
-
-    #Check for the existence of the /proc/self/cgroup file
-    with open("/proc/self/cgroup", "r") as cgroup_file:
-        cgroup_info = cgroup_file.read()
-
-    #Check if the cgroup information contains 'docker' keyword
-    if 'docker' in cgroup_info:
-        print("Running inside Docker container")
-        app.secret_key = os.environ.get('SECRET_KEY')
-    
-except FileNotFoundError:
-    # If the file doesn't exist
-    print("Running on a local Windows machine")
-
-    app.secret_key = SECRET_KEY
-
-
-@app.route("/userIDs", methods=["POST"])
-def userIDs():
-
-    #ids = request.json
-    #print(ids)
-    return 'hi'
-
-if __name__ == '__main__':
-    app.run(host=HOST, debug=DEBUG, port=PORT)
\ No newline at end of file
diff --git a/User_MicroService_Group3/app/models/__init__.py b/User_MicroService_Group3/app/models/__init__.py
deleted file mode 100644
index d55ce4a0c8e0748e87cd3ecae1b6fe12294bdae3..0000000000000000000000000000000000000000
--- a/User_MicroService_Group3/app/models/__init__.py
+++ /dev/null
@@ -1,15 +0,0 @@
-from flask import Flask
-from flask_cors import CORS
-
-
-#from app.models import models
-
-app = Flask(__name__)
-CORS(app)
-
-#db = sqlAlchemy
-
-#from app import routes
-
-if __name__ == '__main__':
-    app.run(debug=True)
\ No newline at end of file
diff --git a/User_MicroService_Group3/app/models/__pycache__/__init__.cpython-311.pyc b/User_MicroService_Group3/app/models/__pycache__/__init__.cpython-311.pyc
deleted file mode 100644
index dfb0366dfbe4ee46a4cd5603bac50bd5dcb0efcf..0000000000000000000000000000000000000000
Binary files a/User_MicroService_Group3/app/models/__pycache__/__init__.cpython-311.pyc and /dev/null differ
diff --git a/User_MicroService_Group3/app/models/__pycache__/changePassword.cpython-311.pyc b/User_MicroService_Group3/app/models/__pycache__/changePassword.cpython-311.pyc
deleted file mode 100644
index efbc1602a81cf43627230b17ff6be9b650f9cba8..0000000000000000000000000000000000000000
Binary files a/User_MicroService_Group3/app/models/__pycache__/changePassword.cpython-311.pyc and /dev/null differ
diff --git a/User_MicroService_Group3/app/models/__pycache__/database_connection.cpython-311.pyc b/User_MicroService_Group3/app/models/__pycache__/database_connection.cpython-311.pyc
deleted file mode 100644
index d54224fd06a5210d5b85dad1790380d510110bd7..0000000000000000000000000000000000000000
Binary files a/User_MicroService_Group3/app/models/__pycache__/database_connection.cpython-311.pyc and /dev/null differ
diff --git a/User_MicroService_Group3/app/models/__pycache__/deleteProfile.cpython-311.pyc b/User_MicroService_Group3/app/models/__pycache__/deleteProfile.cpython-311.pyc
deleted file mode 100644
index 11cd5e31a86ac49992cc243db920bc089e02298a..0000000000000000000000000000000000000000
Binary files a/User_MicroService_Group3/app/models/__pycache__/deleteProfile.cpython-311.pyc and /dev/null differ
diff --git a/User_MicroService_Group3/app/models/__pycache__/fetchUsername.cpython-311.pyc b/User_MicroService_Group3/app/models/__pycache__/fetchUsername.cpython-311.pyc
deleted file mode 100644
index ae95206848ec046c1557589c2b224c793de637e2..0000000000000000000000000000000000000000
Binary files a/User_MicroService_Group3/app/models/__pycache__/fetchUsername.cpython-311.pyc and /dev/null differ
diff --git a/User_MicroService_Group3/app/models/__pycache__/getUsers.cpython-311.pyc b/User_MicroService_Group3/app/models/__pycache__/getUsers.cpython-311.pyc
deleted file mode 100644
index dd54bdac2b3189ffb26e70c80dcb6d7a9d4b3f61..0000000000000000000000000000000000000000
Binary files a/User_MicroService_Group3/app/models/__pycache__/getUsers.cpython-311.pyc and /dev/null differ
diff --git a/User_MicroService_Group3/app/models/__pycache__/login.cpython-311.pyc b/User_MicroService_Group3/app/models/__pycache__/login.cpython-311.pyc
deleted file mode 100644
index b77602b227dc0fa7d1be7ce1a7e1b0b2398dca15..0000000000000000000000000000000000000000
Binary files a/User_MicroService_Group3/app/models/__pycache__/login.cpython-311.pyc and /dev/null differ
diff --git a/User_MicroService_Group3/app/models/__pycache__/models.cpython-311.pyc b/User_MicroService_Group3/app/models/__pycache__/models.cpython-311.pyc
deleted file mode 100644
index 0c5497a917a5f33bfe0edde28b561ef47b6a7caf..0000000000000000000000000000000000000000
Binary files a/User_MicroService_Group3/app/models/__pycache__/models.cpython-311.pyc and /dev/null differ
diff --git a/User_MicroService_Group3/app/models/__pycache__/signup.cpython-311.pyc b/User_MicroService_Group3/app/models/__pycache__/signup.cpython-311.pyc
deleted file mode 100644
index 94a888ae05aa3787387431d65168edf553a0a2cf..0000000000000000000000000000000000000000
Binary files a/User_MicroService_Group3/app/models/__pycache__/signup.cpython-311.pyc and /dev/null differ
diff --git a/User_MicroService_Group3/app/models/__pycache__/updateProfile.cpython-311.pyc b/User_MicroService_Group3/app/models/__pycache__/updateProfile.cpython-311.pyc
deleted file mode 100644
index a3cc094c4a2bb3f0c99ed37c439242aab85aaf1a..0000000000000000000000000000000000000000
Binary files a/User_MicroService_Group3/app/models/__pycache__/updateProfile.cpython-311.pyc and /dev/null differ
diff --git a/User_MicroService_Group3/app/models/changePassword.py b/User_MicroService_Group3/app/models/changePassword.py
deleted file mode 100644
index 3e7403d667fa12de9e122853552fb14da27210a1..0000000000000000000000000000000000000000
--- a/User_MicroService_Group3/app/models/changePassword.py
+++ /dev/null
@@ -1,107 +0,0 @@
-from flask import jsonify
-import pyodbc
-from models.database_connection import connect_db
-
-
-
-def check_old_password(data):
-
-    try: #error handling
-
-        connection = connect_db()
-        cursor = connection.cursor()
-
-        email = data["email"]
-        user_id = data["user_id"]
-
-        
-
-        #Check if the email already exists
-        email_check_query = "SELECT COUNT(*) FROM dbo.User_table WHERE UserID = ?"
-        cursor.execute(email_check_query, user_id) #executes the query
-        count = cursor.fetchone()[0]
-
-        if count == 0:
-            return ({"Error" : "Email does not exist"}, 0)
-        
-        else:
-            #selects password information from database
-            query = "SELECT t1.Email, t1.UserID, t2.Iterations, t2.PasswordHash, t2.PasswordSalt FROM dbo.User_table as t1 INNER JOIN dbo.AuthInfo as t2 ON t1.UserID = t2.UserID where t1.UserID= ?"
-            
-            cursor.execute(query, user_id) #executes query
-
-            row = cursor.fetchone()
-
-            columns = [column[0] for column in cursor.description]
-            user_data = dict(zip(columns, row))
-
-            #connection.close()
-
-            return (user_data, 1)
-    
-    except pyodbc.Error as e: #more error handling
-        print(f"Database error in check_old_password: {e}")
-        connection.rollback()
-        return {"Error" : "Database error"}
-    
-    except Exception as e: #more error handling
-        print(f"Unexpected error occured in check_old_password: {e}")
-        connection.rollback()
-        return {"Error" : "Unexpected error"}
-    
-    finally:
-        if cursor:
-            cursor.close()
-        if connection:
-            connection.close()
-
-
-def set_new_password(data):
-
-    try: #error handling
-
-        connection = connect_db()
-        cursor = connection.cursor()
-
-        email = data["email"]
-        user_id = data["user_id"]
-        
-
-        #selects user ID
-        select_userID_query = "SELECT UserID from dbo.User_table where UserID = ?"
-        cursor.execute(select_userID_query, user_id)
-        UserID = cursor.fetchone()[0]
-
-
-        #updates password
-        update_authinfo_query = '''UPDATE dbo.AuthInfo
-    SET PasswordHash = ?, PasswordSalt = ?, Iterations = ?, TempPlainText = ?
-    WHERE UserID = ?'''
-        
-
-        cursor.execute(update_authinfo_query, (data["hash"], data["salt"], data["iterations"], data["password"], UserID))
-
-        connection.commit()
-
-
-        #connection.close()
-
-        return {"Message" : "Password updated successfully"}
-    
-
-    
-    except pyodbc.Error as e: #more error handling
-        print(f"Database error in set_new_password: {e}")
-        connection.rollback()
-        return {"Error" : "Database error"}
-    
-    except Exception as e: #more error handling
-        print(f"Unexpected error occured in set_new_password: {e}")
-        connection.rollback()
-        return {"Error" : "Unexpected error"}
-    
-    finally:
-        if cursor:
-            cursor.close()
-        if connection:
-            connection.close()
\ No newline at end of file
diff --git a/User_MicroService_Group3/app/models/database_connection.py b/User_MicroService_Group3/app/models/database_connection.py
deleted file mode 100644
index 945742875f3b666e8427edc3e662536a8e6ace70..0000000000000000000000000000000000000000
--- a/User_MicroService_Group3/app/models/database_connection.py
+++ /dev/null
@@ -1,24 +0,0 @@
-import pyodbc
-import os
-
-print("Outside db connection function")
-#Connect to database
-def connect_db():
-    print("In CONNECT DB")
-    try:
-
-        server = "35.197.217.212"
-        database = "userdatabase"
-        username = "sqlserver"
-        password = "WebTechGroup3"
-        driver = "ODBC Driver 17 for SQL Server"
-
-        connection_string = f"DRIVER={driver};SERVER={server};DATABASE={database};UID={username};PWD={password};Trusted_Connection=no;"
-      
-        return pyodbc.connect(connection_string)
-        
-    except Exception as e:
-        # If the file doesn't exist
-        print("Unexpected error occured {e}")
-
-        return False
diff --git a/User_MicroService_Group3/app/models/deleteProfile.py b/User_MicroService_Group3/app/models/deleteProfile.py
deleted file mode 100644
index 7972b969a1ba2a46cee56c5a76c0310f2be1b219..0000000000000000000000000000000000000000
--- a/User_MicroService_Group3/app/models/deleteProfile.py
+++ /dev/null
@@ -1,59 +0,0 @@
-#from app import db
-from flask import jsonify
-import pyodbc
-from models.database_connection import connect_db
-
-
-
-def delete(data):
-
-    try: #error handling
-
-        connection = connect_db()
-        cursor = connection.cursor()
-
-        email = data["email"]
-        user_id = data["user_id"]
-
-        # select user id from database
-        id_check_query = "SELECT UserID from dbo.User_table WHERE UserID= ?"
-        cursor.execute(id_check_query, user_id)
-        user_row = cursor.fetchone()
-
-        if user_row:
-            userID = user_row[0] 
-        else:
-            return {"Error": "User not found"}
-        
-        #delete from authinfo table first because of foreign key constraint
-        delete_authinfo_query = '''DELETE FROM dbo.AuthInfo WHERE UserID= ?'''
-        cursor.execute(delete_authinfo_query, userID)
-
-
-        #delete user info from user table 
-        delete_user_query = '''DELETE FROM dbo.User_table WHERE UserID = ?'''
-        cursor.execute(delete_user_query, userID)
-
-
-    
-
-        #commit changes to database if no errors
-        connection.commit()
-
-        return {"message" : "Account successfully deleted"}
-    
-    except pyodbc.Error as e: #more error handling
-        print(f"Database error in delete: {e}")
-        connection.rollback()
-        return {"Error" : "Database error"}
-    
-    except Exception as e: #more error handling
-        print(f"Unexpected error occured in delete: {e}")
-        connection.rollback()
-        return {"Error" : "Unexpected error"}
-    
-    finally:
-        if cursor:
-            cursor.close()
-        if connection:
-            connection.close()
\ No newline at end of file
diff --git a/User_MicroService_Group3/app/models/fetchUsername.py b/User_MicroService_Group3/app/models/fetchUsername.py
deleted file mode 100644
index 98c4cb135760391159dec56757fa7d2ddf267c88..0000000000000000000000000000000000000000
--- a/User_MicroService_Group3/app/models/fetchUsername.py
+++ /dev/null
@@ -1,39 +0,0 @@
-from flask import jsonify
-import pyodbc
-from models.database_connection import connect_db
-
-
-def get_username(id):
-
-    try: #error handling
-
-        connection = connect_db()
-        cursor = connection.cursor()
-
-        query = "SELECT Username FROM dbo.User_table where UserID = ?"
-        cursor.execute(query, id)
-
-        row = cursor.fetchone() #fetch data
-
-        if row:
-            return row[0] 
-        else:
-            return None
-
-        #connection.close()
-
-        return username
-    
-    except pyodbc.Error as e: #error handling
-        print(f"Database error in fetch_user_info: {e}")
-        return None
-    
-    except Exception as e: #error handling
-        print(f"Unexpected error occured in get_username: {e}")
-        return None
-    
-    finally:
-        if cursor:
-            cursor.close()
-        if connection:
-            connection.close()
diff --git a/User_MicroService_Group3/app/models/getUsers.py b/User_MicroService_Group3/app/models/getUsers.py
deleted file mode 100644
index f056e2dea7fe5579b85688e91003cd420b0dc591..0000000000000000000000000000000000000000
--- a/User_MicroService_Group3/app/models/getUsers.py
+++ /dev/null
@@ -1,38 +0,0 @@
-#from app import db
-from flask import jsonify
-import pyodbc
-from models.database_connection import connect_db
-
-
-def fetch_user_info(id):
-
-    try: #error handling
-
-        connection = connect_db()
-        cursor = connection.cursor()
-
-        query = "SELECT First_name, Last_name FROM dbo.User_table where UserID = ?"
-        cursor.execute(query, id)
-
-        row = cursor.fetchone() #fetch data
-
-        columns = [column[0] for column in cursor.description]
-        user_data = dict(zip(columns, row))
-
-        #connection.close()
-
-        return user_data
-    
-    except pyodbc.Error as e: #error handling
-        print(f"Database error in fetch_user_info: {e}")
-        return None
-    
-    except Exception as e: #error handling
-        print(f"Unexpected error occured in fetch_user_info: {e}")
-        return None
-    
-    finally:
-        if cursor:
-            cursor.close()
-        if connection:
-            connection.close()
\ No newline at end of file
diff --git a/User_MicroService_Group3/app/models/login.py b/User_MicroService_Group3/app/models/login.py
deleted file mode 100644
index f790b89365c7182f6c5345ca70a2a2436fa36c95..0000000000000000000000000000000000000000
--- a/User_MicroService_Group3/app/models/login.py
+++ /dev/null
@@ -1,72 +0,0 @@
-#from app import db
-import pyodbc
-from flask import jsonify
-from models.database_connection import connect_db
-
-#Function to get user info
-def fetch_user(email):
-
-    try: #error handling
-        print("In FETCH USER")
-        connection = connect_db()
-        cursor = connection.cursor()
-
-        query = "SELECT * FROM dbo.User_table where Email = ?"
-        cursor.execute(query, email)
-
-        row = cursor.fetchone() #fetch data
-
-        columns = [column[0] for column in cursor.description]
-        user_data = dict(zip(columns, row))
-
-        #connection.close()
-
-        return user_data
-    
-    except pyodbc.Error as e: #error handling
-        print(f"Database error in fetch_user: {e}")
-        return None
-    
-    except Exception as e: #error handling
-        print(f"Unexpected error occured in fetch_user: {e}")
-        return None
-    
-
-    
-
-
-
-#Fetch user's password
-def fetch_password(email):
-
-    try:
-
-        connection = connect_db()
-        cursor = connection.cursor()
-
-        query = "SELECT t1.Email, t1.UserID, t2.Iterations, t2.PasswordHash, t2.PasswordSalt FROM dbo.User_table as t1 INNER JOIN dbo.AuthInfo as t2 ON t1.UserID = t2.UserID where Email= ?"
-        
-        cursor.execute(query, email)
-
-        row = cursor.fetchone()
-
-        if row is None:
-            return {"message" : "Email does not exist"}
-
-        else:
-            columns = [column[0] for column in cursor.description]
-            user_data = dict(zip(columns, row))
-
-            #connection.close()
-
-            return user_data
-    
-    except pyodbc.Error as e:
-        print(f"Database error in fetch_user: {e}")
-        return None
-    
-    except Exception as e:
-        print(f"Unexpected error occured in fetch_user: {e}")
-        return None
-    
- 
\ No newline at end of file
diff --git a/User_MicroService_Group3/app/models/signup.py b/User_MicroService_Group3/app/models/signup.py
deleted file mode 100644
index 63031efd240aead253b9dfcab8b2ac556cd55b36..0000000000000000000000000000000000000000
--- a/User_MicroService_Group3/app/models/signup.py
+++ /dev/null
@@ -1,63 +0,0 @@
-#from app import db
-from flask import jsonify
-import pyodbc
-from models.database_connection import connect_db
-
-
-#Create a new user
-def new_user(data):
-
-    try: #error handling
-
-        connection = connect_db()
-        cursor = connection.cursor()
-
-        email = data["email"]
-
-        # Check if the email already exists
-        email_check_query = "SELECT COUNT(*) FROM dbo.User_table WHERE Email = ?"
-        cursor.execute(email_check_query, email)
-        count = cursor.fetchone()[0]
-
-        if count > 0:
-            return {"Error": "Email already exists"}
-
-        
-        #insert data into user table
-        insert_user_query = '''INSERT INTO dbo.User_table (Username, Email, First_Name, Last_Name, Tenure_Months, Location, Gender)
-VALUES (?, ?, ?, ?, ?, ?, ?);'''
-        cursor.execute(insert_user_query, (data["first_name"], data["email"], data["first_name"], data["last_name"], " ", data["location"], data["gender"]))
-
-
-        UserID_query = "SELECT UserID FROM dbo.User_table WHERE Email= ?"
-        cursor.execute(UserID_query, email)
-        UserID = cursor.fetchone()[0]
-
-
-        #Insert password into authentication table
-        insert_authinfo_query = '''INSERT INTO dbo.AuthInfo (PasswordHash, PasswordSalt, Iterations, TempPlainText, UserID)
-VALUES (?, ?, ?, ?, ?);'''
-        cursor.execute(insert_authinfo_query, (data["hash"], data["salt"], data["iterations"], data["password"], UserID))
-        
-
-
-        #commit changes to database if no errors
-        connection.commit()
-
-        return {"message" : "New user info added successfully"}
-    
-    except pyodbc.Error as e: #more error handling
-        print(f"Database error in new_user: {e}")
-        connection.rollback()
-        return {"Error" : "Database error"}
-    
-    except Exception as e: #more error handling
-        print(f"Unexpected error occured in new_user: {e}")
-        connection.rollback()
-        return {"Error" : "Unexpected error"}
-    
-    finally:
-        if cursor:
-            cursor.close()
-        if connection:
-            connection.close()
\ No newline at end of file
diff --git a/User_MicroService_Group3/app/models/updateProfile.py b/User_MicroService_Group3/app/models/updateProfile.py
deleted file mode 100644
index 0c70bedb121f72626f28135dc13b5d22fd962f08..0000000000000000000000000000000000000000
--- a/User_MicroService_Group3/app/models/updateProfile.py
+++ /dev/null
@@ -1,86 +0,0 @@
-#from app import db
-from flask import jsonify
-import pyodbc
-from models.database_connection import connect_db
-
-
-def fetch_user_info(id):
-
-    try: #error handling
-
-        connection = connect_db()
-        cursor = connection.cursor()
-
-        query = "SELECT * FROM dbo.User_table where UserID = ?"
-        cursor.execute(query, id)
-
-        row = cursor.fetchone() #fetch data
-
-        columns = [column[0] for column in cursor.description]
-        user_data = dict(zip(columns, row))
-
-        #connection.close()
-
-        return user_data
-    
-    except pyodbc.Error as e: #error handling
-        print(f"Database error in fetch_user_info: {e}")
-        return None
-    
-    except Exception as e: #error handling
-        print(f"Unexpected error occured in fetch_user_info: {e}")
-        return None
-    
-    finally:
-        if cursor:
-            cursor.close()
-        if connection:
-            connection.close()
-
-
-
-def update_user(data):
-
-    try: #error handling
-
-        connection = connect_db()
-        cursor = connection.cursor()
-        
-        user_id = data["user_id"]
-
-        #insert data into user table
-        update_user_query = '''UPDATE dbo.User_table
-    SET
-        Username= ?,
-        First_Name= ?,
-        Last_Name= ?,
-        Location= ?,
-        Gender= ?
-    WHERE
-        UserID= ?'''
-
-        cursor.execute(update_user_query, (data["first_name"], data["first_name"], data["last_name"], data["location"], data["gender"], user_id))
-
-
-        #commit changes to database if no errors
-        connection.commit()
-
-        return {"message" : "Profile updated successfully"}
-        
-
-
-    except pyodbc.Error as e: #more error handling
-        print(f"Database error in update_user: {e}")
-        connection.rollback()
-        return {"Error" : "Database error"}
-    
-    except Exception as e: #more error handling
-        print(f"Unexpected error occured in update_user: {e}")
-        connection.rollback()
-        return {"Error" : "Unexpected error"}
-    
-    finally:
-        if cursor:
-            cursor.close()
-        if connection:
-            connection.close()
\ No newline at end of file
diff --git a/User_MicroService_Group3/app/publishers/__init__.py b/User_MicroService_Group3/app/publishers/__init__.py
deleted file mode 100644
index beb65e5ef1e4ca89b1eb1f7148c7aa845f8a7348..0000000000000000000000000000000000000000
--- a/User_MicroService_Group3/app/publishers/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-from publishers.kafkaPublishers import create_profile_updated_topic
\ No newline at end of file
diff --git a/User_MicroService_Group3/app/publishers/__pycache__/__init__.cpython-311.pyc b/User_MicroService_Group3/app/publishers/__pycache__/__init__.cpython-311.pyc
deleted file mode 100644
index 3e5ad7960c3085c3269be00737e82ddc12a6c966..0000000000000000000000000000000000000000
Binary files a/User_MicroService_Group3/app/publishers/__pycache__/__init__.cpython-311.pyc and /dev/null differ
diff --git a/User_MicroService_Group3/app/publishers/__pycache__/kafkaPublishers.cpython-311.pyc b/User_MicroService_Group3/app/publishers/__pycache__/kafkaPublishers.cpython-311.pyc
deleted file mode 100644
index ab88574606876c33991d2d1f9cf5c27a3e73f26b..0000000000000000000000000000000000000000
Binary files a/User_MicroService_Group3/app/publishers/__pycache__/kafkaPublishers.cpython-311.pyc and /dev/null differ
diff --git a/User_MicroService_Group3/app/publishers/kafkaPublishers.py b/User_MicroService_Group3/app/publishers/kafkaPublishers.py
deleted file mode 100644
index 279b149bd37ce8f3c30a1c38c406d8eb1bf06048..0000000000000000000000000000000000000000
--- a/User_MicroService_Group3/app/publishers/kafkaPublishers.py
+++ /dev/null
@@ -1,47 +0,0 @@
-from kafka import KafkaProducer
-from kafka.admin import KafkaAdminClient, NewTopic
-
-from config import KAFKA_SERVER
-
-import json
-
-producer = KafkaProducer(bootstrap_servers=KAFKA_SERVER)
-
-
-#Creates the topic
-def create_profile_updated_topic():
-
-    admin_client = KafkaAdminClient(bootstrap_servers=KAFKA_SERVER)
-
-    # Define the topic name
-    topic_name = "profile_updated_topic"
-    num_partitions = 1
-    replication_factor = 1
-
-    #Get topics
-    topic_metadata = admin_client.list_topics()
-
-    #Check if the topic exists
-    if topic_name not in topic_metadata:
-
-        new_topic = NewTopic(name=topic_name, num_partitions=num_partitions, replication_factor=replication_factor)
-
-        admin_client.create_topics(new_topics=[new_topic], validate_only=False)
-
-
-#Function is called in updateProfileControllers.py
-#Topic message is collected from ProductMicroservice/Subsribers/updateUsernameSubscriber.py
-def publish_username_updated_event(event_data):
-
-    event_json = json.dumps(event_data)
-    #Publish the event to the Kafka topic
-    data_to_send = producer.send("profile_updated_topic", value=event_json.encode("utf-8"))
-    try:
-        record_metadata = data_to_send.get(timeout=10)
-        print("Message sent successfully!")
-        print("Topic:", record_metadata.topic)
-        print("Partition:", record_metadata.partition)
-        print("Offset:", record_metadata.offset)
-    except Exception as e:
-        print("Failed to send message:", e)
-    producer.flush()
\ No newline at end of file
diff --git a/User_MicroService_Group3/app/run.py b/User_MicroService_Group3/app/run.py
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/User_MicroService_Group3/app/templates/index.html b/User_MicroService_Group3/app/templates/index.html
deleted file mode 100644
index 6207c5207b735653b32e6ad59ac7d969cdfab4eb..0000000000000000000000000000000000000000
--- a/User_MicroService_Group3/app/templates/index.html
+++ /dev/null
@@ -1,6 +0,0 @@
-<html>
-    <head></head>
-    <body>
-        <p>HELLO</p>
-    </body>
-</html>
\ No newline at end of file
diff --git a/User_MicroService_Group3/docker-compose.yml b/User_MicroService_Group3/docker-compose.yml
deleted file mode 100644
index 8ff3f2bcf3113452668a674fa0aea07c9c7f5cb7..0000000000000000000000000000000000000000
--- a/User_MicroService_Group3/docker-compose.yml
+++ /dev/null
@@ -1,24 +0,0 @@
-version: "3.2"
-
-services:
-
-  user-microservice:
-    build: 
-      context: .
-      dockerfile: Dockerfile
-      no_cache: true
-    image: user-microservice:3.0
-    container_name: user-microservice
-    ports:
-      - "5000:5000"
-    environment:
-      #DATABASE_URL: "DRIVER={ODBC Driver 17 for SQL Server};SERVER=user-database,1433;DATABASE=User_Management;UID=sa;PWD=WebTechGroup3;"
-      KAFKA_SERVER: "kafka:9092"
-      SECRET_KEY: Group3
-    networks:
-      - kafka_network
-      
-networks:
-  kafka_network:
-    external: true
-    #driver: bridge
\ No newline at end of file
diff --git a/User_MicroService_Group3/entrypoint.sh b/User_MicroService_Group3/entrypoint.sh
deleted file mode 100644
index 268cd4a00310bd1e5a014d92a84e48a52a1cb1ad..0000000000000000000000000000000000000000
--- a/User_MicroService_Group3/entrypoint.sh
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/bin/bash
-
-# Start SQL Server in the background
-/opt/mssql/bin/sqlservr &
-
-# Wait for 5 minutes (300 seconds)
-sleep 300
-
-# Log in and restore database
-/opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P "$SA_PASSWORD" -Q "RESTORE DATABASE User_Management FROM DISK = '/var/opt/mssql/data/User_Management.bak' WITH MOVE 'User_Management.mdf' TO '/var/opt/mssql/data/User_Management.mdf', MOVE 'User_Management_log.ldf' TO '/var/opt/mssql/data/User_Management_log.ldf';"
-
-# Keep the script running indefinitely
-wait %1
diff --git a/User_MicroService_Group3/requirements.txt b/User_MicroService_Group3/requirements.txt
deleted file mode 100644
index aed8ace483f880061abeee73b97954403c1890b1..0000000000000000000000000000000000000000
--- a/User_MicroService_Group3/requirements.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-Flask==3.0.2
-Flask-Cors==4.0.0
-gunicorn==21.2.0
-kafka-python==2.0.2
-pyodbc==5.1.0
-blinker==1.7.0
-click==8.1.7
-itsdangerous==2.1.2
-Jinja2==3.1.2
-Werkzeug==3.0.1
-boto3==1.34.71
-colorama==0.4.6
-MarkupSafe==2.1.3
-requests==2.31.0
\ No newline at end of file