Index: triMatch.sln
===================================================================
--- NutriMatch.sln	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,24 +1,0 @@
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Version 17
-VisualStudioVersion = 17.5.2.0
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NutriMatch", "NutriMatch\NutriMatch.csproj", "{2AD5ADDD-AFB2-6754-172C-C7503DC16AC3}"
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|Any CPU = Debug|Any CPU
-		Release|Any CPU = Release|Any CPU
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{2AD5ADDD-AFB2-6754-172C-C7503DC16AC3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{2AD5ADDD-AFB2-6754-172C-C7503DC16AC3}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{2AD5ADDD-AFB2-6754-172C-C7503DC16AC3}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{2AD5ADDD-AFB2-6754-172C-C7503DC16AC3}.Release|Any CPU.Build.0 = Release|Any CPU
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-	GlobalSection(ExtensibilityGlobals) = postSolution
-		SolutionGuid = {67403A6B-3DD5-4CA0-908C-77953FD33CFA}
-	EndGlobalSection
-EndGlobal
Index: triMatch/.gitignore
===================================================================
--- NutriMatch/.gitignore	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,3 +1,0 @@
-bin/
-obj/
-.vscode/
Index: triMatch/Areas/Identity/Pages/Account/ExternalLogin.cshtml
===================================================================
--- NutriMatch/Areas/Identity/Pages/Account/ExternalLogin.cshtml	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,68 +1,0 @@
-@page
-@model ExternalLoginModel
-@{
-    ViewData["Title"] = "Complete Registration";
-}
-
-<style>
-    :root {
-        --bs-primary: #22c55e;
-        --bs-primary-rgb: 34, 197, 94;
-    }
-
-    .btn-primary {
-        background-color: #22c55e;
-        border-color: #22c55e;
-    }
-
-    .btn-primary:hover {
-        background-color: #16a34a;
-        border-color: #16a34a;
-    }
-
-    .form-control:focus {
-        border-color: #86efac;
-        box-shadow: 0 0 0 0.2rem rgba(34, 197, 94, 0.25);
-    }
-
-    h1 {
-        color: #22c55e;
-        font-weight: 600;
-    }
-</style>
-
-<div class="row mt-5 d-flex justify-content-center">
-    <div class="col-md-6">
-        <h1>@ViewData["Title"]</h1>
-        <h4 class="mt-4">Complete your registration with @Model.ProviderDisplayName</h4>
-        <hr />
-
-        <p class="text-muted mb-4">
-            We need a bit more information to complete your registration.
-            Your email address has been verified by @Model.ProviderDisplayName.
-        </p>
-
-        <form asp-page-handler="Confirmation" asp-route-returnUrl="@Model.ReturnUrl" method="post">
-            <div asp-validation-summary="ModelOnly" class="text-danger" role="alert"></div>
-
-            <div class="form-floating mb-3">
-                <input asp-for="Input.Email" class="form-control" placeholder="name@example.com" />
-                <label asp-for="Input.Email">Email</label>
-                <span asp-validation-for="Input.Email" class="text-danger"></span>
-            </div>
-
-            <div class="form-floating mb-3">
-                <input asp-for="Input.Username" class="form-control" placeholder="username" />
-                <label asp-for="Input.Username">Username</label>
-                <span asp-validation-for="Input.Username" class="text-danger"></span>
-                <small class="form-text text-muted">Choose a unique username for your account.</small>
-            </div>
-
-            <button type="submit" class="w-100 btn btn-lg btn-primary">Complete Registration</button>
-        </form>
-    </div>
-</div>
-
-@section Scripts {
-    <partial name="_ValidationScriptsPartial" />
-}
Index: triMatch/Areas/Identity/Pages/Account/ExternalLogin.cshtml.cs
===================================================================
--- NutriMatch/Areas/Identity/Pages/Account/ExternalLogin.cshtml.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,292 +1,0 @@
-#nullable disable
-using System.ComponentModel.DataAnnotations;
-using System.Security.Claims;
-using System.Text;
-using System.Text.Encodings.Web;
-using Microsoft.AspNetCore.Authorization;
-using Microsoft.AspNetCore.Identity;
-using Microsoft.AspNetCore.Identity.UI.Services;
-using Microsoft.AspNetCore.Mvc;
-using Microsoft.AspNetCore.Mvc.RazorPages;
-using Microsoft.AspNetCore.WebUtilities;
-using NutriMatch.Models;
-
-namespace NutriMatch.Areas.Identity.Pages.Account
-{
-    [AllowAnonymous]
-    public class ExternalLoginModel : PageModel
-    {
-        private readonly SignInManager<User> _signInManager;
-        private readonly UserManager<User> _userManager;
-        private readonly IUserStore<User> _userStore;
-        private readonly IUserEmailStore<User> _emailStore;
-        private readonly IEmailSender _emailSender;
-        private readonly ILogger<ExternalLoginModel> _logger;
-
-        public ExternalLoginModel(
-            SignInManager<User> signInManager,
-            UserManager<User> userManager,
-            IUserStore<User> userStore,
-            IEmailSender emailSender,
-            ILogger<ExternalLoginModel> logger)
-        {
-            _signInManager = signInManager;
-            _userManager = userManager;
-            _userStore = userStore;
-            _emailStore = GetEmailStore();
-            _emailSender = emailSender;
-            _logger = logger;
-        }
-
-        [BindProperty]
-        public InputModel Input { get; set; }
-
-        public string ProviderDisplayName { get; set; }
-        public string ReturnUrl { get; set; }
-
-        [TempData]
-        public string ErrorMessage { get; set; }
-
-        public class InputModel
-        {
-            [Required]
-            [EmailAddress]
-            public string Email { get; set; }
-
-            [Required]
-            [StringLength(50, ErrorMessage = "The {0} must be at most {1} characters long.")]
-            [Display(Name = "Username")]
-            public string Username { get; set; }
-        }
-
-        public IActionResult OnGet() => RedirectToPage("./Login");
-
-        public IActionResult OnPost(string provider, string returnUrl = null)
-        {
-            var redirectUrl = Url.Page("./ExternalLogin", pageHandler: "Callback", values: new { returnUrl });
-            var properties = _signInManager.ConfigureExternalAuthenticationProperties(provider, redirectUrl);
-            return new ChallengeResult(provider, properties);
-        }
-
-        public async Task<IActionResult> OnGetCallbackAsync(string returnUrl = null, string remoteError = null)
-        {
-            returnUrl = returnUrl ?? Url.Content("~/");
-
-            if (remoteError != null)
-            {
-                ErrorMessage = $"Error from external provider: {remoteError}";
-                return RedirectToPage("./Login", new { ReturnUrl = returnUrl });
-            }
-
-            var info = await _signInManager.GetExternalLoginInfoAsync();
-            if (info == null)
-            {
-                ErrorMessage = "Error loading external login information.";
-                return RedirectToPage("./Login", new { ReturnUrl = returnUrl });
-            }
-
-            var result = await _signInManager.ExternalLoginSignInAsync(info.LoginProvider, info.ProviderKey, isPersistent: false, bypassTwoFactor: true);
-
-            if (result.Succeeded)
-            {
-                var user = await _userManager.FindByLoginAsync(info.LoginProvider, info.ProviderKey);
-                var currentEmail = info.Principal.FindFirstValue(ClaimTypes.Email);
-
-                if (!string.IsNullOrEmpty(currentEmail) && user.Email != currentEmail)
-                {
-                    _logger.LogInformation($"OAuth email changed from {user.Email} to {currentEmail}");
-                    user.Email = currentEmail;
-                    user.NormalizedEmail = currentEmail.ToUpper();
-                    user.EmailConfirmed = true;
-                    await _userManager.UpdateAsync(user);
-                }
-
-                _logger.LogInformation("{Name} logged in with {LoginProvider} provider.", info.Principal.Identity.Name, info.LoginProvider);
-                return LocalRedirect(returnUrl);
-            }
-
-            if (result.IsLockedOut)
-            {
-                return RedirectToPage("./Lockout");
-            }
-
-            var email = info.Principal.FindFirstValue(ClaimTypes.Email);
-
-            if (string.IsNullOrEmpty(email))
-            {
-                ProviderDisplayName = info.ProviderDisplayName;
-                ReturnUrl = returnUrl;
-                return Page();
-            }
-
-            var existingUser = await _userManager.FindByEmailAsync(email);
-
-            if (existingUser != null)
-            {
-
-                var hasPassword = await _userManager.HasPasswordAsync(existingUser);
-                var addLoginResult = await _userManager.AddLoginAsync(existingUser, info);
-                if (addLoginResult.Succeeded)
-                {
-                    await _signInManager.SignInAsync(existingUser, isPersistent: false);
-                    return LocalRedirect(returnUrl);
-                }
-
-
-                var existingLogins = await _userManager.GetLoginsAsync(existingUser);
-                var alreadyLinked = existingLogins.Any(l =>
-                    l.LoginProvider == info.LoginProvider &&
-                    l.ProviderKey == info.ProviderKey);
-
-                if (!alreadyLinked)
-                {
-                    _logger.LogInformation($"Linking {info.ProviderDisplayName} to existing account with email {email}");
-                    var addLoginRes = await _userManager.AddLoginAsync(existingUser, info);
-
-                    if (addLoginRes.Succeeded)
-                    {
-                        await _signInManager.SignInAsync(existingUser, isPersistent: false);
-                        return LocalRedirect(returnUrl);
-                    }
-
-                    foreach (var error in addLoginRes.Errors)
-                    {
-                        ModelState.AddModelError(string.Empty, error.Description);
-                    }
-                }
-            }
-            else
-            {
-                var username = email.Split('@')[0];
-                var uniqueUsername = username;
-                var counter = 1;
-
-                while (await _userManager.FindByNameAsync(uniqueUsername) != null)
-                {
-                    uniqueUsername = $"{username}{counter}";
-                    counter++;
-                }
-
-                var user = CreateUser();
-                user.ProfilePictureUrl = "/images/DefaultProfile.png";
-                user.EmailConfirmed = true;
-
-                await _userStore.SetUserNameAsync(user, uniqueUsername, CancellationToken.None);
-                await _emailStore.SetEmailAsync(user, email, CancellationToken.None);
-
-                var createResult = await _userManager.CreateAsync(user);
-
-                if (createResult.Succeeded)
-                {
-                    createResult = await _userManager.AddLoginAsync(user, info);
-
-                    if (createResult.Succeeded)
-                    {
-                        _logger.LogInformation("User created an account using {Name} provider.", info.LoginProvider);
-                        await _signInManager.SignInAsync(user, isPersistent: false, info.LoginProvider);
-                        return LocalRedirect(returnUrl);
-                    }
-                }
-
-                foreach (var error in createResult.Errors)
-                {
-                    ModelState.AddModelError(string.Empty, error.Description);
-                }
-            }
-
-            ProviderDisplayName = info.ProviderDisplayName;
-            ReturnUrl = returnUrl;
-            if (!string.IsNullOrEmpty(email))
-            {
-                Input = new InputModel
-                {
-                    Email = email,
-                    Username = email.Split('@')[0]
-                };
-            }
-            return Page();
-        }
-
-        public async Task<IActionResult> OnPostConfirmationAsync(string returnUrl = null)
-        {
-            returnUrl = returnUrl ?? Url.Content("~/");
-
-            var info = await _signInManager.GetExternalLoginInfoAsync();
-            if (info == null)
-            {
-                ErrorMessage = "Error loading external login information during confirmation.";
-                return RedirectToPage("./Login", new { ReturnUrl = returnUrl });
-            }
-
-            if (ModelState.IsValid)
-            {
-                var existingUserByEmail = await _userManager.FindByEmailAsync(Input.Email);
-                if (existingUserByEmail != null)
-                {
-                    ModelState.AddModelError(string.Empty, $"An account with {Input.Email} already exists. Please use a different email or login with your existing account.");
-                    ProviderDisplayName = info.ProviderDisplayName;
-                    ReturnUrl = returnUrl;
-                    return Page();
-                }
-
-                var existingUserByUsername = await _userManager.FindByNameAsync(Input.Username);
-                if (existingUserByUsername != null)
-                {
-                    ModelState.AddModelError(nameof(Input.Username), "This username is already taken. Please choose another.");
-                    ProviderDisplayName = info.ProviderDisplayName;
-                    ReturnUrl = returnUrl;
-                    return Page();
-                }
-
-                var user = CreateUser();
-                user.ProfilePictureUrl = "/images/DefaultProfile.png";
-                user.EmailConfirmed = true;
-
-                await _userStore.SetUserNameAsync(user, Input.Username, CancellationToken.None);
-                await _emailStore.SetEmailAsync(user, Input.Email, CancellationToken.None);
-
-                var result = await _userManager.CreateAsync(user);
-                if (result.Succeeded)
-                {
-                    result = await _userManager.AddLoginAsync(user, info);
-                    if (result.Succeeded)
-                    {
-                        _logger.LogInformation("User created an account using {Name} provider.", info.LoginProvider);
-                        await _signInManager.SignInAsync(user, isPersistent: false, info.LoginProvider);
-                        return LocalRedirect(returnUrl);
-                    }
-                }
-
-                foreach (var error in result.Errors)
-                {
-                    ModelState.AddModelError(string.Empty, error.Description);
-                }
-            }
-
-            ProviderDisplayName = info.ProviderDisplayName;
-            ReturnUrl = returnUrl;
-            return Page();
-        }
-
-        private User CreateUser()
-        {
-            try
-            {
-                return Activator.CreateInstance<User>();
-            }
-            catch
-            {
-                throw new InvalidOperationException($"Can't create an instance of '{nameof(User)}'.");
-            }
-        }
-
-        private IUserEmailStore<User> GetEmailStore()
-        {
-            if (!_userManager.SupportsUserEmail)
-            {
-                throw new NotSupportedException("The default UI requires a user store with email support.");
-            }
-            return (IUserEmailStore<User>)_userStore;
-        }
-    }
-}
Index: triMatch/Areas/Identity/Pages/Account/Login.cshtml
===================================================================
--- NutriMatch/Areas/Identity/Pages/Account/Login.cshtml	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,241 +1,0 @@
-﻿@page
-@model LoginModel
-@{
-    ViewData["Title"] = "Log in";
-}
-<style>
-    :root {
-        --bs-primary: #22c55e;
-        --bs-primary-rgb: 34, 197, 94;
-    }
-
-    .btn-primary {
-        background-color: #22c55e;
-        border-color: #22c55e;
-    }
-
-    .btn-primary:hover {
-        background-color: #16a34a;
-        border-color: #16a34a;
-    }
-
-    .btn-primary:focus,
-    .btn-primary.focus {
-        box-shadow: 0 0 0 0.2rem rgba(34, 197, 94, 0.5);
-    }
-
-    .btn-primary:active,
-    .btn-primary.active {
-        background-color: #15803d !important;
-        border-color: #15803d !important;
-    }
-
-    .btn-outline-primary {
-        color: #22c55e;
-        border-color: #22c55e;
-    }
-
-    .btn-outline-primary:hover {
-        background-color: #22c55e;
-        border-color: #22c55e;
-        color: white;
-    }
-
-    .btn-outline-primary:focus,
-    .btn-outline-primary.focus {
-        box-shadow: 0 0 0 0.2rem rgba(34, 197, 94, 0.5);
-    }
-
-    .btn-outline-primary:active,
-    .btn-outline-primary.active {
-        background-color: #15803d !important;
-        border-color: #15803d !important;
-        color: white !important;
-    }
-
-    .form-control:focus {
-        border-color: #86efac;
-        box-shadow: 0 0 0 0.2rem rgba(34, 197, 94, 0.25);
-    }
-
-    h1 {
-        color: #22c55e;
-        font-weight: 600;
-    }
-
-    .register-section {
-        background-color: #f0fdf4;
-        border-radius: 8px;
-        padding: 30px;
-        text-align: center;
-        display: flex;
-        flex-direction: column;
-        justify-content: center;
-    }
-
-    .register-section h3 {
-        color: #16a34a;
-        margin-bottom: 20px;
-    }
-
-    a {
-        color: #22c55e;
-    }
-
-    a:hover {
-        color: #16a34a;
-    }
-
-    #account {
-        margin-top: 5rem;
-    }
-
-    .btn-google {
-        background-color: #fff;
-        border: 1px solid #dadce0;
-        color: #3c4043;
-        font-weight: 500;
-    }
-
-    .btn-google:hover {
-        background-color: #f8f9fa;
-        border-color: #dadce0;
-        color: #3c4043;
-    }
-
-    .btn-facebook {
-        background-color: #1877f2;
-        border: 1px solid #1877f2;
-        color: white;
-        font-weight: 500;
-    }
-
-    .btn-facebook:hover {
-        background-color: #166fe5;
-        border-color: #166fe5;
-        color: white;
-    }
-
-    .oauth-buttons {
-        margin-bottom: 1.5rem;
-    }
-
-    .oauth-divider {
-        display: flex;
-        align-items: center;
-        text-align: center;
-        margin: 1.5rem 0;
-    }
-
-    .oauth-divider::before,
-    .oauth-divider::after {
-        content: '';
-        flex: 1;
-        border-bottom: 1px solid #dee2e6;
-    }
-
-    .oauth-divider span {
-        padding: 0 1rem;
-        color: #6c757d;
-        font-size: 0.875rem;
-    }
-
-    section {
-        padding-top: 50px;
-    }
-</style>
-<div class="row mt-5 d-flex justify-content-center">
-    <div class="col-md-4">
-        <section>
-            <h2>Log in to your account.</h2>
-            <hr />
-
-            @if (Model.ExternalLogins?.Count > 0)
-            {
-                <div class="oauth-buttons">
-                    @foreach (var provider in Model.ExternalLogins)
-                    {
-                        if (provider.Name == "Google")
-                        {
-                            <form asp-page="./ExternalLogin" asp-route-returnUrl="@Model.ReturnUrl" method="post">
-                                <button type="submit" class="btn btn-google w-100 mb-2" name="provider" value="@provider.Name"
-                                    title="Log in using your @provider.DisplayName account">
-                                    <svg width="18" height="18" viewBox="0 0 18 18"
-                                        style="vertical-align: middle; margin-right: 8px;">
-                                        <path fill="#4285F4"
-                                            d="M17.64 9.2c0-.637-.057-1.251-.164-1.84H9v3.481h4.844c-.209 1.125-.843 2.078-1.796 2.717v2.258h2.908c1.702-1.567 2.684-3.874 2.684-6.615z">
-                                        </path>
-                                        <path fill="#34A853"
-                                            d="M9.003 18c2.43 0 4.467-.806 5.956-2.184l-2.908-2.258c-.806.54-1.837.86-3.048.86-2.344 0-4.328-1.584-5.036-3.711H.96v2.332C2.44 15.983 5.485 18 9.003 18z">
-                                        </path>
-                                        <path fill="#FBBC05"
-                                            d="M3.964 10.712c-.18-.54-.282-1.117-.282-1.71 0-.593.102-1.17.282-1.71V4.96H.957C.347 6.175 0 7.55 0 9.002c0 1.452.348 2.827.957 4.042l3.007-2.332z">
-                                        </path>
-                                        <path fill="#EA4335"
-                                            d="M9.003 3.58c1.321 0 2.508.454 3.44 1.345l2.582-2.58C13.464.891 11.428 0 9.002 0 5.485 0 2.44 2.017.96 4.958L3.967 7.29c.708-2.127 2.692-3.71 5.036-3.71z">
-                                        </path>
-                                    </svg>
-                                    Continue with Google
-                                </button>
-                            </form>
-                        }
-                        else if (provider.Name == "Facebook")
-                        {
-                            <form asp-page="./ExternalLogin" asp-route-returnUrl="@Model.ReturnUrl" method="post">
-                                <button type="submit" class="btn btn-facebook w-100 mb-2" name="provider" value="@provider.Name"
-                                    title="Log in using your @provider.DisplayName account">
-                                    <svg width="18" height="18" viewBox="0 0 24 24" fill="white"
-                                        style="vertical-align: middle; margin-right: 8px;">
-                                        <path
-                                            d="M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.47h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.47h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z" />
-                                    </svg>
-                                    Continue with Facebook
-                                </button>
-                            </form>
-                        }
-                    }
-                </div>
-
-                <div class="oauth-divider">
-                    <span>OR</span>
-                </div>
-            }
-
-            <form id="account" method="post">
-                <div asp-validation-summary="ModelOnly" class="text-danger" role="alert"></div>
-
-                <div class="form-floating mb-3">
-                    <input asp-for="Input.Username" class="form-control" autocomplete="username" aria-required="true"
-                        placeholder="name@example.com" />
-                    <label asp-for="Input.Username" class="form-label">Username</label>
-                    <span asp-validation-for="Input.Username" class="text-danger"></span>
-                </div>
-                <div class="form-floating mb-3">
-                    <input asp-for="Input.Password" class="form-control" autocomplete="current-password"
-                        aria-required="true" placeholder="password" />
-                    <label asp-for="Input.Password" class="form-label">Password</label>
-                    <span asp-validation-for="Input.Password" class="text-danger"></span>
-                </div>
-                <div>
-                    <button id="login-submit" type="submit" class="w-100 btn btn-lg btn-primary">Log in</button>
-                </div>
-                <div>
-                    <p>
-                        <a id="forgot-password" asp-page="./ForgotPassword">Forgot your password?</a>
-                    </p>
-                </div>
-            </form>
-        </section>
-    </div>
-    <div class="d-flex align-items-center col-md-6 col-md-offset-2">
-        <section class="register-section">
-            <h3>New here?</h3>
-            <p class="mb-3">Create an account to get started with all our features.</p>
-            <a asp-page="./Register" asp-route-returnUrl="@Model.ReturnUrl"
-                class="btn btn-outline-primary btn-lg">Create Account</a>
-        </section>
-    </div>
-</div>
-@section Scripts {
-    <partial name="_ValidationScriptsPartial" />
-}
Index: triMatch/Areas/Identity/Pages/Account/Login.cshtml.cs
===================================================================
--- NutriMatch/Areas/Identity/Pages/Account/Login.cshtml.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,68 +1,0 @@
-
-#nullable disable
-using System.ComponentModel.DataAnnotations;
-using Microsoft.AspNetCore.Authentication;
-using Microsoft.AspNetCore.Identity;
-using Microsoft.AspNetCore.Mvc;
-using Microsoft.AspNetCore.Mvc.RazorPages;
-using NutriMatch.Models;
-namespace NutriMatch.Areas.Identity.Pages.Account
-{
-    public class LoginModel : PageModel
-    {
-        private readonly SignInManager<User> _signInManager;
-        private readonly ILogger<LoginModel> _logger;
-        public LoginModel(SignInManager<User> signInManager, ILogger<LoginModel> logger)
-        {
-            _signInManager = signInManager;
-            _logger = logger;
-        }
-        [BindProperty]
-        public InputModel Input { get; set; }
-        public IList<AuthenticationScheme> ExternalLogins { get; set; }
-        public string ReturnUrl { get; set; }
-        [TempData]
-        public string ErrorMessage { get; set; }
-        public class InputModel
-        {
-            [Required]
-            public string Username { get; set; }
-            [Required]
-            [DataType(DataType.Password)]
-            public string Password { get; set; }
-            [Display(Name = "Remember me?")]
-            public bool RememberMe { get; set; }
-        }
-        public async Task OnGetAsync(string returnUrl = null)
-        {
-            if (!string.IsNullOrEmpty(ErrorMessage))
-            {
-                ModelState.AddModelError(string.Empty, ErrorMessage);
-            }
-            returnUrl ??= Url.Content("~/");
-            await HttpContext.SignOutAsync(IdentityConstants.ExternalScheme);
-            ExternalLogins = (await _signInManager.GetExternalAuthenticationSchemesAsync()).ToList();
-            ReturnUrl = returnUrl;
-        }
-        public async Task<IActionResult> OnPostAsync(string returnUrl = null)
-        {
-            returnUrl ??= Url.Content("~/");
-            ExternalLogins = (await _signInManager.GetExternalAuthenticationSchemesAsync()).ToList();
-            if (ModelState.IsValid)
-            {
-                var result = await _signInManager.PasswordSignInAsync(Input.Username, Input.Password, Input.RememberMe, lockoutOnFailure: false);
-                if (result.Succeeded)
-                {
-                    _logger.LogInformation("User logged in.");
-                    return LocalRedirect(returnUrl);
-                }
-                else
-                {
-                    ModelState.AddModelError(string.Empty, "Invalid login attempt.");
-                    return Page();
-                }
-            }
-            return Page();
-        }
-    }
-}
Index: triMatch/Areas/Identity/Pages/Account/Logout.cshtml
===================================================================
--- NutriMatch/Areas/Identity/Pages/Account/Logout.cshtml	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,27 +1,0 @@
-﻿@page
-@model LogoutModel
-@{
-    ViewData["Title"] = "Log out";
-}
-
-<style>
-    #logout-section {
-        margin-top: 10rem;
-    }
-</style>
-
-<header>
-    <h1>@ViewData["Title"]</h1>
-    @{
-        if (User.Identity?.IsAuthenticated ?? false)
-        {
-            <form id="logout-section" class="form-inline" asp-area="Identity" asp-page="/Account/Logout" asp-route-returnUrl="@Url.Page("/", new { area = "" })" method="post">
-                <button type="submit" class="nav-link btn btn-link text-dark">Click here to Logout</button>
-            </form>
-        }
-        else
-        {
-            <p>You have successfully logged out of the application.</p>
-        }
-    }
-</header>
Index: triMatch/Areas/Identity/Pages/Account/Logout.cshtml.cs
===================================================================
--- NutriMatch/Areas/Identity/Pages/Account/Logout.cshtml.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,32 +1,0 @@
-
-#nullable disable
-using Microsoft.AspNetCore.Identity;
-using Microsoft.AspNetCore.Mvc;
-using Microsoft.AspNetCore.Mvc.RazorPages;
-using NutriMatch.Models;
-namespace NutriMatch.Areas.Identity.Pages.Account
-{
-    public class LogoutModel : PageModel
-    {
-        private readonly SignInManager<User> _signInManager;
-        private readonly ILogger<LogoutModel> _logger;
-        public LogoutModel(SignInManager<User> signInManager, ILogger<LogoutModel> logger)
-        {
-            _signInManager = signInManager;
-            _logger = logger;
-        }
-        public async Task<IActionResult> OnPost(string returnUrl = null)
-        {
-            await _signInManager.SignOutAsync();
-            _logger.LogInformation("User logged out.");
-            if (returnUrl != null)
-            {
-                return LocalRedirect(returnUrl);
-            }
-            else
-            {
-                return RedirectToPage();
-            }
-        }
-    }
-}
Index: triMatch/Areas/Identity/Pages/Account/Manage/Index.cshtml
===================================================================
--- NutriMatch/Areas/Identity/Pages/Account/Manage/Index.cshtml	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,30 +1,0 @@
-﻿@page
-@model IndexModel
-@{
-    ViewData["Title"] = "Profile";
-    ViewData["ActivePage"] = ManageNavPages.Index;
-}
-
-<h3>@ViewData["Title"]</h3>
-<partial name="_StatusMessage" for="StatusMessage" />
-<div class="row">
-    <div class="col-md-6">
-        <form id="profile-form" method="post">
-            <div asp-validation-summary="ModelOnly" class="text-danger" role="alert"></div>
-            <div class="form-floating mb-3">
-                <input asp-for="Username" class="form-control" placeholder="Please choose your username." disabled />
-                <label asp-for="Username" class="form-label"></label>
-            </div>
-            <div class="form-floating mb-3">
-                <input asp-for="Input.PhoneNumber" class="form-control" placeholder="Please enter your phone number."/>
-                <label asp-for="Input.PhoneNumber" class="form-label"></label>
-                <span asp-validation-for="Input.PhoneNumber" class="text-danger"></span>
-            </div>
-            <button id="update-profile-button" type="submit" class="w-100 btn btn-lg btn-primary">Save</button>
-        </form>
-    </div>
-</div>
-
-@section Scripts {
-    <partial name="_ValidationScriptsPartial" />
-}
Index: triMatch/Areas/Identity/Pages/Account/Manage/Index.cshtml.cs
===================================================================
--- NutriMatch/Areas/Identity/Pages/Account/Manage/Index.cshtml.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,80 +1,0 @@
-
-#nullable disable
-using System;
-using System.ComponentModel.DataAnnotations;
-using Microsoft.AspNetCore.Identity;
-using Microsoft.AspNetCore.Mvc;
-using Microsoft.AspNetCore.Mvc.RazorPages;
-using NutriMatch.Models;
-namespace NutriMatch.Areas.Identity.Pages.Account.Manage
-{
-    public class IndexModel : PageModel
-    {
-        private readonly UserManager<User> _userManager;
-        private readonly SignInManager<User> _signInManager;
-        public IndexModel(
-            UserManager<User> userManager,
-            SignInManager<User> signInManager)
-        {
-            _userManager = userManager;
-            _signInManager = signInManager;
-        }
-        public string Username { get; set; }
-        [TempData]
-        public string StatusMessage { get; set; }
-        [BindProperty]
-        public InputModel Input { get; set; }
-        public class InputModel
-        {
-            [Phone]
-            [Display(Name = "Phone number")]
-            public string PhoneNumber { get; set; }
-        }
-        private async Task LoadAsync(User user)
-        {
-            var userName = await _userManager.GetUserNameAsync(user);
-            var phoneNumber = await _userManager.GetPhoneNumberAsync(user);
-            Username = userName;
-            Input = new InputModel
-            {
-                PhoneNumber = phoneNumber
-            };
-        }
-        public async Task<IActionResult> OnGetAsync()
-        {
-            var user = await _userManager.GetUserAsync(User);
-            if (user == null)
-            {
-                return NotFound($"Unable to load user with ID '{_userManager.GetUserId(User)}'.");
-            }
-            await LoadAsync(user);
-            return Page();
-        }
-        public async Task<IActionResult> OnPostAsync()
-        {
-            var user = await _userManager.GetUserAsync(User);
-            if (user == null)
-            {
-                return NotFound($"Unable to load user with ID '{_userManager.GetUserId(User)}'.");
-            }
-            if (!ModelState.IsValid)
-            {
-                await LoadAsync(user);
-                return Page();
-            }
-            var phoneNumber = await _userManager.GetPhoneNumberAsync(user);
-            if (Input.PhoneNumber != phoneNumber)
-            {
-                var setPhoneResult = await _userManager.SetPhoneNumberAsync(user, Input.PhoneNumber);
-                if (!setPhoneResult.Succeeded)
-                {
-                    StatusMessage = "Unexpected error when trying to set phone number.";
-                    return RedirectToPage();
-                }
-            }
-            await _signInManager.RefreshSignInAsync(user);
-            StatusMessage = "Your profile has been updated";
-            return RedirectToPage();
-        }
-    }
-}
Index: triMatch/Areas/Identity/Pages/Account/Manage/ManageNavPages.cs
===================================================================
--- NutriMatch/Areas/Identity/Pages/Account/Manage/ManageNavPages.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,32 +1,0 @@
-
-#nullable disable
-using System;
-using Microsoft.AspNetCore.Mvc.Rendering;
-namespace  NutriMatch.Areas.Identity.Pages.Account.Manage
-{
-    public static class ManageNavPages
-    {
-        public static string Index => "Index";
-        public static string Email => "Email";
-        public static string ChangePassword => "ChangePassword";
-        public static string DownloadPersonalData => "DownloadPersonalData";
-        public static string DeletePersonalData => "DeletePersonalData";
-        public static string ExternalLogins => "ExternalLogins";
-        public static string PersonalData => "PersonalData";
-        public static string TwoFactorAuthentication => "TwoFactorAuthentication";
-        public static string IndexNavClass(ViewContext viewContext) => PageNavClass(viewContext, Index);
-        public static string EmailNavClass(ViewContext viewContext) => PageNavClass(viewContext, Email);
-        public static string ChangePasswordNavClass(ViewContext viewContext) => PageNavClass(viewContext, ChangePassword);
-        public static string DownloadPersonalDataNavClass(ViewContext viewContext) => PageNavClass(viewContext, DownloadPersonalData);
-        public static string DeletePersonalDataNavClass(ViewContext viewContext) => PageNavClass(viewContext, DeletePersonalData);
-        public static string ExternalLoginsNavClass(ViewContext viewContext) => PageNavClass(viewContext, ExternalLogins);
-        public static string PersonalDataNavClass(ViewContext viewContext) => PageNavClass(viewContext, PersonalData);
-        public static string TwoFactorAuthenticationNavClass(ViewContext viewContext) => PageNavClass(viewContext, TwoFactorAuthentication);
-        public static string PageNavClass(ViewContext viewContext, string page)
-        {
-            var activePage = viewContext.ViewData["ActivePage"] as string
-                ?? System.IO.Path.GetFileNameWithoutExtension(viewContext.ActionDescriptor.DisplayName);
-            return string.Equals(activePage, page, StringComparison.OrdinalIgnoreCase) ? "active" : null;
-        }
-    }
-}
Index: triMatch/Areas/Identity/Pages/Account/Manage/_ManageNav.cshtml
===================================================================
--- NutriMatch/Areas/Identity/Pages/Account/Manage/_ManageNav.cshtml	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,16 +1,0 @@
-@using NutriMatch.Models;
-@inject SignInManager<User> SignInManager
-@{
-    var hasExternalLogins = (await SignInManager.GetExternalAuthenticationSchemesAsync()).Any();
-}
-<ul class="nav nav-pills flex-column">
-    <li class="nav-item"><a class="nav-link @ManageNavPages.IndexNavClass(ViewContext)" id="profile" asp-page="./Index">Profile</a></li>
-    <li class="nav-item"><a class="nav-link @ManageNavPages.EmailNavClass(ViewContext)" id="email" asp-page="./Email">Email</a></li>
-    <li class="nav-item"><a class="nav-link @ManageNavPages.ChangePasswordNavClass(ViewContext)" id="change-password" asp-page="./ChangePassword">Password</a></li>
-    @if (hasExternalLogins)
-    {
-        <li id="external-logins" class="nav-item"><a id="external-login" class="nav-link @ManageNavPages.ExternalLoginsNavClass(ViewContext)" asp-page="./ExternalLogins">External logins</a></li>
-    }
-    <li class="nav-item"><a class="nav-link @ManageNavPages.TwoFactorAuthenticationNavClass(ViewContext)" id="two-factor" asp-page="./TwoFactorAuthentication">Two-factor authentication</a></li>
-    <li class="nav-item"><a class="nav-link @ManageNavPages.PersonalDataNavClass(ViewContext)" id="personal-data" asp-page="./PersonalData">Personal data</a></li>
-</ul>
Index: triMatch/Areas/Identity/Pages/Account/Manage/_ViewImports.cshtml
===================================================================
--- NutriMatch/Areas/Identity/Pages/Account/Manage/_ViewImports.cshtml	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,1 +1,0 @@
-@using NutriMatch.Areas.Identity.Pages.Account.Manage
Index: triMatch/Areas/Identity/Pages/Account/MyAccount.cshtml
===================================================================
--- NutriMatch/Areas/Identity/Pages/Account/MyAccount.cshtml	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,677 +1,0 @@
-@page
-@model AccountModel
-@{
-    ViewData["Title"] = "Account";
-}
-<style>
-    :root {
-        --bs-primary: #22c55e;
-        --bs-primary-rgb: 34, 197, 94;
-    }
-    .btn-primary {
-        background-color: #22c55e;
-        border-color: #22c55e;
-    }
-    .btn-primary:hover {
-        background-color: #16a34a;
-        border-color: #16a34a;
-    }
-    .btn-primary:focus, .btn-primary.focus {
-        box-shadow: 0 0 0 0.2rem rgba(34, 197, 94, 0.5);
-    }
-    .btn-primary:active, .btn-primary.active {
-        background-color: #15803d !important;
-        border-color: #15803d !important;
-    }
-    .form-control:focus {
-        border-color: #86efac;
-        box-shadow: 0 0 0 0.2rem rgba(34, 197, 94, 0.25);
-    }
-    h1, h2, h3 {
-        color: #22c55e;
-        font-weight: 600;
-    }
-    .account-section {
-        background-color: #f0fdf4;
-        border-radius: 8px;
-        padding: 30px;
-        margin-bottom: 30px;
-        border: 1px solid #bbf7d0;
-    }
-    .account-section h3 {
-        color: #16a34a;
-        margin-bottom: 20px;
-        border-bottom: 2px solid #22c55e;
-        padding-bottom: 10px;
-    }
-    .alert-success {
-        background-color: #dcfce7;
-        border-color: #bbf7d0;
-        color: #166534;
-    }
-    .alert-info {
-        background-color: #e0f2fe;
-        border-color: #bae6fd;
-        color: #075985;
-    }
-    .profile-picture-section {
-        text-align: center;
-        margin-bottom: 30px;
-    }
-    .profile-picture {
-        width: 120px;
-        height: 120px;
-        border-radius: 50%;
-        object-fit: cover;
-        border: 4px solid #22c55e;
-        box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
-    }
-    .profile-picture-upload {
-        margin-top: 15px;
-    }
-    .nav-pills .nav-link.text-danger:hover {
-        background-color: rgba(239, 68, 68, 0.1);
-        color: #dc2626 !important;
-    }
-    .nav-pills .nav-link {
-        color: #22c55e;
-        margin-bottom: 5px;
-    }
-    .nav-pills .nav-link:hover {
-        background-color: rgba(34, 197, 94, 0.1);
-        color: #16a34a;
-    }
-    .nav-pills .nav-link.active {
-        background-color: #22c55e;
-        color: white;
-    }
-    #whole-container {
-        margin-top: 8rem;
-    }
-    
-    .notification-preference-item {
-        display: flex;
-        align-items: center;
-        justify-content: space-between;
-        padding: 15px;
-        background-color: white;
-        border-radius: 8px;
-        margin-bottom: 12px;
-        border: 1px solid #d1fae5;
-        transition: all 0.3s ease;
-    }
-    
-    .notification-preference-item:hover {
-        box-shadow: 0 2px 8px rgba(34, 197, 94, 0.1);
-        border-color: #86efac;
-    }
-    
-    .notification-preference-info {
-        display: flex;
-        align-items: center;
-        gap: 15px;
-    }
-    
-    .notification-icon-circle {
-        min-width: 40px;
-        width: 40px;
-        height: 40px;
-        border-radius: 50%;
-        display: flex;
-        align-items: center;
-        justify-content: center;
-        font-size: 18px;
-        flex-shrink: 0;
-    }
-    
-    .notification-icon-circle.recipe-rated {
-        background-color: #fff3cd;
-        color: #ffc107;
-    }
-    
-    .notification-icon-circle.recipe-accepted {
-        background-color: #d1f2eb;
-        color: #4caf50;
-    }
-    
-    .notification-icon-circle.recipe-declined {
-        background-color: #f8d7da;
-        color: #f44336;
-    }
-    
-    .notification-icon-circle.restaurant-meal {
-        background-color: #ffe5e5;
-        color: #ff6b6b;
-    }
-    
-    .notification-icon-circle.tags-match {
-        background-color: #d5f4f1;
-        color: #4ecdc4;
-    }
-    
-    .notification-icon-circle.new-restaurant {
-        background-color: #cfe2ff;
-        color: #007bff;
-    }
-    
-    .notification-icon-circle.meal-plan {
-        background-color: #e1d5f0;
-        color: #9c27b0;
-    }
-    
-    .notification-text {
-        flex: 1;
-    }
-    
-    .notification-title {
-        font-weight: 600;
-        color: #166534;
-        margin-bottom: 3px;
-    }
-    
-    .notification-description {
-        font-size: 0.875rem;
-        color: #6b7280;
-    }
-    
-    .custom-switch {
-        position: relative;
-        display: inline-block;
-        width: 50px;
-        height: 26px;
-        flex-shrink: 0;
-    }
-    
-    .custom-switch input {
-        opacity: 0;
-        width: 0;
-        height: 0;
-    }
-    
-    .slider {
-        position: absolute;
-        cursor: pointer;
-        top: 0;
-        left: 0;
-        right: 0;
-        bottom: 0;
-        background-color: #cbd5e0;
-        transition: 0.3s;
-        border-radius: 34px;
-    }
-    
-    .slider:before {
-        position: absolute;
-        content: "";
-        height: 20px;
-        width: 20px;
-        left: 3px;
-        bottom: 3px;
-        background-color: white;
-        transition: 0.3s;
-        border-radius: 50%;
-    }
-    
-    input:checked + .slider {
-        background-color: #22c55e;
-    }
-    
-    input:checked + .slider:before {
-        transform: translateX(24px);
-    }
-    
-    .notification-section-header {
-        background: linear-gradient(135deg, #22c55e 0%, #16a34a 100%);
-        color: white;
-        padding: 15px 20px;
-        border-radius: 8px;
-        margin-bottom: 20px;
-    }
-    
-    .notification-section-header h3 {
-        color: white;
-        margin: 0;
-        border: none;
-        padding: 0;
-    }
-    
-    .notification-section-header p {
-        margin: 5px 0 0 0;
-        font-size: 0.9rem;
-        opacity: 0.9;
-    }
-
-    .toast-container {
-        position: fixed;
-        top: 20px;
-        right: 20px;
-        z-index: 9999;
-    }
-
-    .custom-toast {
-        min-width: 300px;
-        background-color: #22c55e;
-        color: white;
-        border-radius: 8px;
-        padding: 16px 20px;
-        box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
-        display: flex;
-        align-items: center;
-        gap: 12px;
-        animation: slideInRight 0.3s ease-out;
-        margin-bottom: 10px;
-    }
-
-    .custom-toast.toast-hide {
-        animation: slideOutRight 0.3s ease-out;
-    }
-
-    .custom-toast-icon {
-        font-size: 24px;
-        flex-shrink: 0;
-    }
-
-    .custom-toast-content {
-        flex: 1;
-    }
-
-    .custom-toast-title {
-        font-weight: 600;
-        margin-bottom: 4px;
-    }
-
-    .custom-toast-message {
-        font-size: 0.875rem;
-        opacity: 0.95;
-    }
-
-    .custom-toast-close {
-        background: none;
-        border: none;
-        color: white;
-        font-size: 20px;
-        cursor: pointer;
-        padding: 0;
-        width: 24px;
-        height: 24px;
-        display: flex;
-        align-items: center;
-        justify-content: center;
-        opacity: 0.8;
-        transition: opacity 0.2s;
-        flex-shrink: 0;
-    }
-
-    .custom-toast-close:hover {
-        opacity: 1;
-    }
-
-    @@keyframes slideInRight {
-        from {
-            transform: translateX(400px);
-            opacity: 0;
-        }
-        to {
-            transform: translateX(0);
-            opacity: 1;
-        }
-    }
-
-    @@keyframes slideOutRight {
-        from {
-            transform: translateX(0);
-            opacity: 1;
-        }
-        to {
-            transform: translateX(400px);
-            opacity: 0;
-        }
-    }
-</style>
-
-<div id="whole-container" class="container">
-    <div class="toast-container" id="toastContainer"></div>
-
-    <div class="row">
-        <div class="col-md-3">
-            <div class="nav flex-column nav-pills" id="v-pills-tab" role="tablist" aria-orientation="vertical">
-                <button class="nav-link @(Model.ActiveTab != "Password" && Model.ActiveTab != "Notifications" ? "active" : "")" 
-                        id="v-pills-profile-tab" 
-                        data-bs-toggle="pill" 
-                        data-bs-target="#v-pills-profile" 
-                        type="button" 
-                        role="tab" 
-                        aria-controls="v-pills-profile" 
-                        aria-selected="true">
-                    <i class="fas fa-user me-2"></i>Profile
-                </button>
-                
-                <button class="nav-link @(Model.ActiveTab == "Password" ? "active" : "")" 
-                        id="v-pills-security-tab" 
-                        data-bs-toggle="pill" 
-                        data-bs-target="#v-pills-security" 
-                        type="button" 
-                        role="tab" 
-                        aria-controls="v-pills-security" 
-                        aria-selected="false">
-                    <i class="fas fa-lock me-2"></i>Password
-                </button>
-                
-                <button class="nav-link @(Model.ActiveTab == "Notifications" ? "active" : "")" 
-                        id="v-pills-notifications-tab" 
-                        data-bs-toggle="pill" 
-                        data-bs-target="#v-pills-notifications" 
-                        type="button" 
-                        role="tab" 
-                        aria-controls="v-pills-notifications" 
-                        aria-selected="false">
-                    <i class="fas fa-bell me-2"></i>Notifications
-                </button>
-                
-                <hr class="my-3">
-                
-                <form method="post" asp-page-handler="Logout" class="d-inline">
-                    <button type="submit" class="nav-link text-danger border-0 bg-transparent w-100 text-start">
-                        <i class="fas fa-sign-out-alt me-2"></i>Log Out
-                    </button>
-                </form>
-            </div>
-        </div>
-
-        <div class="col-md-9">
-            <div class="tab-content" id="v-pills-tabContent">
-                
-                <div class="tab-pane fade @(Model.ActiveTab != "Password" && Model.ActiveTab != "Notifications" ? "show active" : "")" 
-                     id="v-pills-profile" 
-                     role="tabpanel" 
-                     aria-labelledby="v-pills-profile-tab">
-                    <div class="account-section">
-                        <form method="post" asp-page-handler="UpdateProfile" enctype="multipart/form-data">
-                            <h3>Profile Information</h3>
-                            <div asp-validation-summary="ModelOnly" class="text-danger" role="alert"></div>
-                            
-                            <div class="profile-picture-section">
-                                <img src="@Model.ProfilePictureUrl" alt="Profile Picture" class="profile-picture" id="profilePreview" />
-                                <div class="profile-picture-upload">
-                                    <input asp-for="ProfileInput.ProfilePicture" type="file" class="form-control" accept="image/*" onchange="previewImage(this)" />
-                                    <small class="form-text text-muted">Upload a profile picture (JPG, PNG, or GIF, max 5MB)</small>
-                                    <span asp-validation-for="ProfileInput.ProfilePicture" class="text-danger"></span>
-                                </div>
-                            </div>
-
-                            <div class="form-floating mb-3">
-                                <input asp-for="ProfileInput.UserName" class="form-control" placeholder="Username" />
-                                <label asp-for="ProfileInput.UserName" class="form-label">Username</label>
-                                <span asp-validation-for="ProfileInput.UserName" class="text-danger"></span>
-                            </div>
-
-                            <div class="form-floating mb-3">
-                                <input asp-for="ProfileInput.Email" class="form-control" placeholder="Email" />
-                                <label asp-for="ProfileInput.Email" class="form-label">Email Address</label>
-                                <span asp-validation-for="ProfileInput.Email" class="text-danger"></span>
-                            </div>
-
-                            <button type="submit" class="btn btn-primary">
-                                <i class="fas fa-save me-2"></i>Update Profile
-                            </button>
-                            @Html.AntiForgeryToken()
-                        </form>
-                    </div>
-                </div>
-
-                <div class="tab-pane fade @(Model.ActiveTab == "Password" ? "show active" : "")" 
-                     id="v-pills-security" 
-                     role="tabpanel" 
-                     aria-labelledby="v-pills-security-tab">
-                    <div class="account-section">
-                        <form method="post" asp-page-handler="ChangePassword">
-                            @if (Model.HasPassword)
-                            {
-                                <h3>Change Password</h3>
-                                <div asp-validation-summary="ModelOnly" class="text-danger" role="alert"></div>
-                                <div class="form-floating mb-3">
-                                    <input asp-for="PasswordInput.CurrentPassword" type="password" class="form-control" placeholder="Current Password" />
-                                    <label asp-for="PasswordInput.CurrentPassword" class="form-label">Current Password</label>
-                                    <span asp-validation-for="PasswordInput.CurrentPassword" class="text-danger"></span>
-                                </div>
-                            }
-                            else
-                            {
-                                <h3>Set Password</h3>
-                                <div class="alert alert-info" role="alert">
-                                    <i class="fas fa-info-circle me-2"></i>
-                                    You signed in using an external provider (like Google). Set a password to enable direct login with your email and password.
-                                </div>
-                                <div asp-validation-summary="ModelOnly" class="text-danger" role="alert"></div>
-                            }
-                            
-                            <div class="form-floating mb-3">
-                                <input asp-for="PasswordInput.NewPassword" type="password" class="form-control" placeholder="New Password" />
-                                <label asp-for="PasswordInput.NewPassword" class="form-label">@(Model.HasPassword ? "New Password" : "Password")</label>
-                                <span asp-validation-for="PasswordInput.NewPassword" class="text-danger"></span>
-                            </div>
-                            
-                            <div class="form-floating mb-3">
-                                <input asp-for="PasswordInput.ConfirmPassword" type="password" class="form-control" placeholder="Confirm New Password" />
-                                <label asp-for="PasswordInput.ConfirmPassword" class="form-label">@(Model.HasPassword ? "Confirm New Password" : "Confirm Password")</label>
-                                <span asp-validation-for="PasswordInput.ConfirmPassword" class="text-danger"></span>
-                            </div>
-                            
-                            <button type="submit" class="btn btn-primary">
-                                <i class="fas fa-lock me-2"></i>@(Model.HasPassword ? "Change Password" : "Set Password")
-                            </button>
-                            <input name="__RequestVerificationToken" type="hidden" value="@Html.AntiForgeryToken().ToString()" />
-                        </form>
-                    </div>
-                </div>
-
-                <div class="tab-pane fade @(Model.ActiveTab == "Notifications" ? "show active" : "")" 
-                     id="v-pills-notifications" 
-                     role="tabpanel" 
-                     aria-labelledby="v-pills-notifications-tab">
-                    <div class="account-section">
-                        <form method="post" asp-page-handler="UpdateNotificationPreferences">
-                            
-                            <h3>User Preferences</h3>
-                            
-                            <div asp-validation-summary="ModelOnly" class="text-danger" role="alert"></div>
-
-                            <div class="notification-preference-item">
-                                <div class="notification-preference-info">
-                                    <div class="notification-icon-circle recipe-rated">
-                                        <i class="fas fa-star"></i>
-                                    </div>
-                                    <div class="notification-text">
-                                        <div class="notification-title">Recipe Rated</div>
-                                        <div class="notification-description">Get notified when someone rates your recipe</div>
-                                    </div>
-                                </div>
-                                <label class="custom-switch">
-                                    <input asp-for="NotificationPreferences.NotifyRecipeRated" type="checkbox" />
-                                    <span class="slider"></span>
-                                </label>
-                            </div>
-
-                            <div class="notification-preference-item">
-                                <div class="notification-preference-info">
-                                    <div class="notification-icon-circle recipe-accepted">
-                                        <i class="fas fa-check-circle"></i>
-                                    </div>
-                                    <div class="notification-text">
-                                        <div class="notification-title">Recipe Accepted</div>
-                                        <div class="notification-description">Get notified when your recipe is accepted by admin</div>
-                                    </div>
-                                </div>
-                                <label class="custom-switch">
-                                    <input asp-for="NotificationPreferences.NotifyRecipeAccepted" type="checkbox" />
-                                    <span class="slider"></span>
-                                </label>
-                            </div>
-
-                            <div class="notification-preference-item">
-                                <div class="notification-preference-info">
-                                    <div class="notification-icon-circle recipe-declined">
-                                        <i class="fas fa-times-circle"></i>
-                                    </div>
-                                    <div class="notification-text">
-                                        <div class="notification-title">Recipe Declined</div>
-                                        <div class="notification-description">Get notified when your recipe is declined by admin</div>
-                                    </div>
-                                </div>
-                                <label class="custom-switch">
-                                    <input asp-for="NotificationPreferences.NotifyRecipeDeclined" type="checkbox" />
-                                    <span class="slider"></span>
-                                </label>
-                            </div>
-
-                            <div class="notification-preference-item">
-                                <div class="notification-preference-info">
-                                    <div class="notification-icon-circle restaurant-meal">
-                                        <i class="fas fa-utensils"></i>
-                                    </div>
-                                    <div class="notification-text">
-                                        <div class="notification-title">Restaurant New Meal</div>
-                                        <div class="notification-description">Get notified about new meals from restaurants you follow</div>
-                                    </div>
-                                </div>
-                                <label class="custom-switch">
-                                    <input asp-for="NotificationPreferences.NotifyRestaurantNewMeal" type="checkbox" />
-                                    <span class="slider"></span>
-                                </label>
-                            </div>
-
-                            <div class="notification-preference-item">
-                                <div class="notification-preference-info">
-                                    <div class="notification-icon-circle tags-match">
-                                        <i class="fas fa-tags"></i>
-                                    </div>
-                                    <div class="notification-text">
-                                        <div class="notification-title">Meal Matches Tags</div>
-                                        <div class="notification-description">Get notified when new meals match your dietary preferences</div>
-                                    </div>
-                                </div>
-                                <label class="custom-switch">
-                                    <input asp-for="NotificationPreferences.NotifyMealMatchesTags" type="checkbox" />
-                                    <span class="slider"></span>
-                                </label>
-                            </div>
-
-                            <div class="notification-preference-item">
-                                <div class="notification-preference-info">
-                                    <div class="notification-icon-circle tags-match">
-                                        <i class="fas fa-tags"></i>
-                                    </div>
-                                    <div class="notification-text">
-                                        <div class="notification-title">Recipe Matches Tags</div>
-                                        <div class="notification-description">Get notified when new recipes match your dietary preferences</div>
-                                    </div>
-                                </div>
-                                <label class="custom-switch">
-                                    <input asp-for="NotificationPreferences.NotifyRecipeMatchesTags" type="checkbox" />
-                                    <span class="slider"></span>
-                                </label>
-                            </div>
-
-                            <div class="notification-preference-item">
-                                <div class="notification-preference-info">
-                                    <div class="notification-icon-circle new-restaurant">
-                                        <i class="fas fa-store"></i>
-                                    </div>
-                                    <div class="notification-text">
-                                        <div class="notification-title">New Restaurant</div>
-                                        <div class="notification-description">Get notified when new restaurants are added to the platform</div>
-                                    </div>
-                                </div>
-                                <label class="custom-switch">
-                                    <input asp-for="NotificationPreferences.NotifyNewRestaurant" type="checkbox" />
-                                    <span class="slider"></span>
-                                </label>
-                            </div>
-
-                            <div class="notification-preference-item">
-                                <div class="notification-preference-info">
-                                    <div class="notification-icon-circle meal-plan">
-                                        <i class="fas fa-calendar-check"></i>
-                                    </div>
-                                    <div class="notification-text">
-                                        <div class="notification-title">Meal Plan Updated</div>
-                                        <div class="notification-description">Get notified about updates to your meal plans</div>
-                                    </div>
-                                </div>
-                                <label class="custom-switch">
-                                    <input asp-for="NotificationPreferences.NotifyMealPlanUpdated" type="checkbox" />
-                                    <span class="slider"></span>
-                                </label>
-                            </div>
-
-                            <input type="hidden" name="ActiveTab" value="Notifications" />
-
-                            <button type="submit" class="btn btn-primary mt-3">
-                                <i class="fas fa-save me-2"></i>Save Preferences
-                            </button>
-                            @Html.AntiForgeryToken()
-                        </form>
-                    </div>
-                </div>
-            </div>
-        </div>
-    </div>
-</div>
-
-<script>
-    function previewImage(input) {
-        if (input.files && input.files[0]) {
-            var reader = new FileReader();
-            reader.onload = function(e) {
-                document.getElementById('profilePreview').src = e.target.result;
-            }
-            reader.readAsDataURL(input.files[0]);
-        }
-    }
-
-    function showToast(title, message, duration = 4000) {
-        const toastContainer = document.getElementById('toastContainer');
-        
-        const toast = document.createElement('div');
-        toast.className = 'custom-toast';
-        toast.innerHTML = `
-            <div class="custom-toast-icon">
-                <i class="fas fa-check-circle"></i>
-            </div>
-            <div class="custom-toast-content">
-                <div class="custom-toast-title">${title}</div>
-                <div class="custom-toast-message">${message}</div>
-            </div>
-            <button class="custom-toast-close" onclick="closeToast(this)">
-                <i class="fas fa-times"></i>
-            </button>
-        `;
-        
-        toastContainer.appendChild(toast);
-        
-        setTimeout(() => {
-            closeToast(toast.querySelector('.custom-toast-close'));
-        }, duration);
-    }
-
-    function closeToast(button) {
-        const toast = button.closest('.custom-toast');
-        toast.classList.add('toast-hide');
-        setTimeout(() => {
-            toast.remove();
-        }, 300);
-    }
-
-    document.addEventListener('DOMContentLoaded', function() {
-        @if (!string.IsNullOrEmpty(Model.StatusMessage))
-        {
-            <text>
-            showToast('Success', '@Model.StatusMessage');
-            </text>
-        }
-    });
-</script>
-
-@section Scripts {
-    <partial name="_ValidationScriptsPartial" />
-}
Index: triMatch/Areas/Identity/Pages/Account/MyAccount.cshtml.cs
===================================================================
--- NutriMatch/Areas/Identity/Pages/Account/MyAccount.cshtml.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,426 +1,0 @@
-#nullable disable
-using System.ComponentModel.DataAnnotations;
-using Microsoft.AspNetCore.Authorization;
-using Microsoft.AspNetCore.Identity;
-using Microsoft.AspNetCore.Mvc;
-using Microsoft.AspNetCore.Mvc.RazorPages;
-using NutriMatch.Models;
-
-namespace NutriMatch.Areas.Identity.Pages.Account
-{
-    [Authorize]
-    public class AccountModel : PageModel
-    {
-        private readonly UserManager<User> _userManager;
-        private readonly SignInManager<User> _signInManager;
-        private readonly ILogger<AccountModel> _logger;
-        private readonly IWebHostEnvironment _webHostEnvironment;
-
-        public AccountModel(
-            UserManager<User> userManager,
-            SignInManager<User> signInManager,
-            ILogger<AccountModel> logger,
-            IWebHostEnvironment webHostEnvironment)
-        {
-            _userManager = userManager;
-            _signInManager = signInManager;
-            _logger = logger;
-            _webHostEnvironment = webHostEnvironment;
-        }
-
-        [BindProperty]
-        public ProfileInputModel ProfileInput { get; set; }
-
-        [BindProperty]
-        public PasswordInputModel PasswordInput { get; set; }
-
-        [BindProperty]
-        public NotificationPreferencesModel NotificationPreferences { get; set; }
-
-        [BindProperty]
-        public string ActiveTab { get; set; }
-
-        [TempData]
-        public string StatusMessage { get; set; }
-
-        public string ProfilePictureUrl { get; set; }
-
-        public bool HasPassword { get; set; }
-
-        public class ProfileInputModel
-        {
-            [Required]
-            [EmailAddress]
-            [Display(Name = "Email")]
-            public string Email { get; set; }
-
-            [Required]
-            [Display(Name = "Username")]
-            public string UserName { get; set; }
-
-            [Display(Name = "Profile Picture")]
-            public IFormFile ProfilePicture { get; set; }
-        }
-
-        public class PasswordInputModel
-        {
-            [DataType(DataType.Password)]
-            [Display(Name = "Current Password")]
-            public string CurrentPassword { get; set; }
-
-            [Required]
-            [StringLength(100, ErrorMessage = "The {0} must be at least {2} and at most {1} characters long.", MinimumLength = 6)]
-            [DataType(DataType.Password)]
-            [Display(Name = "New Password")]
-            public string NewPassword { get; set; }
-
-            [DataType(DataType.Password)]
-            [Display(Name = "Confirm New Password")]
-            [Compare("NewPassword", ErrorMessage = "The new password and confirmation password do not match.")]
-            public string ConfirmPassword { get; set; }
-        }
-
-        public class NotificationPreferencesModel
-        {
-            [Display(Name = "Recipe Rated")]
-            public bool NotifyRecipeRated { get; set; }
-
-            [Display(Name = "Recipe Accepted")]
-            public bool NotifyRecipeAccepted { get; set; }
-
-            [Display(Name = "Recipe Declined")]
-            public bool NotifyRecipeDeclined { get; set; }
-
-            [Display(Name = "Restaurant New Meal")]
-            public bool NotifyRestaurantNewMeal { get; set; }
-
-            [Display(Name = "Meal Matches Tags")]
-            public bool NotifyMealMatchesTags { get; set; }
-
-            [Display(Name = "Recipe Matches Tags")]
-            public bool NotifyRecipeMatchesTags { get; set; }
-
-            [Display(Name = "New Restaurant")]
-            public bool NotifyNewRestaurant { get; set; }
-
-            [Display(Name = "Meal Plan Updated")]
-            public bool NotifyMealPlanUpdated { get; set; }
-        }
-
-        public async Task<IActionResult> OnGetAsync()
-        {
-            var user = await _userManager.GetUserAsync(User);
-            if (user == null)
-            {
-                return NotFound($"Unable to load user with ID '{_userManager.GetUserId(User)}'.");
-            }
-
-            if (!string.IsNullOrEmpty(Request.Query["activeTab"]))
-            {
-                ActiveTab = Request.Query["activeTab"];
-            }
-            else if (TempData["ActiveTab"] is string activeTab)
-            {
-                ActiveTab = activeTab;
-                TempData.Remove("ActiveTab");
-            }
-            else
-            {
-                ActiveTab = "Account";
-            }
-
-            await LoadUserData(user);
-            return Page();
-        }
-
-        public async Task<IActionResult> OnPostUpdateProfileAsync()
-        {
-            var user = await _userManager.GetUserAsync(User);
-            if (user == null)
-            {
-                return NotFound($"Unable to load user with ID '{_userManager.GetUserId(User)}'.");
-            }
-
-            bool hasChanges = false;
-
-            if (ProfileInput.Email != user.Email)
-            {
-                var existingUser = await _userManager.FindByEmailAsync(ProfileInput.Email);
-                if (existingUser != null && existingUser.Id != user.Id)
-                {
-                    ModelState.AddModelError($"{nameof(ProfileInput)}.{nameof(ProfileInput.Email)}", "Email is already taken.");
-                    await LoadUserData(user);
-                    return Page();
-                }
-
-                user.Email = ProfileInput.Email;
-                user.NormalizedEmail = _userManager.NormalizeEmail(ProfileInput.Email);
-                user.EmailConfirmed = false;
-                hasChanges = true;
-            }
-
-            if (ProfileInput.UserName != user.UserName)
-            {
-                var existingUser = await _userManager.FindByNameAsync(ProfileInput.UserName);
-                if (existingUser != null && existingUser.Id != user.Id)
-                {
-                    ModelState.AddModelError($"{nameof(ProfileInput)}.{nameof(ProfileInput.UserName)}", "Username is already taken.");
-                    await LoadUserData(user);
-                    return Page();
-                }
-
-                user.UserName = ProfileInput.UserName;
-                user.NormalizedUserName = _userManager.NormalizeName(ProfileInput.UserName);
-                hasChanges = true;
-            }
-
-            if (ProfileInput.ProfilePicture != null)
-            {
-                var result = await SaveProfilePictureAsync(ProfileInput.ProfilePicture, user.Id);
-                if (!result.Success)
-                {
-                    StatusMessage = result.ErrorMessage;
-                    await LoadUserData(user);
-                    return Page();
-                }
-                hasChanges = true;
-            }
-
-            if (hasChanges)
-            {
-                var updateResult = await _userManager.UpdateAsync(user);
-                if (!updateResult.Succeeded)
-                {
-                    foreach (var error in updateResult.Errors)
-                    {
-                        ModelState.AddModelError(string.Empty, error.Description);
-                    }
-                    await LoadUserData(user);
-                    return Page();
-                }
-
-                await _signInManager.RefreshSignInAsync(user);
-                StatusMessage = "Your profile has been updated successfully.";
-                _logger.LogInformation("User {UserId} updated profile. New Email: {Email}, New UserName: {UserName}",
-                    user.Id, user.Email, user.UserName);
-            }
-            else
-            {
-                StatusMessage = "No changes were made to your profile.";
-            }
-
-            return RedirectToPage();
-        }
-
-        public async Task<IActionResult> OnPostChangePasswordAsync()
-        {
-            var user = await _userManager.GetUserAsync(User);
-            if (user == null)
-            {
-                return NotFound($"Unable to load user with ID '{_userManager.GetUserId(User)}'.");
-            }
-
-            HasPassword = await _userManager.HasPasswordAsync(user);
-
-            if (HasPassword)
-            {
-                var changePasswordResult = await _userManager.ChangePasswordAsync(user, PasswordInput.CurrentPassword, PasswordInput.NewPassword);
-                if (!changePasswordResult.Succeeded)
-                {
-                    foreach (var error in changePasswordResult.Errors)
-                    {
-                        ModelState.AddModelError($"{nameof(PasswordInput)}.{nameof(PasswordInput.CurrentPassword)}", error.Description);
-                    }
-                    ActiveTab = "Password";
-                    await LoadUserData(user);
-                    return Page();
-                }
-
-                await _signInManager.RefreshSignInAsync(user);
-                _logger.LogInformation("User changed their password successfully.");
-                StatusMessage = "Your password has been changed successfully.";
-            }
-            else
-            {
-                var addPasswordResult = await _userManager.AddPasswordAsync(user, PasswordInput.NewPassword);
-                if (!addPasswordResult.Succeeded)
-                {
-                    foreach (var error in addPasswordResult.Errors)
-                    {
-                        ModelState.AddModelError($"{nameof(PasswordInput)}.{nameof(PasswordInput.NewPassword)}", error.Description);
-                    }
-                    ActiveTab = "Password";
-                    await LoadUserData(user);
-                    return Page();
-                }
-
-                await _signInManager.RefreshSignInAsync(user);
-                _logger.LogInformation("User set a password successfully.");
-                StatusMessage = "Your password has been set successfully.";
-            }
-
-            PasswordInput = new PasswordInputModel();
-            return RedirectToPage();
-        }
-
-        public async Task<IActionResult> OnPostUpdateNotificationPreferencesAsync()
-        {
-            var user = await _userManager.GetUserAsync(User);
-            if (user == null)
-            {
-                return NotFound($"Unable to load user with ID '{_userManager.GetUserId(User)}'.");
-            }
-
-            user.NotifyRecipeRated = NotificationPreferences.NotifyRecipeRated;
-            user.NotifyRecipeAccepted = NotificationPreferences.NotifyRecipeAccepted;
-            user.NotifyRecipeDeclined = NotificationPreferences.NotifyRecipeDeclined;
-            user.NotifyRestaurantNewMeal = NotificationPreferences.NotifyRestaurantNewMeal;
-            user.NotifyMealMatchesTags = NotificationPreferences.NotifyMealMatchesTags;
-            user.NotifyRecipeMatchesTags = NotificationPreferences.NotifyRecipeMatchesTags;
-            user.NotifyNewRestaurant = NotificationPreferences.NotifyNewRestaurant;
-            user.NotifyMealPlanUpdated = NotificationPreferences.NotifyMealPlanUpdated;
-
-            var updateResult = await _userManager.UpdateAsync(user);
-            if (!updateResult.Succeeded)
-            {
-                foreach (var error in updateResult.Errors)
-                {
-                    ModelState.AddModelError(string.Empty, error.Description);
-                }
-                ActiveTab = "Notifications";
-                await LoadUserData(user);
-                return Page();
-            }
-
-            await _signInManager.RefreshSignInAsync(user);
-            _logger.LogInformation("User {UserId} updated notification preferences.", user.Id);
-            StatusMessage = "Your notification preferences have been updated successfully.";
-
-            TempData["ActiveTab"] = "Notifications";
-            return RedirectToPage();
-        }
-
-        public async Task<IActionResult> OnPostLogoutAsync()
-        {
-            await _signInManager.SignOutAsync();
-            _logger.LogInformation("User logged out.");
-            return RedirectToPage("/Index");
-        }
-
-        private async Task LoadUserData(User user)
-        {
-            ProfileInput = new ProfileInputModel
-            {
-                Email = user.Email,
-                UserName = user.UserName
-            };
-
-            NotificationPreferences = new NotificationPreferencesModel
-            {
-                NotifyRecipeRated = user.NotifyRecipeRated,
-                NotifyRecipeAccepted = user.NotifyRecipeAccepted,
-                NotifyRecipeDeclined = user.NotifyRecipeDeclined,
-                NotifyRestaurantNewMeal = user.NotifyRestaurantNewMeal,
-                NotifyMealMatchesTags = user.NotifyMealMatchesTags,
-                NotifyRecipeMatchesTags = user.NotifyRecipeMatchesTags,
-                NotifyNewRestaurant = user.NotifyNewRestaurant,
-                NotifyMealPlanUpdated = user.NotifyMealPlanUpdated
-            };
-
-            ProfilePictureUrl = !string.IsNullOrEmpty(user.ProfilePictureUrl)
-                ? user.ProfilePictureUrl
-                : GetProfilePictureUrl(user.Id);
-
-            HasPassword = await _userManager.HasPasswordAsync(user);
-        }
-
-        private async Task<(bool Success, string ErrorMessage)> SaveProfilePictureAsync(IFormFile file, string userId)
-        {
-            try
-            {
-                if (file.Length > 5 * 1024 * 1024)
-                {
-                    return (false, "Profile picture must be smaller than 5MB.");
-                }
-
-                var allowedExtensions = new[] { ".jpg", ".jpeg", ".png", ".gif" };
-                var fileExtension = Path.GetExtension(file.FileName).ToLowerInvariant();
-
-                if (!allowedExtensions.Contains(fileExtension))
-                {
-                    return (false, "Please upload a valid image file (JPG, PNG, or GIF).");
-                }
-
-                var uploadsDir = Path.Combine(_webHostEnvironment.WebRootPath, "images");
-                Directory.CreateDirectory(uploadsDir);
-
-                await DeleteProfilePictureAsync(userId);
-
-                var fileName = $"{userId}_{Guid.NewGuid()}{fileExtension}";
-                var filePath = Path.Combine(uploadsDir, fileName);
-
-                using (var stream = new FileStream(filePath, FileMode.Create))
-                {
-                    await file.CopyToAsync(stream);
-                }
-
-                var user = await _userManager.FindByIdAsync(userId);
-                if (user != null)
-                {
-                    user.ProfilePictureUrl = $"/images/{fileName}";
-                    await _userManager.UpdateAsync(user);
-                }
-
-                return (true, null);
-            }
-            catch (Exception ex)
-            {
-                _logger.LogError(ex, "Error saving profile picture for user {UserId}", userId);
-                return (false, "An error occurred while saving the profile picture.");
-            }
-        }
-
-        private async Task DeleteProfilePictureAsync(string userId)
-        {
-            try
-            {
-                var uploadsDir = Path.Combine(_webHostEnvironment.WebRootPath, "images");
-                if (Directory.Exists(uploadsDir))
-                {
-                    var existingFiles = Directory.GetFiles(uploadsDir, $"{userId}_*");
-                    foreach (var file in existingFiles)
-                    {
-                        System.IO.File.Delete(file);
-                    }
-                }
-            }
-            catch (Exception ex)
-            {
-                _logger.LogError(ex, "Error deleting profile picture for user {UserId}", userId);
-            }
-        }
-
-        private string GetProfilePictureUrl(string userId)
-        {
-            try
-            {
-                var uploadsDir = Path.Combine(_webHostEnvironment.WebRootPath, "uploads", "profile-pictures");
-                if (Directory.Exists(uploadsDir))
-                {
-                    var existingFile = Directory.GetFiles(uploadsDir, $"{userId}_*").FirstOrDefault();
-                    if (existingFile != null)
-                    {
-                        var fileName = Path.GetFileName(existingFile);
-                        return $"/uploads/profile-pictures/{fileName}";
-                    }
-                }
-            }
-            catch (Exception ex)
-            {
-                _logger.LogError(ex, "Error getting profile picture URL for user {UserId}", userId);
-            }
-
-            return "https://via.placeholder.com/120x120/22c55e/ffffff?text=User";
-        }
-    }
-}
Index: triMatch/Areas/Identity/Pages/Account/Register.cshtml
===================================================================
--- NutriMatch/Areas/Identity/Pages/Account/Register.cshtml	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,241 +1,0 @@
-﻿@page
-@model RegisterModel
-@{
-    ViewData["Title"] = "Register";
-}
-
-<style>
-    :root {
-        --bs-primary: #22c55e;
-        --bs-primary-rgb: 34, 197, 94;
-    }
-
-    .btn-primary {
-        background-color: #22c55e;
-        border-color: #22c55e;
-    }
-
-    .btn-primary:hover {
-        background-color: #16a34a;
-        border-color: #16a34a;
-    }
-
-    .btn-primary:focus,
-    .btn-primary.focus {
-        box-shadow: 0 0 0 0.2rem rgba(34, 197, 94, 0.5);
-    }
-
-    .btn-primary:active,
-    .btn-primary.active {
-        background-color: #15803d !important;
-        border-color: #15803d !important;
-    }
-
-    .btn-outline-primary {
-        color: #22c55e;
-        border-color: #22c55e;
-    }
-
-    .btn-outline-primary:hover {
-        background-color: #22c55e;
-        border-color: #22c55e;
-        color: white;
-    }
-
-    .btn-outline-primary:focus,
-    .btn-outline-primary.focus {
-        box-shadow: 0 0 0 0.2rem rgba(34, 197, 94, 0.5);
-    }
-
-    .btn-outline-primary:active,
-    .btn-outline-primary.active {
-        background-color: #15803d !important;
-        border-color: #15803d !important;
-        color: white !important;
-    }
-
-    .form-control:focus {
-        border-color: #86efac;
-        box-shadow: 0 0 0 0.2rem rgba(34, 197, 94, 0.25);
-    }
-
-    h1 {
-        color: #22c55e;
-        font-weight: 600;
-    }
-
-    .login-section {
-        background-color: #f0fdf4;
-        border-radius: 8px;
-        padding: 30px;
-        text-align: center;
-        display: flex;
-        flex-direction: column;
-        justify-content: center;
-    }
-
-    .login-section h3 {
-        color: #16a34a;
-        margin-bottom: 20px;
-    }
-
-    #registerForm {
-        margin-top: 5rem;
-    }
-
-    .btn-google {
-        background-color: #fff;
-        border: 1px solid #dadce0;
-        color: #3c4043;
-        font-weight: 500;
-    }
-
-    .btn-google:hover {
-        background-color: #f8f9fa;
-        border-color: #dadce0;
-        color: #3c4043;
-    }
-
-    .btn-facebook {
-        background-color: #1877f2;
-        border: 1px solid #1877f2;
-        color: white;
-        font-weight: 500;
-    }
-
-    .btn-facebook:hover {
-        background-color: #166fe5;
-        border-color: #166fe5;
-        color: white;
-    }
-
-    .oauth-buttons {
-        margin-bottom: 1.5rem;
-    }
-
-    .oauth-divider {
-        display: flex;
-        align-items: center;
-        text-align: center;
-        margin: 1.5rem 0;
-    }
-
-    .oauth-divider::before,
-    .oauth-divider::after {
-        content: '';
-        flex: 1;
-        border-bottom: 1px solid #dee2e6;
-    }
-
-    .oauth-divider span {
-        padding: 0 1rem;
-        color: #6c757d;
-        font-size: 0.875rem;
-    }
-
-    section {
-        padding-top: 50px;
-    }
-</style>
-
-<div class="row mt-5 mb-5 flex justify-content-center">
-    <div class="col-md-4">
-        <section>
-            <h2>Create a new account.</h2>
-            <hr />
-
-            @if (Model.ExternalLogins?.Count > 0)
-            {
-                <div class="oauth-buttons">
-                    @foreach (var provider in Model.ExternalLogins)
-                    {
-                        if (provider.Name == "Google")
-                        {
-                            <form asp-page="./ExternalLogin" asp-route-returnUrl="@Model.ReturnUrl" method="post">
-                                <button type="submit" class="btn btn-google w-100 mb-2" name="provider" value="@provider.Name"
-                                    title="Sign up using your @provider.DisplayName account">
-                                    <svg width="18" height="18" viewBox="0 0 18 18"
-                                        style="vertical-align: middle; margin-right: 8px;">
-                                        <path fill="#4285F4"
-                                            d="M17.64 9.2c0-.637-.057-1.251-.164-1.84H9v3.481h4.844c-.209 1.125-.843 2.078-1.796 2.717v2.258h2.908c1.702-1.567 2.684-3.874 2.684-6.615z">
-                                        </path>
-                                        <path fill="#34A853"
-                                            d="M9.003 18c2.43 0 4.467-.806 5.956-2.184l-2.908-2.258c-.806.54-1.837.86-3.048.86-2.344 0-4.328-1.584-5.036-3.711H.96v2.332C2.44 15.983 5.485 18 9.003 18z">
-                                        </path>
-                                        <path fill="#FBBC05"
-                                            d="M3.964 10.712c-.18-.54-.282-1.117-.282-1.71 0-.593.102-1.17.282-1.71V4.96H.957C.347 6.175 0 7.55 0 9.002c0 1.452.348 2.827.957 4.042l3.007-2.332z">
-                                        </path>
-                                        <path fill="#EA4335"
-                                            d="M9.003 3.58c1.321 0 2.508.454 3.44 1.345l2.582-2.58C13.464.891 11.428 0 9.002 0 5.485 0 2.44 2.017.96 4.958L3.967 7.29c.708-2.127 2.692-3.71 5.036-3.71z">
-                                        </path>
-                                    </svg>
-                                    Sign up with Google
-                                </button>
-                            </form>
-                        }
-                        else if (provider.Name == "Facebook")
-                        {
-                            <form asp-page="./ExternalLogin" asp-route-returnUrl="@Model.ReturnUrl" method="post">
-                                <button type="submit" class="btn btn-facebook w-100 mb-2" name="provider" value="@provider.Name"
-                                    title="Sign up using your @provider.DisplayName account">
-                                    <svg width="18" height="18" viewBox="0 0 24 24" fill="white"
-                                        style="vertical-align: middle; margin-right: 8px;">
-                                        <path
-                                            d="M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.47h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.47h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z" />
-                                    </svg>
-                                    Sign up with Facebook
-                                </button>
-                            </form>
-                        }
-                    }
-                </div>
-
-                <div class="oauth-divider">
-                    <span>OR</span>
-                </div>
-            }
-
-            <form id="registerForm" asp-route-returnUrl="@Model.ReturnUrl" method="post">
-                <div asp-validation-summary="ModelOnly" class="text-danger" role="alert"></div>
-
-                <div class="form-floating mb-3">
-                    <input asp-for="Input.Email" class="form-control" autocomplete="username" aria-required="true"
-                        placeholder="name@example.com" />
-                    <label asp-for="Input.Email">Email</label>
-                    <span asp-validation-for="Input.Email" class="text-danger"></span>
-                </div>
-                <div class="form-floating mb-3">
-                    <input asp-for="Input.Username" class="form-control" autocomplete="username" aria-required="true"
-                        placeholder="username" />
-                    <label asp-for="Input.Username">Username</label>
-                    <span asp-validation-for="Input.Username" class="text-danger"></span>
-                </div>
-                <div class="form-floating mb-3">
-                    <input asp-for="Input.Password" class="form-control" autocomplete="new-password"
-                        aria-required="true" placeholder="password" />
-                    <label asp-for="Input.Password">Password</label>
-                    <span asp-validation-for="Input.Password" class="text-danger"></span>
-                </div>
-                <div class="form-floating mb-3">
-                    <input asp-for="Input.ConfirmPassword" class="form-control" autocomplete="new-password"
-                        aria-required="true" placeholder="password" />
-                    <label asp-for="Input.ConfirmPassword">Confirm Password</label>
-                    <span asp-validation-for="Input.ConfirmPassword" class="text-danger"></span>
-                </div>
-                <button id="registerSubmit" type="submit" class="w-100 btn btn-lg btn-primary">Register</button>
-            </form>
-        </section>
-    </div>
-    <div class="d-flex align-items-center col-md-6 col-md-offset-2">
-        <section class="login-section">
-            <h3>Already have an account?</h3>
-            <p class="mb-3">Sign in to access your existing account.</p>
-            <a asp-page="./Login" asp-route-returnUrl="@Model.ReturnUrl" class="btn btn-outline-primary btn-lg">Sign
-                In</a>
-        </section>
-    </div>
-</div>
-
-@section Scripts {
-    <partial name="_ValidationScriptsPartial" />
-}
Index: triMatch/Areas/Identity/Pages/Account/Register.cshtml.cs
===================================================================
--- NutriMatch/Areas/Identity/Pages/Account/Register.cshtml.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,167 +1,0 @@
-using System.ComponentModel.DataAnnotations;
-using System.Text;
-using System.Text.Encodings.Web;
-using Microsoft.AspNetCore.Authentication;
-using Microsoft.AspNetCore.Identity;
-using Microsoft.AspNetCore.Identity.UI.Services;
-using Microsoft.AspNetCore.Mvc;
-using Microsoft.AspNetCore.Mvc.RazorPages;
-using Microsoft.AspNetCore.WebUtilities;
-using NutriMatch.Models;
-
-namespace NutriMatch.Areas.Identity.Pages.Account
-{
-    public class RegisterModel : PageModel
-    {
-        private readonly SignInManager<User> _signInManager;
-        private readonly UserManager<User> _userManager;
-        private readonly IUserStore<User> _userStore;
-        private readonly IUserEmailStore<User> _emailStore;
-        private readonly ILogger<RegisterModel> _logger;
-        private readonly IEmailSender _emailSender;
-
-        public RegisterModel(
-            UserManager<User> userManager,
-            IUserStore<User> userStore,
-            SignInManager<User> signInManager,
-            ILogger<RegisterModel> logger,
-            IEmailSender emailSender)
-        {
-            _userManager = userManager;
-            _userStore = userStore;
-            _emailStore = GetEmailStore();
-            _signInManager = signInManager;
-            _logger = logger;
-            _emailSender = emailSender;
-        }
-
-        [BindProperty]
-        public InputModel Input { get; set; }
-
-        public string ReturnUrl { get; set; }
-
-        public IList<AuthenticationScheme> ExternalLogins { get; set; }
-
-        public class InputModel
-        {
-            [Required]
-            [EmailAddress]
-            [Display(Name = "Email")]
-            public string Email { get; set; }
-
-            [Required]
-            [StringLength(100, ErrorMessage = "The {0} must be at least {2} and at max {1} characters long.", MinimumLength = 6)]
-            [DataType(DataType.Password)]
-            [Display(Name = "Password")]
-            public string Password { get; set; }
-
-            [DataType(DataType.Password)]
-            [Display(Name = "Confirm password")]
-            [Compare("Password", ErrorMessage = "The password and confirmation password do not match.")]
-            public string ConfirmPassword { get; set; }
-
-            [Required]
-            [StringLength(50, ErrorMessage = "The {0} must be at most {1} characters long.")]
-            [Display(Name = "Username")]
-            public string Username { get; set; }
-
-        }
-
-        public async Task OnGetAsync(string returnUrl = null)
-        {
-            ReturnUrl = returnUrl;
-            ExternalLogins = (await _signInManager.GetExternalAuthenticationSchemesAsync()).ToList();
-        }
-
-        public async Task<IActionResult> OnPostAsync(string returnUrl = null)
-        {
-            returnUrl ??= Url.Content("~/");
-            ExternalLogins = (await _signInManager.GetExternalAuthenticationSchemesAsync()).ToList();
-
-            if (ModelState.IsValid)
-            {
-                var existingUser = await _userManager.FindByEmailAsync(Input.Email);
-
-                if (existingUser != null)
-                {
-                    var hasPassword = await _userManager.HasPasswordAsync(existingUser);
-
-                    if (!hasPassword)
-                    {
-                        var logins = await _userManager.GetLoginsAsync(existingUser);
-                        var providers = string.Join(" or ", logins.Select(l => l.LoginProvider));
-
-                        ModelState.AddModelError(string.Empty,
-                            $"An account with {Input.Email} already exists. " +
-                            $"You previously registered using {providers}. " +
-                            "Please use that login method, or you can add a password to your existing account in your profile settings.");
-                    }
-                    else
-                    {
-                        ModelState.AddModelError(string.Empty,
-                            "An account with this email already exists.");
-                    }
-
-                    return Page();
-                }
-
-                var existingUsername = await _userManager.FindByNameAsync(Input.Username);
-                if (existingUsername != null)
-                {
-                    ModelState.AddModelError(nameof(Input.Username),
-                        "This username is already taken. Please choose another.");
-                    return Page();
-                }
-
-                var user = CreateUser();
-                user.ProfilePictureUrl = "/images/DefaultProfile.png";
-
-
-                await _userStore.SetUserNameAsync(user, Input.Username, CancellationToken.None);
-                await _emailStore.SetEmailAsync(user, Input.Email, CancellationToken.None);
-                var result = await _userManager.CreateAsync(user, Input.Password);
-
-                if (result.Succeeded)
-                {
-                    _logger.LogInformation("User created a new account with password.");
-
-                    var userId = await _userManager.GetUserIdAsync(user);
-
-                    await _signInManager.SignInAsync(user, isPersistent: false);
-
-                    return LocalRedirect(returnUrl);
-
-                }
-                foreach (var error in result.Errors)
-                {
-                    ModelState.AddModelError(string.Empty, error.Description);
-                }
-            }
-
-            return Page();
-        }
-
-        private User CreateUser()
-        {
-            try
-            {
-                return Activator.CreateInstance<User>();
-            }
-            catch
-            {
-                throw new InvalidOperationException($"Can't create an instance of '{nameof(User)}'. " +
-                    $"Make sure that '{nameof(User)}' is not an abstract class and has a parameterless constructor, or alternatively " +
-                    $"override the register page in /Areas/Identity/Pages/Account/Register.cshtml");
-            }
-        }
-
-        private IUserEmailStore<User> GetEmailStore()
-        {
-            if (!_userManager.SupportsUserEmail)
-            {
-                throw new NotSupportedException("The default UI requires a user store with email support.");
-            }
-            return (IUserEmailStore<User>)_userStore;
-        }
-    }
-}
Index: triMatch/Areas/Identity/Pages/Account/_ViewImports.cshtml
===================================================================
--- NutriMatch/Areas/Identity/Pages/Account/_ViewImports.cshtml	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,1 +1,0 @@
-@using NutriMatch.Areas.Identity.Pages.Account
Index: triMatch/Areas/Identity/Pages/_ValidationScriptsPartial.cshtml
===================================================================
--- NutriMatch/Areas/Identity/Pages/_ValidationScriptsPartial.cshtml	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,2 +1,0 @@
-﻿<script src="~/lib/jquery-validation/dist/jquery.validate.min.js"></script>
-<script src="~/lib/jquery-validation-unobtrusive/dist/jquery.validate.unobtrusive.min.js"></script>
Index: triMatch/Areas/Identity/Pages/_ViewImports.cshtml
===================================================================
--- NutriMatch/Areas/Identity/Pages/_ViewImports.cshtml	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,4 +1,0 @@
-@using Microsoft.AspNetCore.Identity
-@using NutriMatch.Areas.Identity
-@using NutriMatch.Areas.Identity.Pages
-@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
Index: triMatch/Areas/Identity/Pages/_ViewStart.cshtml
===================================================================
--- NutriMatch/Areas/Identity/Pages/_ViewStart.cshtml	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,4 +1,0 @@
-
-@{
-    Layout = "/Views/Shared/_Layout.cshtml";
-}
Index: triMatch/Controllers/AdminController.cs
===================================================================
--- NutriMatch/Controllers/AdminController.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,382 +1,0 @@
-using Microsoft.AspNetCore.Authorization;
-using Microsoft.AspNetCore.Mvc;
-using NutriMatch.Models;
-using System.Text.Json;
-using NutriMatch.Services;
-using NutriMatch.Data;
-using Microsoft.EntityFrameworkCore;
-
-namespace NutriMatch.Controllers
-{
-    [Authorize(Roles = "Admin")]
-    public class AdminController : Controller
-    {
-        private readonly AppDbContext _context;
-        private readonly ILogger<AdminController> _logger;
-        private readonly IRecipeApprovalService _recipeApprovalService;
-        private readonly IRestaurantService _restaurantService;
-        private readonly IMealKeywordService _mealKeywordService;
-        private readonly IFileUploadService _fileUploadService;
-
-        public AdminController(
-            AppDbContext context,
-            ILogger<AdminController> logger,
-            IRecipeApprovalService recipeApprovalService,
-            IRestaurantService restaurantService,
-            IMealKeywordService mealKeywordService,
-            IFileUploadService fileUploadService)
-        {
-            _context = context;
-            _logger = logger;
-            _recipeApprovalService = recipeApprovalService;
-            _restaurantService = restaurantService;
-            _mealKeywordService = mealKeywordService;
-            _fileUploadService = fileUploadService;
-        }
-
-        public async Task<IActionResult> Index()
-        {
-            var pendingRecipes = await _recipeApprovalService.GetPendingRecipesAsync();
-            return View(pendingRecipes);
-        }
-
-        #region Recipe Approval
-
-        [HttpPost]
-        [ValidateAntiForgeryToken]
-        public async Task<IActionResult> ApproveRecipe([FromBody] JsonElement request)
-        {
-            try
-            {
-                if (!request.TryGetProperty("recipeId", out var recipeIdProp))
-                {
-                    return Json(new { success = false, message = "Recipe ID is required." });
-                }
-
-                int recipeId = recipeIdProp.GetInt32();
-                var (success, message) = await _recipeApprovalService.ApproveRecipeAsync(recipeId);
-
-                return Json(new { message, success });
-            }
-            catch (Exception ex)
-            {
-                _logger.LogError(ex, "Error approving recipe");
-                return Json(new { success = false, message = "An error occurred while approving the recipe." });
-            }
-        }
-
-        [HttpPost]
-        [ValidateAntiForgeryToken]
-        public async Task<IActionResult> DeclineRecipe([FromBody] JsonElement request)
-        {
-            try
-            {
-                if (!request.TryGetProperty("recipeId", out var recipeIdProp))
-                {
-                    return Json(new { success = false, message = "Recipe ID is required." });
-                }
-
-                int recipeId = recipeIdProp.GetInt32();
-                string reason = request.TryGetProperty("reason", out var reasonProp) ? reasonProp.GetString() ?? "No reason provided." : "No reason provided.";
-                string notes = request.TryGetProperty("notes", out var notesProp) ? notesProp.GetString() ?? "No notes provided." : "No notes provided.";
-
-                var (success, message) = await _recipeApprovalService.DeclineRecipeAsync(recipeId, reason, notes);
-
-                return Json(new { message, success });
-            }
-            catch (Exception ex)
-            {
-                _logger.LogError(ex, "Error declining recipe");
-                return Json(new { success = false, message = "An error occurred while declining the recipe." });
-            }
-        }
-
-        [HttpPost]
-        [ValidateAntiForgeryToken]
-        public async Task<IActionResult> BulkApproveRecipes([FromBody] JsonElement request)
-        {
-            try
-            {
-                if (!request.TryGetProperty("recipeIds", out var recipeIdsProp))
-                {
-                    return Json(new { success = false, message = "Recipe IDs are required." });
-                }
-
-                List<int> recipeIds = recipeIdsProp.EnumerateArray()
-                    .Select(x => x.GetInt32())
-                    .ToList();
-
-                var (success, message, approvedCount) = await _recipeApprovalService.BulkApproveRecipesAsync(recipeIds);
-
-                return Json(new { message, success, approvedCount });
-            }
-            catch (Exception ex)
-            {
-                _logger.LogError(ex, "Error bulk approving recipes");
-                return Json(new { success = false, message = "An error occurred while approving recipes." });
-            }
-        }
-
-        public async Task<IActionResult> DeclineReasonModel(int? id)
-        {
-            try
-            {
-                if (id == null)
-                {
-                    return NotFound();
-                }
-
-                var recipe = await _recipeApprovalService.GetRecipeForDeclineAsync(id.Value);
-
-                if (recipe == null)
-                {
-                    return NotFound();
-                }
-
-                return PartialView("_RecipeDeclineAdminPartial", recipe);
-            }
-            catch (Exception ex)
-            {
-                _logger.LogError(ex, "Error loading decline reason model");
-                return StatusCode(500, "An error occurred while loading the decline form.");
-            }
-        }
-
-        #endregion
-
-        #region Ingredient Review
-
-        [HttpGet]
-        public async Task<IActionResult> GetIngredientReview(int id)
-        {
-            try
-            {
-                var ingredient = await _context.Ingredients
-                .Where(i => i.Id == id && i.Status == "Pending")
-                .FirstOrDefaultAsync();
-
-                if (ingredient == null)
-                {
-                    return NotFound("Ingredient not found or not pending review.");
-                }
-
-                return PartialView("_IngredientReviewPartial", ingredient);
-            }
-            catch (Exception ex)
-            {
-                _logger.LogError(ex, "Error loading ingredient review for ID: {IngredientId}", id);
-                return StatusCode(500, "An error occurred while loading ingredient details.");
-            }
-        }
-
-        #endregion
-
-        #region Meal Keywords
-
-        [HttpGet]
-        public IActionResult GetMealTagsPartial()
-        {
-            return PartialView("_MealTagsPartial");
-        }
-
-        [HttpGet]
-        public async Task<IActionResult> GetMealKeywords()
-        {
-            var keywords = await _mealKeywordService.GetMealKeywordsAsync();
-            return Json(keywords);
-        }
-
-        [HttpPost]
-        [ValidateAntiForgeryToken]
-        public async Task<IActionResult> AddMealKeyword([FromBody] MealKeyword keyword)
-        {
-            try
-            {
-                var (success, message) = await _mealKeywordService.AddMealKeywordAsync(keyword);
-                return Json(new { success, message });
-            }
-            catch (Exception ex)
-            {
-                return Json(new { success = false, message = "Error adding keyword: " + ex.Message });
-            }
-        }
-
-        [HttpDelete]
-        [ValidateAntiForgeryToken]
-        public async Task<IActionResult> DeleteMealKeyword(int id)
-        {
-            try
-            {
-                var (success, message) = await _mealKeywordService.DeleteMealKeywordAsync(id);
-                return Json(new { success, message });
-            }
-            catch (Exception ex)
-            {
-                return Json(new { success = false, message = "Error deleting keyword: " + ex.Message });
-            }
-        }
-
-        #endregion
-
-        #region Restaurant Management
-
-        [HttpGet]
-        public IActionResult GetRestaurantMealsPartial()
-        {
-            return PartialView("_RestaurantMealsManagementPartial");
-        }
-
-        [HttpGet]
-        public async Task<IActionResult> GetRestaurants()
-        {
-            var restaurants = await _restaurantService.GetRestaurantsAsync();
-            return Json(restaurants);
-        }
-
-        [HttpGet]
-        public async Task<IActionResult> GetRestaurant(int id)
-        {
-            try
-            {
-                var restaurant = await _restaurantService.GetRestaurantAsync(id);
-                if (restaurant == null)
-                {
-                    return Json(new { success = false, message = "Restaurant not found" });
-                }
-
-                return Json(restaurant);
-            }
-            catch (Exception ex)
-            {
-                return Json(new { success = false, message = "Error loading restaurant: " + ex.Message });
-            }
-        }
-
-        [HttpGet]
-        public async Task<IActionResult> GetRestaurantMeals(int id)
-        {
-            try
-            {
-                var meals = await _restaurantService.GetRestaurantMealsAsync(id);
-                return Json(meals);
-            }
-            catch (Exception ex)
-            {
-                return Json(new { success = false, message = "Error loading meals: " + ex.Message });
-            }
-        }
-
-        [HttpPost]
-        [ValidateAntiForgeryToken]
-        public async Task<IActionResult> AddRestaurantMeal([FromBody] RestaurantMeal meal)
-        {
-            try
-            {
-                var (success, message) = await _restaurantService.AddRestaurantMealAsync(meal);
-                return Json(new { success, message });
-            }
-            catch (Exception ex)
-            {
-                return Json(new { success = false, message = "Error adding meal: " + ex.Message });
-            }
-        }
-
-        [HttpDelete]
-        [ValidateAntiForgeryToken]
-        public async Task<IActionResult> DeleteRestaurantMeal(int id)
-        {
-            try
-            {
-                var (success, message) = await _restaurantService.DeleteRestaurantMealAsync(id);
-                return Json(new { success, message });
-            }
-            catch (Exception ex)
-            {
-                return Json(new { success = false, message = "Error deleting meal: " + ex.Message });
-            }
-        }
-
-        [HttpPost]
-        [ValidateAntiForgeryToken]
-        public async Task<IActionResult> EditRestaurantMeal([FromBody] RestaurantMeal meal)
-        {
-            try
-            {
-                var (success, message) = await _restaurantService.EditRestaurantMealAsync(meal);
-                return Json(new { success, message });
-            }
-            catch (Exception ex)
-            {
-                return Json(new { success = false, message = "Error updating meal: " + ex.Message });
-            }
-        }
-
-        [HttpPost]
-        [ValidateAntiForgeryToken]
-        public async Task<IActionResult> AddRestaurant([FromForm] string name, [FromForm] string description, [FromForm] IFormFile image)
-        {
-            try
-            {
-                var filePath = await _fileUploadService.UploadImageAsync(image);
-
-                if (string.IsNullOrWhiteSpace(filePath))
-                {
-                    return Json(new { success = false, message = "Image upload failed." });
-                }
-
-                var (success, message, restaurantId) = await _restaurantService.AddRestaurantAsync(name, description, filePath);
-
-                return Json(new { success, message, restaurantId });
-            }
-            catch (Exception ex)
-            {
-                return Json(new { success = false, message = "Error adding restaurant: " + ex.Message });
-            }
-        }
-
-        [HttpPost]
-        [ValidateAntiForgeryToken]
-        public async Task<IActionResult> EditRestaurant([FromForm] int id, [FromForm] string name, [FromForm] string description, [FromForm] IFormFile? image)
-        {
-            try
-            {
-                string? filePath = null;
-
-                if (image != null && image.Length > 0)
-                {
-                    filePath = await _fileUploadService.UploadImageAsync(image);
-
-                    if (string.IsNullOrWhiteSpace(filePath))
-                    {
-                        return Json(new { success = false, message = "Image upload failed." });
-                    }
-                }
-
-                var (success, message) = await _restaurantService.EditRestaurantAsync(id, name, description, filePath);
-
-                return Json(new { success, message });
-            }
-            catch (Exception ex)
-            {
-                return Json(new { success = false, message = "Error updating restaurant: " + ex.Message });
-            }
-        }
-
-        [HttpPost]
-        [ValidateAntiForgeryToken]
-        public async Task<IActionResult> DeleteRestaurant(int id)
-        {
-            try
-            {
-                var (success, message) = await _restaurantService.DeleteRestaurantAsync(id);
-                return Json(new { success, message });
-            }
-            catch (Exception ex)
-            {
-                return Json(new { success = false, message = "Error deleting restaurant: " + ex.Message });
-            }
-        }
-
-        #endregion
-    }
-}
Index: NutriMatch/Controllers/HomeController.cs
===================================================================
--- NutriMatch/Controllers/HomeController.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ NutriMatch/Controllers/HomeController.cs	(revision 5d48bf93fdd26aa14b8ae7ac68b61e5d60e3e2a8)
@@ -1,97 +1,31 @@
-using System.Security.Claims;
+using System.Diagnostics;
 using Microsoft.AspNetCore.Mvc;
-using Microsoft.EntityFrameworkCore;
-using NutriMatch.Data;
 using NutriMatch.Models;
-using Microsoft.AspNetCore.Identity;
 
-namespace MyApp.Namespace
+namespace NutriMatch.Controllers;
+
+public class HomeController : Controller
 {
-    public class Home : Controller
+    private readonly ILogger<HomeController> _logger;
+
+    public HomeController(ILogger<HomeController> logger)
     {
-        private readonly AppDbContext _context;
-        private readonly UserManager<User> _userManager;
+        _logger = logger;
+    }
 
-        public Home(AppDbContext context, UserManager<User> userManager)
-        {
-            _context = context;
-            _userManager = userManager;
-        }
+    public IActionResult Index()
+    {
+        return View();
+    }
 
-        public async Task<IActionResult> Index()
-        {
-            var recipes = await _context.Recipes
-                .Where(r => r.RecipeStatus == "Accepted")
-                .Include(r => r.User)
-                .Include(r => r.Ratings)
-                .Select(r => new
-                {
-                    Recipe = r,
-                    AverageRating = r.Ratings.Any() ? r.Ratings.Average(rating => rating.Rating) : 0
-                })
-                .OrderByDescending(x => x.AverageRating)
-                .Take(6)
-                .Select(x => x.Recipe)
-                .ToListAsync();
+    public IActionResult Privacy()
+    {
+        return View();
+    }
 
-            foreach (var recipe in recipes)
-            {
-                recipe.Rating = recipe.Ratings.Any() ? recipe.Ratings.Average(r => r.Rating) : 0;
-            }
-
-            var topRestaurants = await _context.Restaurants
-                .Include(r => r.Followers)
-                .OrderByDescending(r => r.Followers.Count)
-                .Take(5)
-                .ToListAsync();
-
-            var model = new HomeViewModel
-            {
-                Recipes = recipes,
-                Restaurants = topRestaurants
-            };
-
-            var userId = User.FindFirstValue(ClaimTypes.NameIdentifier);
-            var userRecipes = _context.Recipes
-                .Where(r => r.UserId == userId)
-                .Include(r => r.User)
-                .Include(r => r.Ratings)
-                .ToList();
-
-            var recipeIds = userRecipes.Select(r => r.Id).ToList();
-            var ratings = _context.RecipeRatings
-                .Where(r => recipeIds.Contains(r.RecipeId))
-                .GroupBy(r => r.RecipeId);
-
-            foreach (var recipe in userRecipes)
-            {
-                recipe.Rating = recipe.Ratings.Any() ? recipe.Ratings.Average(r => r.Rating) : 0;
-            }
-
-            double averageRating = 0;
-            foreach (var group in ratings)
-            {
-                averageRating += group.Average(r => r.Rating);
-            }
-
-            if (ratings.Count() > 0)
-            {
-                ViewBag.AverageRating = Math.Round(averageRating / ratings.Count(), 1);
-            }
-            else
-            {
-                ViewBag.AverageRating = 0;
-            }
-
-            ViewBag.UserRecipesCount = userRecipes.Count;
-
-            if (User.Identity.IsAuthenticated && !string.IsNullOrEmpty(userId))
-            {
-                var currentUser = await _userManager.GetUserAsync(User);
-                ViewBag.UserPicture = currentUser?.ProfilePictureUrl;
-            }
-
-            return View(model);
-        }
+    [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
+    public IActionResult Error()
+    {
+        return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
     }
 }
Index: triMatch/Controllers/MealPlanController.cs
===================================================================
--- NutriMatch/Controllers/MealPlanController.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,181 +1,0 @@
-using Microsoft.AspNetCore.Authorization;
-using Microsoft.AspNetCore.Identity;
-using Microsoft.AspNetCore.Mvc;
-using NutriMatch.Data;
-using NutriMatch.Models;
-using NutriMatch.Services;
-using System.ComponentModel.DataAnnotations;
-using Microsoft.EntityFrameworkCore;
-using System.Collections.Generic;
-using System.Linq;
-using System.Threading.Tasks;
-
-namespace NutriMatch.Controllers
-{
-     [Authorize]
-    public class MealPlanController : Controller
-    {
-        private readonly IMealPlanService _mealPlanService;
-        private readonly UserManager<User> _userManager;
-        private readonly AppDbContext _context;
-
-        public MealPlanController(IMealPlanService mealPlanService, UserManager<User> userManager, AppDbContext context)
-        {
-            _mealPlanService = mealPlanService;
-            _userManager = userManager;
-            _context = context;
-        }
-
-        public IActionResult Create()
-        {
-            return View();
-        }
-
-        [HttpPost]
-        [ValidateAntiForgeryToken]
-        public async Task<IActionResult> Create(MealPlanRequest model)
-        {
-            if (!ModelState.IsValid)
-            {
-                return View(model);
-            }
-
-            var user = await _userManager.GetUserAsync(User);
-            if (user == null)
-            {
-                return RedirectToAction("Login", "Account");
-            }
-
-            var result = await _mealPlanService.GenerateWeeklyMealPlanAsync(user.Id, model);
-
-            if (result.Success)
-            {
-                TempData["Success"] = "Weekly meal plan generated successfully!";
-                return RedirectToAction("Details", new { id = result.WeeklyMealPlan.Id });
-            }
-            else
-            {
-                ModelState.AddModelError("", result.ErrorMessage ?? "Failed to generate meal plan. Please try again.");
-                return View(model);
-            }
-        }
-
-        [HttpGet]
-        public async Task<IActionResult> Details(int id)
-        {
-            var user = await _userManager.GetUserAsync(User);
-            if (user == null)
-            {
-                return RedirectToAction("Login", "Account");
-            }
-
-            var mealPlan = await _mealPlanService.GetMealPlanByIdAsync(id, user.Id);
-            if (mealPlan == null)
-            {
-                TempData["Error"] = "Meal plan not found or you don't have access to it.";
-                return RedirectToAction("Index");
-            }
-
-            return View(mealPlan);
-        }
-
-        [HttpGet]
-        public async Task<IActionResult> Index()
-        {
-            var user = await _userManager.GetUserAsync(User);
-            if (user == null)
-            {
-                return RedirectToAction("Login", "Account");
-            }
-
-            var mealPlans = await _mealPlanService.GetUserMealPlansAsync(user.Id);
-            return View(mealPlans);
-        }
-
-        [HttpPost]
-        [ValidateAntiForgeryToken]
-        public async Task<IActionResult> Delete(int id)
-        {
-            var user = await _userManager.GetUserAsync(User);
-            if (user == null)
-            {
-                return RedirectToAction("Login", "Account");
-            }
-
-            var result = await _mealPlanService.DeleteMealPlanAsync(id, user.Id);
-
-            if (result)
-            {
-                TempData["Success"] = "Meal plan deleted successfully!";
-            }
-            else
-            {
-                TempData["Error"] = "Failed to delete meal plan. It may not exist or you don't have permission to delete it.";
-            }
-
-            return RedirectToAction("Index");
-        }
-
-        [HttpPost]
-        [ValidateAntiForgeryToken]
-        public async Task<IActionResult> RegenerateMeal(int mealSlotId, int mealPlanId)
-        {
-            var user = await _userManager.GetUserAsync(User);
-            if (user == null)
-            {
-                return Json(new { success = false, message = "User not authenticated" });
-            }
-
-            var result = await _mealPlanService.RegenerateMealSlotAsync(mealSlotId, user.Id);
-
-            if (result)
-            {
-                return Json(new { success = true, message = "Meal regenerated successfully!" });
-            }
-            else
-            {
-                return Json(new { success = false, message = "Failed to regenerate meal. Please try again." });
-            }
-        }
-
-
-        [HttpPost]
-        public async Task<JsonResult> MarkMealsAsViewed([FromQuery] int mealId)
-        {
-            try
-            {
-                var user = await _userManager.GetUserAsync(User);
-                if (user == null)
-                {
-                    return Json(new { success = false, message = "User not authenticated" });
-                }
-
-                var mealSlot = await _context.MealSlots
-                    .FirstOrDefaultAsync(ms => ms.Id == mealId);
-
-                if (mealSlot == null)
-                {
-                    return Json(new { success = false, message = "Meal not found" });
-                }
-
-                if (mealSlot.IsRegenerated == true && mealSlot.isViewed == false)
-                {
-                    mealSlot.isViewed = true;
-                    await _context.SaveChangesAsync();
-                }
-
-                return Json(new { success = true, message = "Meal marked as viewed" });
-            }
-            catch (Exception ex)
-            {
-                Console.WriteLine($"Error in MarkMealsAsViewed: {ex.Message}");
-                return Json(new { success = false, message = $"Error marking meal as viewed: {ex.Message}" });
-            }
-        }
-
-
-
-
-
-    }
-}
Index: triMatch/Controllers/NotificationsController.cs
===================================================================
--- NutriMatch/Controllers/NotificationsController.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,135 +1,0 @@
-using System.Security.Claims;
-using Microsoft.AspNetCore.Mvc;
-using NutriMatch.Models;
-using NutriMatch.Services;
-
-namespace NutriMatch.Controllers
-{
-    public class NotificationsController : Controller
-    {
-        private readonly INotificationService _notificationService;
-
-        public NotificationsController(INotificationService notificationService)
-        {
-            _notificationService = notificationService;
-        }
-
-        [HttpGet]
-        public async Task<JsonResult> GetNotifications()
-        {
-            var userId = User.FindFirstValue(ClaimTypes.NameIdentifier);
-            if (userId == null)
-                return Json(new { notifications = new List<Notification>(), unreadCount = 0 });
-
-            var (notifications, unreadCount) = await _notificationService.GetNotificationsAsync(userId);
-
-            return Json(new
-            {
-                notifications = notifications,
-                unreadCount = unreadCount
-            });
-        }
-
-        public async Task<ActionResult> NotificationPanel()
-        {
-            var userId = User.FindFirstValue(ClaimTypes.NameIdentifier);
-            if (userId == null)
-                return PartialView("_NotificationPanel", new List<Notification>());
-
-            var notifications = await _notificationService.GetAllNotificationsAsync(userId);
-
-            return PartialView("_NotificationPanel", notifications);
-        }
-
-        [HttpPost]
-        public async Task<JsonResult> MarkAsRead(int notificationId)
-        {
-            var userId = User.FindFirstValue(ClaimTypes.NameIdentifier);
-            if (userId == null)
-                return Json(new { success = false });
-
-            var (success, unreadCount) = await _notificationService.MarkAsReadAsync(notificationId, userId);
-
-            return Json(new { success = success, unreadCount = unreadCount });
-        }
-
-        [HttpPost]
-        public async Task<JsonResult> MarkAllAsRead()
-        {
-            var userId = User.FindFirstValue(ClaimTypes.NameIdentifier);
-            if (userId == null)
-                return Json(new { success = false });
-
-            var success = await _notificationService.MarkAllAsReadAsync(userId);
-
-            return Json(new { success = success, unreadCount = 0 });
-        }
-
-        [HttpPost]
-        public async Task<JsonResult> Delete(int notificationId)
-        {
-            var userId = User.FindFirstValue(ClaimTypes.NameIdentifier);
-            if (userId == null)
-                return Json(new { success = false });
-
-            var (success, unreadCount) = await _notificationService.DeleteAsync(notificationId, userId);
-
-            return Json(new { success = success, unreadCount = unreadCount });
-        }
-
-        [HttpPost]
-        public async Task<JsonResult> DeleteAll()
-        {
-            var userId = User.FindFirstValue(ClaimTypes.NameIdentifier);
-
-            var (success, message) = await _notificationService.DeleteAllAsync(userId);
-
-            return Json(new { success = success, message = message });
-        }
-
-        [HttpGet("/Notifications/Stream")]
-        public async Task Stream()
-        {
-            Response.Headers.Add("Content-Type", "text/event-stream");
-            Response.Headers.Add("Cache-Control", "no-cache");
-            Response.Headers.Add("Connection", "keep-alive");
-
-            var userId = User.FindFirstValue(ClaimTypes.NameIdentifier);
-            if (userId == null)
-                return;
-
-            var lastUnreadCount = await _notificationService.GetUnreadCountAsync(userId);
-
-            while (!HttpContext.RequestAborted.IsCancellationRequested)
-            {
-                var unreadCount = await _notificationService.GetUnreadCountAsync(userId);
-
-                if (unreadCount != lastUnreadCount)
-                {
-                    lastUnreadCount = unreadCount;
-
-                    var newNotification = await _notificationService.GetLatestNotificationAsync(userId);
-
-                    var payload = new
-                    {
-                        unreadCount,
-                        latestMessage = newNotification?.Message,
-                        createdAt = newNotification?.CreatedAt
-                    };
-
-                    var json = System.Text.Json.JsonSerializer.Serialize(payload);
-                    await Response.WriteAsync($"data: {json}\n\n");
-                    await Response.Body.FlushAsync();
-                }
-
-                await Task.Delay(3000);
-            }
-        }
-
-        [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
-        public IActionResult Error()
-        {
-            return View("Error!");
-        }
-    }
-}
Index: triMatch/Controllers/RecipesController.cs
===================================================================
--- NutriMatch/Controllers/RecipesController.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,376 +1,0 @@
-using Microsoft.AspNetCore.Mvc;
-using Microsoft.AspNetCore.Authorization;
-using System.Security.Claims;
-using System.Text.Json;
-using NutriMatch.Models;
-using NutriMatch.Services;
-
-namespace NutriMatch.Controllers
-{
-    public class MealKeywords
-    {
-        public List<string> Breakfast { get; set; }
-        public List<string> Main { get; set; }
-        public List<string> Snack { get; set; }
-    }
-
-    public class RecipesController : Controller
-    {
-        private readonly IMealPlanService _mealPlanService;
-        private readonly IRecipeService _recipeService;
-        private readonly IRatingService _ratingService;
-        private readonly IIngredientService _ingredientService;
-        private readonly IFileUploadService _fileUploadService;
-
-        public RecipesController(
-            IMealPlanService mealPlanService,
-            IRecipeService recipeService,
-            IRatingService ratingService,
-            IIngredientService ingredientService,
-            IFileUploadService fileUploadService)
-        {
-            _mealPlanService = mealPlanService;
-            _recipeService = recipeService;
-            _ratingService = ratingService;
-            _ingredientService = ingredientService;
-            _fileUploadService = fileUploadService;
-        }
-
-        public async Task<IActionResult> Index(int page = 1, int pageSize = 6)
-        {
-            var userId = User.FindFirstValue(ClaimTypes.NameIdentifier);
-
-            var (recipes, totalRecipes) = await _recipeService.GetPaginatedRecipesAsync(page, pageSize);
-            var favoriteRecipeIds = await _recipeService.GetUserFavoriteRecipeIdsAsync(userId);
-
-            if (Request.Headers["X-Requested-With"] == "XMLHttpRequest")
-            {
-                var response = new
-                {
-                    recipes = recipes.Select(recipe => new
-                    {
-                        Id = recipe.Id,
-                        Title = recipe.Title,
-                        ImageUrl = recipe.ImageUrl,
-                        Rating = recipe.Rating,
-                        UserName = recipe.User.UserName,
-                        CreatedAt = recipe.CreatedAt.ToString("MMM dd, yyyy"),
-                        Calories = recipe.Calories,
-                        Protein = recipe.Protein,
-                        Carbs = recipe.Carbs,
-                        Fat = recipe.Fat,
-                        IsOwner = recipe.User.Id == userId,
-                        IsFavorited = favoriteRecipeIds.Contains(recipe.Id)
-                    }),
-                    hasMorePages = (page * pageSize) < totalRecipes,
-                    currentPage = page,
-                    totalRecipes = totalRecipes
-                };
-
-                return Json(response);
-            }
-
-            ViewBag.FavoriteRecipeIds = favoriteRecipeIds;
-            ViewBag.userId = userId;
-            ViewBag.HasMorePages = (page * pageSize) < totalRecipes;
-            ViewBag.CurrentPage = page;
-            ViewBag.TotalRecipes = totalRecipes;
-
-            return View(recipes);
-        }
-
-        [Route("Recipes/Details/{id}")]
-        public async Task<IActionResult> Details(int? id, bool isOwner = false, string recipeDetailsDisplayContorol = "")
-        {
-            if (id == null)
-            {
-                return NotFound();
-            }
-
-            var recipe = await _recipeService.GetRecipeByIdAsync(id.Value);
-
-            if (recipe == null)
-            {
-                return NotFound();
-            }
-
-            if (recipeDetailsDisplayContorol == "Declined")
-            {
-                return PartialView("_RecipeDeclinePartial", recipe);
-            }
-
-            var userId = User.FindFirstValue(ClaimTypes.NameIdentifier);
-            bool actualIsOwner = !string.IsNullOrEmpty(userId) && recipe.UserId == userId;
-
-            var (averageRating, totalRatings, userRating, hasUserRated) =
-                await _recipeService.GetRatingDataAsync(id.Value, userId);
-
-            bool isFavorited = await _recipeService.IsRecipeFavoritedAsync(userId, id.Value);
-
-            if (recipeDetailsDisplayContorol == "Buttons")
-            {
-                ViewBag.AddAdminButtons = true;
-            }
-            else if (recipeDetailsDisplayContorol == "Index")
-            {
-                ViewBag.InIndex = true;
-            }
-
-            ViewBag.IsOwner = actualIsOwner;
-            ViewBag.AverageRating = averageRating;
-            ViewBag.TotalRatings = totalRatings;
-            ViewBag.UserRating = userRating;
-            ViewBag.HasUserRated = hasUserRated;
-            ViewBag.IsFavorited = isFavorited;
-
-            return PartialView("_RecipeDetailsPartial", recipe);
-        }
-
-        [Authorize]
-        public IActionResult Create()
-        {
-            return View();
-        }
-
-        [HttpPost]
-        [ValidateAntiForgeryToken]
-        public async Task<IActionResult> Create([Bind("Title,Instructions")] Recipe recipe)
-        {
-            if (!ModelState.IsValid)
-            {
-                return View(recipe);
-            }
-
-            var file = Request.Form.Files.GetFile("RecipeImage");
-            var imageUrl = await _fileUploadService.UploadImageAsync(file);
-
-            recipe.UserId = User.FindFirstValue(ClaimTypes.NameIdentifier);
-
-            string selectedIngredients = Request.Form["Ingredients"];
-            List<SelectedIngredient> ingredients = JsonSerializer.Deserialize<List<SelectedIngredient>>(selectedIngredients);
-
-            await _recipeService.CreateRecipeAsync(recipe, ingredients, imageUrl);
-
-            return RedirectToAction("MyRecipes");
-        }
-
-        [HttpGet]
-        public async Task<IActionResult> Edit(int? id, bool requiresChange = false)
-        {
-            if (id == null)
-            {
-                return NotFound();
-            }
-
-            var recipe = await _recipeService.GetRecipeByIdAsync(id.Value);
-
-            if (recipe == null)
-            {
-                return NotFound();
-            }
-
-            if (recipe.UserId != User.FindFirstValue(ClaimTypes.NameIdentifier))
-            {
-                return Forbid();
-            }
-
-            ViewBag.RequireChange = requiresChange;
-
-            return View(recipe);
-        }
-
-        [HttpPost]
-        [ValidateAntiForgeryToken]
-        public async Task<IActionResult> Edit([Bind("Id,Title,Instructions")] Recipe recipe)
-        {
-            if (!ModelState.IsValid)
-            {
-                return View(recipe);
-            }
-
-            var file = Request.Form.Files.GetFile("RecipeImage");
-            string imageUrl;
-
-            if (file != null && file.Length > 0)
-            {
-                imageUrl = await _fileUploadService.UploadImageAsync(file);
-            }
-            else
-            {
-                imageUrl = Request.Form["ExistingImageUrl"].ToString();
-            }
-
-            recipe.UserId = User.FindFirstValue(ClaimTypes.NameIdentifier);
-
-            string selectedIngredients = Request.Form["Ingredients"];
-            List<SelectedIngredient> ingredients = JsonSerializer.Deserialize<List<SelectedIngredient>>(selectedIngredients);
-
-            await _recipeService.UpdateRecipeAsync(recipe, ingredients, imageUrl);
-
-            return RedirectToAction(nameof(MyRecipes));
-        }
-
-        public async Task<IActionResult> Delete(int? id)
-        {
-            if (id == null)
-            {
-                return NotFound();
-            }
-
-            var recipe = await _recipeService.GetRecipeByIdAsync(id.Value);
-
-            if (recipe == null)
-            {
-                return NotFound();
-            }
-
-            return PartialView("_RecipeDeletePartial", recipe);
-        }
-
-        [HttpPost, ActionName("Delete")]
-        [ValidateAntiForgeryToken]
-        public async Task<IActionResult> DeleteConfirmed(int id)
-        {
-            var recipe = await _recipeService.GetRecipeByIdAsync(id);
-
-            if (recipe != null)
-            {
-                await _fileUploadService.DeleteImageAsync(recipe.ImageUrl);
-                await _mealPlanService.HandleDeletedRecipeAsync(id);
-                await _recipeService.DeleteRecipeAsync(id);
-            }
-
-            return RedirectToAction(nameof(Index));
-        }
-
-        public async Task<ActionResult<List<Ingredient>>> getSuggestions([FromQuery] string query)
-        {
-            var suggestions = await _ingredientService.GetIngredientSuggestionsAsync(query);
-            return suggestions;
-        }
-
-        public async Task<ActionResult> MyRecipes()
-        {
-            var userId = User.FindFirstValue(ClaimTypes.NameIdentifier);
-            var userRecipes = await _recipeService.GetUserRecipesAsync(userId);
-            var averageRating = await _recipeService.GetUserAverageRatingAsync(userId);
-
-            ViewBag.AverageRating = averageRating;
-
-            return View(userRecipes);
-        }
-
-        [HttpPost]
-        [Authorize]
-        public async Task<IActionResult> Rate([FromBody] JsonElement body)
-        {
-            int recipeId = body.GetProperty("recipeId").GetInt32();
-            double rating = body.GetProperty("rating").GetDouble();
-            var userId = User.FindFirstValue(ClaimTypes.NameIdentifier);
-
-            var (success, message, averageRating, totalRatings) = 
-                await _ratingService.AddOrUpdateRatingAsync(userId, recipeId, rating);
-
-            if (!success)
-            {
-                return Json(new { success = false, message });
-            }
-
-            return Json(new
-            {
-                success = true,
-                averageRating,
-                totalRatings,
-                message
-            });
-        }
-
-        [HttpPost]
-        [Authorize]
-        [ValidateAntiForgeryToken]
-        public async Task<IActionResult> RemoveRating([FromBody] JsonElement body)
-        {
-            int recipeId = body.GetProperty("recipeId").GetInt32();
-            var userId = User.FindFirstValue(ClaimTypes.NameIdentifier);
-
-            var (success, message, averageRating, totalRatings) = 
-                await _ratingService.RemoveRatingAsync(userId, recipeId);
-
-            if (!success)
-            {
-                return Json(new { success = false, message });
-            }
-
-            return Json(new
-            {
-                success = true,
-                averageRating,
-                totalRatings,
-                message
-            });
-        }
-
-        [HttpPost]
-        [ValidateAntiForgeryToken]
-        public async Task<IActionResult> ToggleFavorite([FromBody] JsonElement request)
-        {
-            var userId = User.FindFirstValue(ClaimTypes.NameIdentifier);
-            int recipeId = request.GetProperty("recipeId").GetInt32();
-
-            var (success, message, isFavorited) = 
-                await _recipeService.ToggleFavoriteAsync(userId, recipeId);
-
-            if (!success)
-            {
-                return Json(new { success = false, message });
-            }
-
-            return Json(new
-            {
-                success = true,
-                isFavorited,
-                message
-            });
-        }
-
-        [HttpPost]
-        public async Task<IActionResult> AddIngredient([FromBody] JsonElement request)
-        {
-            string name = request.GetProperty("Name").GetString();
-            float calories = request.GetProperty("Calories").GetSingle();
-            float protein = request.GetProperty("Protein").GetSingle();
-            float carbs = request.GetProperty("Carbs").GetSingle();
-            float fat = request.GetProperty("Fat").GetSingle();
-
-            var token = Request.Headers["RequestVerificationToken"].FirstOrDefault();
-            if (string.IsNullOrEmpty(token))
-            {
-                return BadRequest("Anti-forgery token missing.");
-            }
-
-            if (!ModelState.IsValid)
-            {
-                return BadRequest(ModelState);
-            }
-
-            var (success, message, ingredient) = 
-                await _ingredientService.AddIngredientAsync(name, calories, protein, carbs, fat);
-
-            if (!success)
-            {
-                return BadRequest(message);
-            }
-
-            return Json(new
-            {
-                id = ingredient.Id,
-                name = ingredient.Name,
-                calories = ingredient.Calories,
-                protein = ingredient.Protein,
-                carbs = ingredient.Carbs,
-                fat = ingredient.Fat,
-                success = true
-            });
-        }
-    }
-}
Index: triMatch/Controllers/RestaurantsController.cs
===================================================================
--- NutriMatch/Controllers/RestaurantsController.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,103 +1,0 @@
-using System.Collections.Generic;
-using System.Security.Claims;
-using System.Threading.Tasks;
-using Microsoft.AspNetCore.Authorization;
-using Microsoft.AspNetCore.Mvc;
-using NutriMatch.Models;
-using NutriMatch.Services;
-
-namespace NutriMatch.Controllers
-{
-    public class RestaurantsController : Controller
-    {
-        private readonly IRestaurantService _restaurantService;
-        private readonly IMealClassificationService _mealClassificationService;
-        private readonly IUserPreferenceService _userPreferenceService;
-
-        public RestaurantsController(
-            IRestaurantService restaurantService,
-            IMealClassificationService mealClassificationService,
-            IUserPreferenceService userPreferenceService)
-        {
-            _restaurantService = restaurantService;
-            _mealClassificationService = mealClassificationService;
-            _userPreferenceService = userPreferenceService;
-        }
-
-        public async Task<IActionResult> Index()
-        {
-            var restaurants = await _restaurantService.GetAllRestaurantsAsync();
-            return View(restaurants);
-        }
-
-        public async Task<IActionResult> GetRestaurantMeals(
-            int? id,
-            int? minCalories,
-            int? maxCalories,
-            int? minProtein,
-            int? maxProtein,
-            int? minCarbs,
-            int? maxCarbs,
-            int? minFat,
-            int? maxFat)
-        {
-            if (id == null)
-            {
-                return NotFound();
-            }
-
-            var (restaurant, filteredMeals) = await _restaurantService.GetRestaurantWithFilteredMealsAsync(
-                id.Value,
-                minCalories,
-                maxCalories,
-                minProtein,
-                maxProtein,
-                minCarbs,
-                maxCarbs,
-                minFat,
-                maxFat);
-
-            if (restaurant == null)
-            {
-                return NotFound();
-            }
-
-            ViewBag.RestaurantName = restaurant.Name;
-            return PartialView("_RestaurantMealsPartial", filteredMeals);
-        }
-
-        
-
-        [Authorize]
-        [HttpGet]
-        public async Task<IActionResult> GetUserPreferences()
-        {
-            var userId = User.FindFirstValue(ClaimTypes.NameIdentifier);
-            var (preferences, followedRestaurants) = await _userPreferenceService.GetUserPreferencesAsync(userId);
-
-            return Json(new { preferences, followedRestaurants });
-        }
-
-        [Authorize]
-        [HttpPost]
-        [ValidateAntiForgeryToken]
-        public async Task<IActionResult> UpdateTagPreferences([FromBody] List<UserMealPreference> preferences)
-        {
-            var userId = User.FindFirstValue(ClaimTypes.NameIdentifier);
-            await _userPreferenceService.UpdateTagPreferencesAsync(userId, preferences);
-
-            return Json(new { success = true });
-        }
-
-        [Authorize]
-        [HttpPost]
-        [ValidateAntiForgeryToken]
-        public async Task<IActionResult> ToggleFollowRestaurant([FromBody] int restaurantId)
-        {
-            var userId = User.FindFirstValue(ClaimTypes.NameIdentifier);
-            var (success, following) = await _userPreferenceService.ToggleFollowRestaurantAsync(userId, restaurantId);
-
-            return Json(new { success, following });
-        }
-    }
-}
Index: triMatch/Data/AppDbContext.cs
===================================================================
--- NutriMatch/Data/AppDbContext.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,85 +1,0 @@
-using Microsoft.EntityFrameworkCore;
-using NutriMatch.Models;
-
-using Microsoft.AspNetCore.Identity.EntityFrameworkCore;
-
-
-namespace NutriMatch.Data
-{
-    public class AppDbContext : IdentityDbContext<User>
-    {
-        public AppDbContext(DbContextOptions<AppDbContext> options) : base(options) { }
-
-        public DbSet<Recipe> Recipes { get; set; }
-        public DbSet<RecipeIngredient> RecipeIngredients { get; set; }
-
-        public DbSet<Ingredient> Ingredients { get; set; }
-
-        public DbSet<RestaurantMeal> RestaurantMeals { get; set; }
-
-        public DbSet<Restaurant> Restaurants { get; set; }
-
-        public DbSet<FavoriteRecipe> FavoriteRecipes { get; set; }
-
-        public DbSet<RecipeRating> RecipeRatings { get; set; }
-        public DbSet<WeeklyMealPlan> WeeklyMealPlans { get; set; }
-        public DbSet<MealSlot> MealSlots { get; set; }
-        
-        public DbSet<MealKeyword> MealKeywords { get; set; }
-
-        public DbSet<Notification> Notifications { get; set; }
-
-        public DbSet<UserMealPreference> UserMealPreferences { get; set; }
-        public DbSet<RestaurantFollowing> RestaurantFollowings { get; set; }
-
-        protected override void OnModelCreating(ModelBuilder modelBuilder)
-        {
-            base.OnModelCreating(modelBuilder);
-
-            modelBuilder.Entity<Recipe>()
-                .HasOne(r => r.User)
-                .WithMany(u => u.Recipes)
-                .HasForeignKey(r => r.UserId)
-                .OnDelete(DeleteBehavior.Cascade);
-
-            modelBuilder.Entity<FavoriteRecipe>()
-            .HasKey(fr => new { fr.UserId, fr.RecipeId });
-
-            modelBuilder.Entity<FavoriteRecipe>()
-                .HasOne(fr => fr.User)
-                .WithMany(u => u.FavoriteRecipes)
-                .HasForeignKey(fr => fr.UserId);
-
-            modelBuilder.Entity<FavoriteRecipe>()
-                .HasOne(fr => fr.Recipe)
-                .WithMany(r => r.FavoritedBy)
-                .HasForeignKey(fr => fr.RecipeId);
-
-            modelBuilder.Entity<RecipeRating>()
-            .HasIndex(rr => new { rr.UserId, rr.RecipeId })
-            .IsUnique();
-
-            modelBuilder.Entity<RecipeRating>()
-                .HasOne(rr => rr.User)
-                .WithMany(u => u.Ratings)
-                .HasForeignKey(rr => rr.UserId);
-
-            modelBuilder.Entity<RecipeRating>()
-                .HasOne(rr => rr.Recipe)
-                .WithMany(r => r.Ratings)
-                .HasForeignKey(rr => rr.RecipeId);
-
-            modelBuilder.Entity<UserMealPreference>()
-                .HasIndex(u => new { u.UserId, u.Tag })
-                .IsUnique();
-    
-            modelBuilder.Entity<RestaurantFollowing>()
-                .HasIndex(r => new { r.UserId, r.RestaurantId })
-                .IsUnique();
-
-        }
-    }
-
-   
-
-}
Index: triMatch/Data/DbInitializer.cs
===================================================================
--- NutriMatch/Data/DbInitializer.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,28 +1,0 @@
-using Microsoft.AspNetCore.Identity;
-using Microsoft.Extensions.DependencyInjection;
-using System;
-using System.Threading.Tasks;
-using NutriMatch.Models;
-public class DbInitializer
-{
-    public static async Task SeedRolesAsync(IServiceProvider serviceProvider)
-    {
-        var roleManager = serviceProvider.GetRequiredService<RoleManager<IdentityRole>>();
-        var userManager = serviceProvider.GetRequiredService<UserManager<User>>();
-        string[] roles = { "Admin", "User" };
-        foreach (var role in roles)
-        {
-            if (!await roleManager.RoleExistsAsync(role))
-                await roleManager.CreateAsync(new IdentityRole(role));
-        }
-        string adminEmail = "admin@nutrimatch.com";
-        string adminPassword = "Admin123!";
-        var adminUser = await userManager.FindByEmailAsync(adminEmail);
-        if (adminUser == null)
-        {
-            adminUser = new User { UserName = adminEmail, Email = adminEmail, EmailConfirmed = true };
-            await userManager.CreateAsync(adminUser, adminPassword);
-            await userManager.AddToRoleAsync(adminUser, "Admin");
-        }
-    }
-}
Index: triMatch/Migrations/20250605223011_InitialCreate.Designer.cs
===================================================================
--- NutriMatch/Migrations/20250605223011_InitialCreate.Designer.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,72 +1,0 @@
-﻿// <auto-generated />
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Migrations;
-using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
-using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
-using NutriMatch.Data;
-#nullable disable
-namespace NutriMatch.Migrations
-{
-    [DbContext(typeof(AppDbContext))]
-    [Migration("20250605223011_InitialCreate")]
-    partial class InitialCreate
-    {
-        protected override void BuildTargetModel(ModelBuilder modelBuilder)
-        {
-#pragma warning disable 612, 618
-            modelBuilder
-                .HasAnnotation("ProductVersion", "9.0.5")
-                .HasAnnotation("Relational:MaxIdentifierLength", 63);
-            NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
-            modelBuilder.Entity("NutriMatch.Models.Ingredient", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<float>("Quantity")
-                        .HasColumnType("real");
-                    b.Property<int?>("RecipeId")
-                        .HasColumnType("integer");
-                    b.Property<string>("Unit")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.HasIndex("RecipeId");
-                    b.ToTable("Ingredients");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<string>("Instructions")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<float>("Rating")
-                        .HasColumnType("real");
-                    b.Property<string>("Title")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.ToTable("Recipes");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Ingredient", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Recipe", null)
-                        .WithMany("Ingredients")
-                        .HasForeignKey("RecipeId");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.Navigation("Ingredients");
-                });
-#pragma warning restore 612, 618
-        }
-    }
-}
Index: triMatch/Migrations/20250605223011_InitialCreate.cs
===================================================================
--- NutriMatch/Migrations/20250605223011_InitialCreate.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,57 +1,0 @@
-﻿using Microsoft.EntityFrameworkCore.Migrations;
-using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
-#nullable disable
-namespace NutriMatch.Migrations
-{
-    public partial class InitialCreate : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.CreateTable(
-                name: "Recipes",
-                columns: table => new
-                {
-                    Id = table.Column<int>(type: "integer", nullable: false)
-                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
-                    Title = table.Column<string>(type: "text", nullable: false),
-                    Instructions = table.Column<string>(type: "text", nullable: false),
-                    Rating = table.Column<float>(type: "real", nullable: false)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_Recipes", x => x.Id);
-                });
-            migrationBuilder.CreateTable(
-                name: "Ingredients",
-                columns: table => new
-                {
-                    Id = table.Column<int>(type: "integer", nullable: false)
-                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
-                    Name = table.Column<string>(type: "text", nullable: false),
-                    Unit = table.Column<string>(type: "text", nullable: false),
-                    Quantity = table.Column<float>(type: "real", nullable: false),
-                    RecipeId = table.Column<int>(type: "integer", nullable: true)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_Ingredients", x => x.Id);
-                    table.ForeignKey(
-                        name: "FK_Ingredients_Recipes_RecipeId",
-                        column: x => x.RecipeId,
-                        principalTable: "Recipes",
-                        principalColumn: "Id");
-                });
-            migrationBuilder.CreateIndex(
-                name: "IX_Ingredients_RecipeId",
-                table: "Ingredients",
-                column: "RecipeId");
-        }
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropTable(
-                name: "Ingredients");
-            migrationBuilder.DropTable(
-                name: "Recipes");
-        }
-    }
-}
Index: triMatch/Migrations/20250610143316_AddRecipeIngredients.Designer.cs
===================================================================
--- NutriMatch/Migrations/20250610143316_AddRecipeIngredients.Designer.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,69 +1,0 @@
-﻿// <auto-generated />
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Migrations;
-using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
-using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
-using NutriMatch.Data;
-#nullable disable
-namespace NutriMatch.Migrations
-{
-    [DbContext(typeof(AppDbContext))]
-    [Migration("20250610143316_AddRecipeIngredients")]
-    partial class AddRecipeIngredients
-    {
-        protected override void BuildTargetModel(ModelBuilder modelBuilder)
-        {
-#pragma warning disable 612, 618
-            modelBuilder
-                .HasAnnotation("ProductVersion", "9.0.5")
-                .HasAnnotation("Relational:MaxIdentifierLength", 63);
-            NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<string>("Instructions")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<float>("Rating")
-                        .HasColumnType("real");
-                    b.Property<string>("Title")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.ToTable("Recipes");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RecipeIngredients", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<float>("Quantity")
-                        .HasColumnType("real");
-                    b.Property<int?>("RecipeId")
-                        .HasColumnType("integer");
-                    b.Property<string>("Unit")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.HasIndex("RecipeId");
-                    b.ToTable("RecipeIngredients");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RecipeIngredients", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Recipe", null)
-                        .WithMany("Ingredients")
-                        .HasForeignKey("RecipeId");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.Navigation("Ingredients");
-                });
-#pragma warning restore 612, 618
-        }
-    }
-}
Index: triMatch/Migrations/20250610143316_AddRecipeIngredients.cs
===================================================================
--- NutriMatch/Migrations/20250610143316_AddRecipeIngredients.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,64 +1,0 @@
-﻿using Microsoft.EntityFrameworkCore.Migrations;
-using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
-#nullable disable
-namespace NutriMatch.Migrations
-{
-    public partial class AddRecipeIngredients : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.CreateTable(
-                name: "RecipeIngredients",
-                columns: table => new
-                {
-                    Id = table.Column<int>(type: "integer", nullable: false)
-                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
-                    Unit = table.Column<string>(type: "text", nullable: false),
-                    Quantity = table.Column<float>(type: "real", nullable: false),
-                    RecipeId = table.Column<int>(type: "integer", nullable: true)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_RecipeIngredients", x => x.Id);
-                    table.ForeignKey(
-                        name: "FK_RecipeIngredients_Recipes_RecipeId",
-                        column: x => x.RecipeId,
-                        principalTable: "Recipes",
-                        principalColumn: "Id");
-                });
-            migrationBuilder.CreateIndex(
-                name: "IX_RecipeIngredients_RecipeId",
-                table: "RecipeIngredients",
-                column: "RecipeId");
-        }
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropTable(
-                name: "RecipeIngredients");
-            migrationBuilder.CreateTable(
-                name: "Ingredients",
-                columns: table => new
-                {
-                    Id = table.Column<int>(type: "integer", nullable: false)
-                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
-                    Name = table.Column<string>(type: "text", nullable: false),
-                    Quantity = table.Column<float>(type: "real", nullable: false),
-                    RecipeId = table.Column<int>(type: "integer", nullable: true),
-                    Unit = table.Column<string>(type: "text", nullable: false)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_Ingredients", x => x.Id);
-                    table.ForeignKey(
-                        name: "FK_Ingredients_Recipes_RecipeId",
-                        column: x => x.RecipeId,
-                        principalTable: "Recipes",
-                        principalColumn: "Id");
-                });
-            migrationBuilder.CreateIndex(
-                name: "IX_Ingredients_RecipeId",
-                table: "Ingredients",
-                column: "RecipeId");
-        }
-    }
-}
Index: triMatch/Migrations/20250610175720_AddIngredientTable.Designer.cs
===================================================================
--- NutriMatch/Migrations/20250610175720_AddIngredientTable.Designer.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,95 +1,0 @@
-﻿// <auto-generated />
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Migrations;
-using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
-using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
-using NutriMatch.Data;
-#nullable disable
-namespace NutriMatch.Migrations
-{
-    [DbContext(typeof(AppDbContext))]
-    [Migration("20250610175720_AddIngredientTable")]
-    partial class AddIngredientTable
-    {
-        protected override void BuildTargetModel(ModelBuilder modelBuilder)
-        {
-#pragma warning disable 612, 618
-            modelBuilder
-                .HasAnnotation("ProductVersion", "9.0.5")
-                .HasAnnotation("Relational:MaxIdentifierLength", 63);
-            NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
-            modelBuilder.Entity("NutriMatch.Models.Ingredient", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer")
-                        .HasColumnName("id");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<float>("Calories")
-                        .HasColumnType("real")
-                        .HasColumnName("energy_kcal");
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real")
-                        .HasColumnName("carbohydrates_g");
-                    b.Property<float>("Fat")
-                        .HasColumnType("real")
-                        .HasColumnName("total_fat_g");
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasColumnType("text")
-                        .HasColumnName("food_name");
-                    b.Property<float>("Protein")
-                        .HasColumnType("real")
-                        .HasColumnName("protein_g");
-                    b.HasKey("Id");
-                    b.ToTable("food_macronutrients", (string)null);
-                });
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<string>("Instructions")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<float>("Rating")
-                        .HasColumnType("real");
-                    b.Property<string>("Title")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.ToTable("Recipes");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RecipeIngredients", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<float>("Quantity")
-                        .HasColumnType("real");
-                    b.Property<int?>("RecipeId")
-                        .HasColumnType("integer");
-                    b.Property<string>("Unit")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.HasIndex("RecipeId");
-                    b.ToTable("RecipeIngredients");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RecipeIngredients", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Recipe", null)
-                        .WithMany("RecipeIngredients")
-                        .HasForeignKey("RecipeId");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.Navigation("RecipeIngredients");
-                });
-#pragma warning restore 612, 618
-        }
-    }
-}
Index: triMatch/Migrations/20250610175720_AddIngredientTable.cs
===================================================================
--- NutriMatch/Migrations/20250610175720_AddIngredientTable.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,17 +1,0 @@
-﻿using Microsoft.EntityFrameworkCore.Migrations;
-using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
-#nullable disable
-namespace NutriMatch.Migrations
-{
-    public partial class AddIngredientTable : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-        }
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropTable(
-                name: "food_macronutrients");
-        }
-    }
-}
Index: triMatch/Migrations/20250616162832_ChangeRecipeIngredient.Designer.cs
===================================================================
--- NutriMatch/Migrations/20250616162832_ChangeRecipeIngredient.Designer.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,106 +1,0 @@
-﻿// <auto-generated />
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Migrations;
-using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
-using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
-using NutriMatch.Data;
-#nullable disable
-namespace NutriMatch.Migrations
-{
-    [DbContext(typeof(AppDbContext))]
-    [Migration("20250616162832_ChangeRecipeIngredient")]
-    partial class ChangeRecipeIngredient
-    {
-        protected override void BuildTargetModel(ModelBuilder modelBuilder)
-        {
-#pragma warning disable 612, 618
-            modelBuilder
-                .HasAnnotation("ProductVersion", "9.0.5")
-                .HasAnnotation("Relational:MaxIdentifierLength", 63);
-            NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
-            modelBuilder.Entity("NutriMatch.Models.Ingredient", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer")
-                        .HasColumnName("id");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<float>("Calories")
-                        .HasColumnType("real")
-                        .HasColumnName("energy_kcal");
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real")
-                        .HasColumnName("carbohydrates_g");
-                    b.Property<float>("Fat")
-                        .HasColumnType("real")
-                        .HasColumnName("total_fat_g");
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasColumnType("text")
-                        .HasColumnName("food_name");
-                    b.Property<float>("Protein")
-                        .HasColumnType("real")
-                        .HasColumnName("protein_g");
-                    b.HasKey("Id");
-                    b.ToTable("food_macronutrients", (string)null);
-                });
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<string>("Instructions")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<float>("Rating")
-                        .HasColumnType("real");
-                    b.Property<string>("Title")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.ToTable("Recipes");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RecipeIngredients", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<int>("IngredientId")
-                        .HasColumnType("integer");
-                    b.Property<float>("Quantity")
-                        .HasColumnType("real");
-                    b.Property<int>("RecipeId")
-                        .HasColumnType("integer");
-                    b.Property<string>("Unit")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.HasIndex("IngredientId");
-                    b.HasIndex("RecipeId");
-                    b.ToTable("RecipeIngredients");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RecipeIngredients", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Ingredient", "Ingredient")
-                        .WithMany()
-                        .HasForeignKey("IngredientId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.HasOne("NutriMatch.Models.Recipe", null)
-                        .WithMany("RecipeIngredients")
-                        .HasForeignKey("RecipeId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.Navigation("Ingredient");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.Navigation("RecipeIngredients");
-                });
-#pragma warning restore 612, 618
-        }
-    }
-}
Index: triMatch/Migrations/20250616162832_ChangeRecipeIngredient.cs
===================================================================
--- NutriMatch/Migrations/20250616162832_ChangeRecipeIngredient.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,75 +1,0 @@
-﻿using Microsoft.EntityFrameworkCore.Migrations;
-#nullable disable
-namespace NutriMatch.Migrations
-{
-    public partial class ChangeRecipeIngredient : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropForeignKey(
-                name: "FK_RecipeIngredients_Recipes_RecipeId",
-                table: "RecipeIngredients");
-            migrationBuilder.AlterColumn<int>(
-                name: "RecipeId",
-                table: "RecipeIngredients",
-                type: "integer",
-                nullable: false,
-                defaultValue: 0,
-                oldClrType: typeof(int),
-                oldType: "integer",
-                oldNullable: true);
-            migrationBuilder.AddColumn<int>(
-                name: "IngredientId",
-                table: "RecipeIngredients",
-                type: "integer",
-                nullable: false,
-                defaultValue: 0);
-            migrationBuilder.CreateIndex(
-                name: "IX_RecipeIngredients_IngredientId",
-                table: "RecipeIngredients",
-                column: "IngredientId");
-            migrationBuilder.AddForeignKey(
-                name: "FK_RecipeIngredients_Recipes_RecipeId",
-                table: "RecipeIngredients",
-                column: "RecipeId",
-                principalTable: "Recipes",
-                principalColumn: "Id",
-                onDelete: ReferentialAction.Cascade);
-            migrationBuilder.AddForeignKey(
-                name: "FK_RecipeIngredients_food_macronutrients_IngredientId",
-                table: "RecipeIngredients",
-                column: "IngredientId",
-                principalTable: "food_macronutrients",
-                principalColumn: "id",
-                onDelete: ReferentialAction.Cascade);
-        }
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropForeignKey(
-                name: "FK_RecipeIngredients_Recipes_RecipeId",
-                table: "RecipeIngredients");
-            migrationBuilder.DropForeignKey(
-                name: "FK_RecipeIngredients_food_macronutrients_IngredientId",
-                table: "RecipeIngredients");
-            migrationBuilder.DropIndex(
-                name: "IX_RecipeIngredients_IngredientId",
-                table: "RecipeIngredients");
-            migrationBuilder.DropColumn(
-                name: "IngredientId",
-                table: "RecipeIngredients");
-            migrationBuilder.AlterColumn<int>(
-                name: "RecipeId",
-                table: "RecipeIngredients",
-                type: "integer",
-                nullable: true,
-                oldClrType: typeof(int),
-                oldType: "integer");
-            migrationBuilder.AddForeignKey(
-                name: "FK_RecipeIngredients_Recipes_RecipeId",
-                table: "RecipeIngredients",
-                column: "RecipeId",
-                principalTable: "Recipes",
-                principalColumn: "Id");
-        }
-    }
-}
Index: triMatch/Migrations/20250619201954_AddNutriInfoForRecipe.Designer.cs
===================================================================
--- NutriMatch/Migrations/20250619201954_AddNutriInfoForRecipe.Designer.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,114 +1,0 @@
-﻿// <auto-generated />
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Migrations;
-using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
-using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
-using NutriMatch.Data;
-#nullable disable
-namespace NutriMatch.Migrations
-{
-    [DbContext(typeof(AppDbContext))]
-    [Migration("20250619201954_AddNutriInfoForRecipe")]
-    partial class AddNutriInfoForRecipe
-    {
-        protected override void BuildTargetModel(ModelBuilder modelBuilder)
-        {
-#pragma warning disable 612, 618
-            modelBuilder
-                .HasAnnotation("ProductVersion", "9.0.5")
-                .HasAnnotation("Relational:MaxIdentifierLength", 63);
-            NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
-            modelBuilder.Entity("NutriMatch.Models.Ingredient", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer")
-                        .HasColumnName("id");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<float>("Calories")
-                        .HasColumnType("real")
-                        .HasColumnName("energy_kcal");
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real")
-                        .HasColumnName("carbohydrates_g");
-                    b.Property<float>("Fat")
-                        .HasColumnType("real")
-                        .HasColumnName("total_fat_g");
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasColumnType("text")
-                        .HasColumnName("food_name");
-                    b.Property<float>("Protein")
-                        .HasColumnType("real")
-                        .HasColumnName("protein_g");
-                    b.HasKey("Id");
-                    b.ToTable("food_macronutrients", (string)null);
-                });
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<float>("Calories")
-                        .HasColumnType("real");
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real");
-                    b.Property<float>("Fat")
-                        .HasColumnType("real");
-                    b.Property<string>("Instructions")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<float>("Protein")
-                        .HasColumnType("real");
-                    b.Property<float>("Rating")
-                        .HasColumnType("real");
-                    b.Property<string>("Title")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.ToTable("Recipes");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RecipeIngredient", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<int>("IngredientId")
-                        .HasColumnType("integer");
-                    b.Property<float>("Quantity")
-                        .HasColumnType("real");
-                    b.Property<int>("RecipeId")
-                        .HasColumnType("integer");
-                    b.Property<string>("Unit")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.HasIndex("IngredientId");
-                    b.HasIndex("RecipeId");
-                    b.ToTable("RecipeIngredients");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RecipeIngredient", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Ingredient", "Ingredient")
-                        .WithMany()
-                        .HasForeignKey("IngredientId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.HasOne("NutriMatch.Models.Recipe", null)
-                        .WithMany("RecipeIngredients")
-                        .HasForeignKey("RecipeId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.Navigation("Ingredient");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.Navigation("RecipeIngredients");
-                });
-#pragma warning restore 612, 618
-        }
-    }
-}
Index: triMatch/Migrations/20250619201954_AddNutriInfoForRecipe.cs
===================================================================
--- NutriMatch/Migrations/20250619201954_AddNutriInfoForRecipe.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,50 +1,0 @@
-﻿using Microsoft.EntityFrameworkCore.Migrations;
-#nullable disable
-namespace NutriMatch.Migrations
-{
-    public partial class AddNutriInfoForRecipe : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.AddColumn<float>(
-                name: "Calories",
-                table: "Recipes",
-                type: "real",
-                nullable: false,
-                defaultValue: 0f);
-            migrationBuilder.AddColumn<float>(
-                name: "Carbs",
-                table: "Recipes",
-                type: "real",
-                nullable: false,
-                defaultValue: 0f);
-            migrationBuilder.AddColumn<float>(
-                name: "Fat",
-                table: "Recipes",
-                type: "real",
-                nullable: false,
-                defaultValue: 0f);
-            migrationBuilder.AddColumn<float>(
-                name: "Protein",
-                table: "Recipes",
-                type: "real",
-                nullable: false,
-                defaultValue: 0f);
-        }
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropColumn(
-                name: "Calories",
-                table: "Recipes");
-            migrationBuilder.DropColumn(
-                name: "Carbs",
-                table: "Recipes");
-            migrationBuilder.DropColumn(
-                name: "Fat",
-                table: "Recipes");
-            migrationBuilder.DropColumn(
-                name: "Protein",
-                table: "Recipes");
-        }
-    }
-}
Index: triMatch/Migrations/20250621144429_AddRestaurantMeals.Designer.cs
===================================================================
--- NutriMatch/Migrations/20250621144429_AddRestaurantMeals.Designer.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,140 +1,0 @@
-﻿// <auto-generated />
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Migrations;
-using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
-using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
-using NutriMatch.Data;
-#nullable disable
-namespace NutriMatch.Migrations
-{
-    [DbContext(typeof(AppDbContext))]
-    [Migration("20250621144429_AddRestaurantMeals")]
-    partial class AddRestaurantMeals
-    {
-        protected override void BuildTargetModel(ModelBuilder modelBuilder)
-        {
-#pragma warning disable 612, 618
-            modelBuilder
-                .HasAnnotation("ProductVersion", "9.0.5")
-                .HasAnnotation("Relational:MaxIdentifierLength", 63);
-            NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
-            modelBuilder.Entity("NutriMatch.Models.Ingredient", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer")
-                        .HasColumnName("id");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<float>("Calories")
-                        .HasColumnType("real")
-                        .HasColumnName("energy_kcal");
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real")
-                        .HasColumnName("carbohydrates_g");
-                    b.Property<float>("Fat")
-                        .HasColumnType("real")
-                        .HasColumnName("total_fat_g");
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasColumnType("text")
-                        .HasColumnName("food_name");
-                    b.Property<float>("Protein")
-                        .HasColumnType("real")
-                        .HasColumnName("protein_g");
-                    b.HasKey("Id");
-                    b.ToTable("food_macronutrients", (string)null);
-                });
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<float>("Calories")
-                        .HasColumnType("real");
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real");
-                    b.Property<float>("Fat")
-                        .HasColumnType("real");
-                    b.Property<string>("Instructions")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<float>("Protein")
-                        .HasColumnType("real");
-                    b.Property<float>("Rating")
-                        .HasColumnType("real");
-                    b.Property<string>("Title")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.ToTable("Recipes");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RecipeIngredient", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<int>("IngredientId")
-                        .HasColumnType("integer");
-                    b.Property<float>("Quantity")
-                        .HasColumnType("real");
-                    b.Property<int>("RecipeId")
-                        .HasColumnType("integer");
-                    b.Property<string>("Unit")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.HasIndex("IngredientId");
-                    b.HasIndex("RecipeId");
-                    b.ToTable("RecipeIngredients");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RestaurantMeal", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<float>("Calories")
-                        .HasColumnType("real");
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real");
-                    b.Property<float>("Fat")
-                        .HasColumnType("real");
-                    b.Property<string>("ItemDescription")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<string>("ItemName")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<float>("Protein")
-                        .HasColumnType("real");
-                    b.Property<string>("Restaurant")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.ToTable("RestaurantMeals");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RecipeIngredient", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Ingredient", "Ingredient")
-                        .WithMany()
-                        .HasForeignKey("IngredientId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.HasOne("NutriMatch.Models.Recipe", null)
-                        .WithMany("RecipeIngredients")
-                        .HasForeignKey("RecipeId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.Navigation("Ingredient");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.Navigation("RecipeIngredients");
-                });
-#pragma warning restore 612, 618
-        }
-    }
-}
Index: triMatch/Migrations/20250621144429_AddRestaurantMeals.cs
===================================================================
--- NutriMatch/Migrations/20250621144429_AddRestaurantMeals.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,14 +1,0 @@
-﻿using Microsoft.EntityFrameworkCore.Migrations;
-#nullable disable
-namespace NutriMatch.Migrations
-{
-    public partial class AddRestaurantMeals : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-        }
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-        }
-    }
-}
Index: triMatch/Migrations/20250622130800_AddRecipeImage.Designer.cs
===================================================================
--- NutriMatch/Migrations/20250622130800_AddRecipeImage.Designer.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,143 +1,0 @@
-﻿// <auto-generated />
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Migrations;
-using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
-using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
-using NutriMatch.Data;
-#nullable disable
-namespace NutriMatch.Migrations
-{
-    [DbContext(typeof(AppDbContext))]
-    [Migration("20250622130800_AddRecipeImage")]
-    partial class AddRecipeImage
-    {
-        protected override void BuildTargetModel(ModelBuilder modelBuilder)
-        {
-#pragma warning disable 612, 618
-            modelBuilder
-                .HasAnnotation("ProductVersion", "9.0.5")
-                .HasAnnotation("Relational:MaxIdentifierLength", 63);
-            NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
-            modelBuilder.Entity("NutriMatch.Models.Ingredient", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer")
-                        .HasColumnName("id");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<float>("Calories")
-                        .HasColumnType("real")
-                        .HasColumnName("energy_kcal");
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real")
-                        .HasColumnName("carbohydrates_g");
-                    b.Property<float>("Fat")
-                        .HasColumnType("real")
-                        .HasColumnName("total_fat_g");
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasColumnType("text")
-                        .HasColumnName("food_name");
-                    b.Property<float>("Protein")
-                        .HasColumnType("real")
-                        .HasColumnName("protein_g");
-                    b.HasKey("Id");
-                    b.ToTable("food_macronutrients", (string)null);
-                });
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<float>("Calories")
-                        .HasColumnType("real");
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real");
-                    b.Property<float>("Fat")
-                        .HasColumnType("real");
-                    b.Property<string>("ImageUrl")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<string>("Instructions")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<float>("Protein")
-                        .HasColumnType("real");
-                    b.Property<float>("Rating")
-                        .HasColumnType("real");
-                    b.Property<string>("Title")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.ToTable("Recipes");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RecipeIngredient", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<int>("IngredientId")
-                        .HasColumnType("integer");
-                    b.Property<float>("Quantity")
-                        .HasColumnType("real");
-                    b.Property<int>("RecipeId")
-                        .HasColumnType("integer");
-                    b.Property<string>("Unit")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.HasIndex("IngredientId");
-                    b.HasIndex("RecipeId");
-                    b.ToTable("RecipeIngredients");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RestaurantMeal", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<float>("Calories")
-                        .HasColumnType("real");
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real");
-                    b.Property<float>("Fat")
-                        .HasColumnType("real");
-                    b.Property<string>("ItemDescription")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<string>("ItemName")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<float>("Protein")
-                        .HasColumnType("real");
-                    b.Property<string>("Restaurant")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.ToTable("RestaurantMeals");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RecipeIngredient", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Ingredient", "Ingredient")
-                        .WithMany()
-                        .HasForeignKey("IngredientId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.HasOne("NutriMatch.Models.Recipe", null)
-                        .WithMany("RecipeIngredients")
-                        .HasForeignKey("RecipeId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.Navigation("Ingredient");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.Navigation("RecipeIngredients");
-                });
-#pragma warning restore 612, 618
-        }
-    }
-}
Index: triMatch/Migrations/20250622130800_AddRecipeImage.cs
===================================================================
--- NutriMatch/Migrations/20250622130800_AddRecipeImage.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,23 +1,0 @@
-﻿using Microsoft.EntityFrameworkCore.Migrations;
-#nullable disable
-namespace NutriMatch.Migrations
-{
-    public partial class AddRecipeImage : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.AddColumn<string>(
-                name: "ImageUrl",
-                table: "Recipes",
-                type: "text",
-                nullable: false,
-                defaultValue: "");
-        }
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropColumn(
-                name: "ImageUrl",
-                table: "Recipes");
-        }
-    }
-}
Index: triMatch/Migrations/20250624141408_AddRestaurantModel.Designer.cs
===================================================================
--- NutriMatch/Migrations/20250624141408_AddRestaurantModel.Designer.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,158 +1,0 @@
-﻿// <auto-generated />
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Migrations;
-using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
-using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
-using NutriMatch.Data;
-#nullable disable
-namespace NutriMatch.Migrations
-{
-    [DbContext(typeof(AppDbContext))]
-    [Migration("20250624141408_AddRestaurantModel")]
-    partial class AddRestaurantModel
-    {
-        protected override void BuildTargetModel(ModelBuilder modelBuilder)
-        {
-#pragma warning disable 612, 618
-            modelBuilder
-                .HasAnnotation("ProductVersion", "9.0.5")
-                .HasAnnotation("Relational:MaxIdentifierLength", 63);
-            NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
-            modelBuilder.Entity("NutriMatch.Models.Ingredient", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer")
-                        .HasColumnName("id");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<float>("Calories")
-                        .HasColumnType("real")
-                        .HasColumnName("energy_kcal");
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real")
-                        .HasColumnName("carbohydrates_g");
-                    b.Property<float>("Fat")
-                        .HasColumnType("real")
-                        .HasColumnName("total_fat_g");
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasColumnType("text")
-                        .HasColumnName("food_name");
-                    b.Property<float>("Protein")
-                        .HasColumnType("real")
-                        .HasColumnName("protein_g");
-                    b.HasKey("Id");
-                    b.ToTable("food_macronutrients", (string)null);
-                });
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<float>("Calories")
-                        .HasColumnType("real");
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real");
-                    b.Property<float>("Fat")
-                        .HasColumnType("real");
-                    b.Property<string>("ImageUrl")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<string>("Instructions")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<float>("Protein")
-                        .HasColumnType("real");
-                    b.Property<float>("Rating")
-                        .HasColumnType("real");
-                    b.Property<string>("Title")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.ToTable("Recipes");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RecipeIngredient", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<int>("IngredientId")
-                        .HasColumnType("integer");
-                    b.Property<float>("Quantity")
-                        .HasColumnType("real");
-                    b.Property<int>("RecipeId")
-                        .HasColumnType("integer");
-                    b.Property<string>("Unit")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.HasIndex("IngredientId");
-                    b.HasIndex("RecipeId");
-                    b.ToTable("RecipeIngredients");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Restaurant", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<string>("ImageUrl")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.ToTable("Restaurants");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RestaurantMeal", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<float>("Calories")
-                        .HasColumnType("real");
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real");
-                    b.Property<float>("Fat")
-                        .HasColumnType("real");
-                    b.Property<string>("ItemDescription")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<string>("ItemName")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<float>("Protein")
-                        .HasColumnType("real");
-                    b.Property<string>("Restaurant")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.ToTable("RestaurantMeals");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RecipeIngredient", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Ingredient", "Ingredient")
-                        .WithMany()
-                        .HasForeignKey("IngredientId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.HasOne("NutriMatch.Models.Recipe", null)
-                        .WithMany("RecipeIngredients")
-                        .HasForeignKey("RecipeId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.Navigation("Ingredient");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.Navigation("RecipeIngredients");
-                });
-#pragma warning restore 612, 618
-        }
-    }
-}
Index: triMatch/Migrations/20250624141408_AddRestaurantModel.cs
===================================================================
--- NutriMatch/Migrations/20250624141408_AddRestaurantModel.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,30 +1,0 @@
-﻿using Microsoft.EntityFrameworkCore.Migrations;
-using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
-#nullable disable
-namespace NutriMatch.Migrations
-{
-    public partial class AddRestaurantModel : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.CreateTable(
-                name: "Restaurants",
-                columns: table => new
-                {
-                    Id = table.Column<int>(type: "integer", nullable: false)
-                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
-                    Name = table.Column<string>(type: "text", nullable: false),
-                    ImageUrl = table.Column<string>(type: "text", nullable: false)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_Restaurants", x => x.Id);
-                });
-        }
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropTable(
-                name: "Restaurants");
-        }
-    }
-}
Index: triMatch/Migrations/20250624151632_AddRestaurantMealRelationship.Designer.cs
===================================================================
--- NutriMatch/Migrations/20250624151632_AddRestaurantMealRelationship.Designer.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,172 +1,0 @@
-﻿// <auto-generated />
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Migrations;
-using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
-using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
-using NutriMatch.Data;
-#nullable disable
-namespace NutriMatch.Migrations
-{
-    [DbContext(typeof(AppDbContext))]
-    [Migration("20250624151632_AddRestaurantMealRelationship")]
-    partial class AddRestaurantMealRelationship
-    {
-        protected override void BuildTargetModel(ModelBuilder modelBuilder)
-        {
-#pragma warning disable 612, 618
-            modelBuilder
-                .HasAnnotation("ProductVersion", "9.0.5")
-                .HasAnnotation("Relational:MaxIdentifierLength", 63);
-            NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
-            modelBuilder.Entity("NutriMatch.Models.Ingredient", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer")
-                        .HasColumnName("id");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<float>("Calories")
-                        .HasColumnType("real")
-                        .HasColumnName("energy_kcal");
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real")
-                        .HasColumnName("carbohydrates_g");
-                    b.Property<float>("Fat")
-                        .HasColumnType("real")
-                        .HasColumnName("total_fat_g");
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasColumnType("text")
-                        .HasColumnName("food_name");
-                    b.Property<float>("Protein")
-                        .HasColumnType("real")
-                        .HasColumnName("protein_g");
-                    b.HasKey("Id");
-                    b.ToTable("food_macronutrients", (string)null);
-                });
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<float>("Calories")
-                        .HasColumnType("real");
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real");
-                    b.Property<float>("Fat")
-                        .HasColumnType("real");
-                    b.Property<string>("ImageUrl")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<string>("Instructions")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<float>("Protein")
-                        .HasColumnType("real");
-                    b.Property<float>("Rating")
-                        .HasColumnType("real");
-                    b.Property<string>("Title")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.ToTable("Recipes");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RecipeIngredient", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<int>("IngredientId")
-                        .HasColumnType("integer");
-                    b.Property<float>("Quantity")
-                        .HasColumnType("real");
-                    b.Property<int>("RecipeId")
-                        .HasColumnType("integer");
-                    b.Property<string>("Unit")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.HasIndex("IngredientId");
-                    b.HasIndex("RecipeId");
-                    b.ToTable("RecipeIngredients");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Restaurant", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<string>("ImageUrl")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.ToTable("Restaurants");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RestaurantMeal", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<float>("Calories")
-                        .HasColumnType("real");
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real");
-                    b.Property<float>("Fat")
-                        .HasColumnType("real");
-                    b.Property<string>("ItemDescription")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<string>("ItemName")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<float>("Protein")
-                        .HasColumnType("real");
-                    b.Property<int?>("RestaurantId")
-                        .HasColumnType("integer");
-                    b.Property<string>("RestaurantName")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.HasIndex("RestaurantId");
-                    b.ToTable("RestaurantMeals");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RecipeIngredient", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Ingredient", "Ingredient")
-                        .WithMany()
-                        .HasForeignKey("IngredientId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.HasOne("NutriMatch.Models.Recipe", null)
-                        .WithMany("RecipeIngredients")
-                        .HasForeignKey("RecipeId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.Navigation("Ingredient");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RestaurantMeal", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Restaurant", "Restaurant")
-                        .WithMany("RestaurantMeals")
-                        .HasForeignKey("RestaurantId");
-                    b.Navigation("Restaurant");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.Navigation("RecipeIngredients");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Restaurant", b =>
-                {
-                    b.Navigation("RestaurantMeals");
-                });
-#pragma warning restore 612, 618
-        }
-    }
-}
Index: triMatch/Migrations/20250624151632_AddRestaurantMealRelationship.cs
===================================================================
--- NutriMatch/Migrations/20250624151632_AddRestaurantMealRelationship.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,38 +1,0 @@
-﻿using Microsoft.EntityFrameworkCore.Migrations;
-#nullable disable
-namespace NutriMatch.Migrations
-{
-    public partial class AddRestaurantMealRelationship : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.AddColumn<int>(
-                name: "RestaurantId",
-                table: "RestaurantMeals",
-                type: "integer",
-                nullable: true);
-            migrationBuilder.CreateIndex(
-                name: "IX_RestaurantMeals_RestaurantId",
-                table: "RestaurantMeals",
-                column: "RestaurantId");
-            migrationBuilder.AddForeignKey(
-                name: "FK_RestaurantMeals_Restaurants_RestaurantId",
-                table: "RestaurantMeals",
-                column: "RestaurantId",
-                principalTable: "Restaurants",
-                principalColumn: "Id");
-        }
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropForeignKey(
-                name: "FK_RestaurantMeals_Restaurants_RestaurantId",
-                table: "RestaurantMeals");
-            migrationBuilder.DropIndex(
-                name: "IX_RestaurantMeals_RestaurantId",
-                table: "RestaurantMeals");
-            migrationBuilder.DropColumn(
-                name: "RestaurantId",
-                table: "RestaurantMeals");
-        }
-    }
-}
Index: triMatch/Migrations/20250624154122_AddRecipeInstructions.Designer.cs
===================================================================
--- NutriMatch/Migrations/20250624154122_AddRecipeInstructions.Designer.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,171 +1,0 @@
-﻿// <auto-generated />
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Migrations;
-using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
-using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
-using NutriMatch.Data;
-#nullable disable
-namespace NutriMatch.Migrations
-{
-    [DbContext(typeof(AppDbContext))]
-    [Migration("20250624154122_AddRecipeInstructions")]
-    partial class AddRecipeInstructions
-    {
-        protected override void BuildTargetModel(ModelBuilder modelBuilder)
-        {
-#pragma warning disable 612, 618
-            modelBuilder
-                .HasAnnotation("ProductVersion", "9.0.5")
-                .HasAnnotation("Relational:MaxIdentifierLength", 63);
-            NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
-            modelBuilder.Entity("NutriMatch.Models.Ingredient", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer")
-                        .HasColumnName("id");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<float>("Calories")
-                        .HasColumnType("real")
-                        .HasColumnName("energy_kcal");
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real")
-                        .HasColumnName("carbohydrates_g");
-                    b.Property<float>("Fat")
-                        .HasColumnType("real")
-                        .HasColumnName("total_fat_g");
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasColumnType("text")
-                        .HasColumnName("food_name");
-                    b.Property<float>("Protein")
-                        .HasColumnType("real")
-                        .HasColumnName("protein_g");
-                    b.HasKey("Id");
-                    b.ToTable("food_macronutrients", (string)null);
-                });
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<float>("Calories")
-                        .HasColumnType("real");
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real");
-                    b.Property<float>("Fat")
-                        .HasColumnType("real");
-                    b.Property<string>("ImageUrl")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.PrimitiveCollection<string[]>("Instructions")
-                        .HasColumnType("text[]");
-                    b.Property<float>("Protein")
-                        .HasColumnType("real");
-                    b.Property<float>("Rating")
-                        .HasColumnType("real");
-                    b.Property<string>("Title")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.ToTable("Recipes");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RecipeIngredient", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<int>("IngredientId")
-                        .HasColumnType("integer");
-                    b.Property<float>("Quantity")
-                        .HasColumnType("real");
-                    b.Property<int>("RecipeId")
-                        .HasColumnType("integer");
-                    b.Property<string>("Unit")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.HasIndex("IngredientId");
-                    b.HasIndex("RecipeId");
-                    b.ToTable("RecipeIngredients");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Restaurant", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<string>("ImageUrl")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.ToTable("Restaurants");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RestaurantMeal", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<float>("Calories")
-                        .HasColumnType("real");
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real");
-                    b.Property<float>("Fat")
-                        .HasColumnType("real");
-                    b.Property<string>("ItemDescription")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<string>("ItemName")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<float>("Protein")
-                        .HasColumnType("real");
-                    b.Property<int?>("RestaurantId")
-                        .HasColumnType("integer");
-                    b.Property<string>("RestaurantName")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.HasIndex("RestaurantId");
-                    b.ToTable("RestaurantMeals");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RecipeIngredient", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Ingredient", "Ingredient")
-                        .WithMany()
-                        .HasForeignKey("IngredientId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.HasOne("NutriMatch.Models.Recipe", null)
-                        .WithMany("RecipeIngredients")
-                        .HasForeignKey("RecipeId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.Navigation("Ingredient");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RestaurantMeal", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Restaurant", "Restaurant")
-                        .WithMany("RestaurantMeals")
-                        .HasForeignKey("RestaurantId");
-                    b.Navigation("Restaurant");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.Navigation("RecipeIngredients");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Restaurant", b =>
-                {
-                    b.Navigation("RestaurantMeals");
-                });
-#pragma warning restore 612, 618
-        }
-    }
-}
Index: triMatch/Migrations/20250624154122_AddRecipeInstructions.cs
===================================================================
--- NutriMatch/Migrations/20250624154122_AddRecipeInstructions.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,24 +1,0 @@
-﻿using Microsoft.EntityFrameworkCore.Migrations;
-#nullable disable
-namespace NutriMatch.Migrations
-{
-    public partial class AddRecipeInstructions : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.AddColumn<string[]>(
-                name: "Instructions",
-                table: "Recipes",
-                type: "text[]",
-                nullable: true
-                );
-        }
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropColumn(
-                name: "Instructions",
-                table: "Recipes"
-                );
-        }
-    }
-}
Index: triMatch/Migrations/20250627150936_AddRestaurantDesc.Designer.cs
===================================================================
--- NutriMatch/Migrations/20250627150936_AddRestaurantDesc.Designer.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,174 +1,0 @@
-﻿// <auto-generated />
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Migrations;
-using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
-using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
-using NutriMatch.Data;
-#nullable disable
-namespace NutriMatch.Migrations
-{
-    [DbContext(typeof(AppDbContext))]
-    [Migration("20250627150936_AddRestaurantDesc")]
-    partial class AddRestaurantDesc
-    {
-        protected override void BuildTargetModel(ModelBuilder modelBuilder)
-        {
-#pragma warning disable 612, 618
-            modelBuilder
-                .HasAnnotation("ProductVersion", "9.0.5")
-                .HasAnnotation("Relational:MaxIdentifierLength", 63);
-            NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
-            modelBuilder.Entity("NutriMatch.Models.Ingredient", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer")
-                        .HasColumnName("id");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<float>("Calories")
-                        .HasColumnType("real")
-                        .HasColumnName("energy_kcal");
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real")
-                        .HasColumnName("carbohydrates_g");
-                    b.Property<float>("Fat")
-                        .HasColumnType("real")
-                        .HasColumnName("total_fat_g");
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasColumnType("text")
-                        .HasColumnName("food_name");
-                    b.Property<float>("Protein")
-                        .HasColumnType("real")
-                        .HasColumnName("protein_g");
-                    b.HasKey("Id");
-                    b.ToTable("food_macronutrients", (string)null);
-                });
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<float>("Calories")
-                        .HasColumnType("real");
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real");
-                    b.Property<float>("Fat")
-                        .HasColumnType("real");
-                    b.Property<string>("ImageUrl")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.PrimitiveCollection<string[]>("Instructions")
-                        .HasColumnType("text[]");
-                    b.Property<float>("Protein")
-                        .HasColumnType("real");
-                    b.Property<float>("Rating")
-                        .HasColumnType("real");
-                    b.Property<string>("Title")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.ToTable("Recipes");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RecipeIngredient", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<int>("IngredientId")
-                        .HasColumnType("integer");
-                    b.Property<float>("Quantity")
-                        .HasColumnType("real");
-                    b.Property<int>("RecipeId")
-                        .HasColumnType("integer");
-                    b.Property<string>("Unit")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.HasIndex("IngredientId");
-                    b.HasIndex("RecipeId");
-                    b.ToTable("RecipeIngredients");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Restaurant", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<string>("Description")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<string>("ImageUrl")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.ToTable("Restaurants");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RestaurantMeal", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<float>("Calories")
-                        .HasColumnType("real");
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real");
-                    b.Property<float>("Fat")
-                        .HasColumnType("real");
-                    b.Property<string>("ItemDescription")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<string>("ItemName")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<float>("Protein")
-                        .HasColumnType("real");
-                    b.Property<int?>("RestaurantId")
-                        .HasColumnType("integer");
-                    b.Property<string>("RestaurantName")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.HasIndex("RestaurantId");
-                    b.ToTable("RestaurantMeals");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RecipeIngredient", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Ingredient", "Ingredient")
-                        .WithMany()
-                        .HasForeignKey("IngredientId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.HasOne("NutriMatch.Models.Recipe", null)
-                        .WithMany("RecipeIngredients")
-                        .HasForeignKey("RecipeId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.Navigation("Ingredient");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RestaurantMeal", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Restaurant", "Restaurant")
-                        .WithMany("RestaurantMeals")
-                        .HasForeignKey("RestaurantId");
-                    b.Navigation("Restaurant");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.Navigation("RecipeIngredients");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Restaurant", b =>
-                {
-                    b.Navigation("RestaurantMeals");
-                });
-#pragma warning restore 612, 618
-        }
-    }
-}
Index: triMatch/Migrations/20250627150936_AddRestaurantDesc.cs
===================================================================
--- NutriMatch/Migrations/20250627150936_AddRestaurantDesc.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,23 +1,0 @@
-﻿using Microsoft.EntityFrameworkCore.Migrations;
-#nullable disable
-namespace NutriMatch.Migrations
-{
-    public partial class AddRestaurantDesc : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.AddColumn<string>(
-                name: "Description",
-                table: "Restaurants",
-                type: "text",
-                nullable: false,
-                defaultValue: "");
-        }
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropColumn(
-                name: "Description",
-                table: "Restaurants");
-        }
-    }
-}
Index: triMatch/Migrations/20250708184458_ChangeIngredientsTable.Designer.cs
===================================================================
--- NutriMatch/Migrations/20250708184458_ChangeIngredientsTable.Designer.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,168 +1,0 @@
-﻿// <auto-generated />
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Migrations;
-using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
-using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
-using NutriMatch.Data;
-#nullable disable
-namespace NutriMatch.Migrations
-{
-    [DbContext(typeof(AppDbContext))]
-    [Migration("20250708184458_ChangeIngredientsTable")]
-    partial class ChangeIngredientsTable
-    {
-        protected override void BuildTargetModel(ModelBuilder modelBuilder)
-        {
-#pragma warning disable 612, 618
-            modelBuilder
-                .HasAnnotation("ProductVersion", "9.0.5")
-                .HasAnnotation("Relational:MaxIdentifierLength", 63);
-            NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
-            modelBuilder.Entity("NutriMatch.Models.Ingredient", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<float>("Calories")
-                        .HasColumnType("real");
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real");
-                    b.Property<float>("Fat")
-                        .HasColumnType("real");
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<float>("Protein")
-                        .HasColumnType("real");
-                    b.HasKey("Id");
-                    b.ToTable("Ingredients");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<float>("Calories")
-                        .HasColumnType("real");
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real");
-                    b.Property<float>("Fat")
-                        .HasColumnType("real");
-                    b.Property<string>("ImageUrl")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.PrimitiveCollection<string[]>("Instructions")
-                        .HasColumnType("text[]");
-                    b.Property<float>("Protein")
-                        .HasColumnType("real");
-                    b.Property<float>("Rating")
-                        .HasColumnType("real");
-                    b.Property<string>("Title")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.ToTable("Recipes");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RecipeIngredient", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<int>("IngredientId")
-                        .HasColumnType("integer");
-                    b.Property<float>("Quantity")
-                        .HasColumnType("real");
-                    b.Property<int>("RecipeId")
-                        .HasColumnType("integer");
-                    b.Property<string>("Unit")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.HasIndex("IngredientId");
-                    b.HasIndex("RecipeId");
-                    b.ToTable("RecipeIngredients");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Restaurant", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<string>("Description")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<string>("ImageUrl")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.ToTable("Restaurants");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RestaurantMeal", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<float>("Calories")
-                        .HasColumnType("real");
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real");
-                    b.Property<float>("Fat")
-                        .HasColumnType("real");
-                    b.Property<string>("ItemDescription")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<string>("ItemName")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<float>("Protein")
-                        .HasColumnType("real");
-                    b.Property<int?>("RestaurantId")
-                        .HasColumnType("integer");
-                    b.Property<string>("RestaurantName")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.HasIndex("RestaurantId");
-                    b.ToTable("RestaurantMeals");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RecipeIngredient", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Ingredient", "Ingredient")
-                        .WithMany()
-                        .HasForeignKey("IngredientId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.HasOne("NutriMatch.Models.Recipe", null)
-                        .WithMany("RecipeIngredients")
-                        .HasForeignKey("RecipeId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.Navigation("Ingredient");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RestaurantMeal", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Restaurant", "Restaurant")
-                        .WithMany("RestaurantMeals")
-                        .HasForeignKey("RestaurantId");
-                    b.Navigation("Restaurant");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.Navigation("RecipeIngredients");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Restaurant", b =>
-                {
-                    b.Navigation("RestaurantMeals");
-                });
-#pragma warning restore 612, 618
-        }
-    }
-}
Index: triMatch/Migrations/20250708184458_ChangeIngredientsTable.cs
===================================================================
--- NutriMatch/Migrations/20250708184458_ChangeIngredientsTable.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,14 +1,0 @@
-﻿using Microsoft.EntityFrameworkCore.Migrations;
-#nullable disable
-namespace NutriMatch.Migrations
-{
-    public partial class ChangeIngredientsTable : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-        }
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-        }
-    }
-}
Index: triMatch/Migrations/20250721154024_Identity.Designer.cs
===================================================================
--- NutriMatch/Migrations/20250721154024_Identity.Designer.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,354 +1,0 @@
-﻿// <auto-generated />
-using System;
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Migrations;
-using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
-using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
-using NutriMatch.Data;
-#nullable disable
-namespace NutriMatch.Migrations
-{
-    [DbContext(typeof(AppDbContext))]
-    [Migration("20250721154024_Identity")]
-    partial class Identity
-    {
-        protected override void BuildTargetModel(ModelBuilder modelBuilder)
-        {
-#pragma warning disable 612, 618
-            modelBuilder
-                .HasAnnotation("ProductVersion", "9.0.7")
-                .HasAnnotation("Relational:MaxIdentifierLength", 63);
-            NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b =>
-                {
-                    b.Property<string>("Id")
-                        .HasColumnType("text");
-                    b.Property<string>("ConcurrencyStamp")
-                        .IsConcurrencyToken()
-                        .HasColumnType("text");
-                    b.Property<string>("Name")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-                    b.Property<string>("NormalizedName")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-                    b.HasKey("Id");
-                    b.HasIndex("NormalizedName")
-                        .IsUnique()
-                        .HasDatabaseName("RoleNameIndex");
-                    b.ToTable("AspNetRoles", (string)null);
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim<string>", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<string>("ClaimType")
-                        .HasColumnType("text");
-                    b.Property<string>("ClaimValue")
-                        .HasColumnType("text");
-                    b.Property<string>("RoleId")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.HasIndex("RoleId");
-                    b.ToTable("AspNetRoleClaims", (string)null);
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim<string>", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<string>("ClaimType")
-                        .HasColumnType("text");
-                    b.Property<string>("ClaimValue")
-                        .HasColumnType("text");
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.HasIndex("UserId");
-                    b.ToTable("AspNetUserClaims", (string)null);
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin<string>", b =>
-                {
-                    b.Property<string>("LoginProvider")
-                        .HasMaxLength(128)
-                        .HasColumnType("character varying(128)");
-                    b.Property<string>("ProviderKey")
-                        .HasMaxLength(128)
-                        .HasColumnType("character varying(128)");
-                    b.Property<string>("ProviderDisplayName")
-                        .HasColumnType("text");
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("LoginProvider", "ProviderKey");
-                    b.HasIndex("UserId");
-                    b.ToTable("AspNetUserLogins", (string)null);
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole<string>", b =>
-                {
-                    b.Property<string>("UserId")
-                        .HasColumnType("text");
-                    b.Property<string>("RoleId")
-                        .HasColumnType("text");
-                    b.HasKey("UserId", "RoleId");
-                    b.HasIndex("RoleId");
-                    b.ToTable("AspNetUserRoles", (string)null);
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken<string>", b =>
-                {
-                    b.Property<string>("UserId")
-                        .HasColumnType("text");
-                    b.Property<string>("LoginProvider")
-                        .HasMaxLength(128)
-                        .HasColumnType("character varying(128)");
-                    b.Property<string>("Name")
-                        .HasMaxLength(128)
-                        .HasColumnType("character varying(128)");
-                    b.Property<string>("Value")
-                        .HasColumnType("text");
-                    b.HasKey("UserId", "LoginProvider", "Name");
-                    b.ToTable("AspNetUserTokens", (string)null);
-                });
-            modelBuilder.Entity("NutriMatch.Models.Ingredient", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<float>("Calories")
-                        .HasColumnType("real");
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real");
-                    b.Property<float>("Fat")
-                        .HasColumnType("real");
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<float>("Protein")
-                        .HasColumnType("real");
-                    b.HasKey("Id");
-                    b.ToTable("Ingredients");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<float>("Calories")
-                        .HasColumnType("real");
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real");
-                    b.Property<float>("Fat")
-                        .HasColumnType("real");
-                    b.Property<string>("ImageUrl")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.PrimitiveCollection<string[]>("Instructions")
-                        .HasColumnType("text[]");
-                    b.Property<float>("Protein")
-                        .HasColumnType("real");
-                    b.Property<float>("Rating")
-                        .HasColumnType("real");
-                    b.Property<string>("Title")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.ToTable("Recipes");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RecipeIngredient", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<int>("IngredientId")
-                        .HasColumnType("integer");
-                    b.Property<float>("Quantity")
-                        .HasColumnType("real");
-                    b.Property<int>("RecipeId")
-                        .HasColumnType("integer");
-                    b.Property<string>("Unit")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.HasIndex("IngredientId");
-                    b.HasIndex("RecipeId");
-                    b.ToTable("RecipeIngredients");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Restaurant", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<string>("Description")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<string>("ImageUrl")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.ToTable("Restaurants");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RestaurantMeal", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<float>("Calories")
-                        .HasColumnType("real");
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real");
-                    b.Property<float>("Fat")
-                        .HasColumnType("real");
-                    b.Property<string>("ItemDescription")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<string>("ItemName")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<float>("Protein")
-                        .HasColumnType("real");
-                    b.Property<int?>("RestaurantId")
-                        .HasColumnType("integer");
-                    b.Property<string>("RestaurantName")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.HasIndex("RestaurantId");
-                    b.ToTable("RestaurantMeals");
-                });
-            modelBuilder.Entity("NutriMatch.Models.User", b =>
-                {
-                    b.Property<string>("Id")
-                        .HasColumnType("text");
-                    b.Property<int>("AccessFailedCount")
-                        .HasColumnType("integer");
-                    b.Property<string>("ConcurrencyStamp")
-                        .IsConcurrencyToken()
-                        .HasColumnType("text");
-                    b.Property<string>("Email")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-                    b.Property<bool>("EmailConfirmed")
-                        .HasColumnType("boolean");
-                    b.Property<bool>("LockoutEnabled")
-                        .HasColumnType("boolean");
-                    b.Property<DateTimeOffset?>("LockoutEnd")
-                        .HasColumnType("timestamp with time zone");
-                    b.Property<string>("NormalizedEmail")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-                    b.Property<string>("NormalizedUserName")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-                    b.Property<string>("PasswordHash")
-                        .HasColumnType("text");
-                    b.Property<string>("PhoneNumber")
-                        .HasColumnType("text");
-                    b.Property<bool>("PhoneNumberConfirmed")
-                        .HasColumnType("boolean");
-                    b.Property<string>("SecurityStamp")
-                        .HasColumnType("text");
-                    b.Property<bool>("TwoFactorEnabled")
-                        .HasColumnType("boolean");
-                    b.Property<string>("UserName")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-                    b.HasKey("Id");
-                    b.HasIndex("NormalizedEmail")
-                        .HasDatabaseName("EmailIndex");
-                    b.HasIndex("NormalizedUserName")
-                        .IsUnique()
-                        .HasDatabaseName("UserNameIndex");
-                    b.ToTable("AspNetUsers", (string)null);
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim<string>", b =>
-                {
-                    b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null)
-                        .WithMany()
-                        .HasForeignKey("RoleId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim<string>", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", null)
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin<string>", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", null)
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole<string>", b =>
-                {
-                    b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null)
-                        .WithMany()
-                        .HasForeignKey("RoleId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.HasOne("NutriMatch.Models.User", null)
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken<string>", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", null)
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-            modelBuilder.Entity("NutriMatch.Models.RecipeIngredient", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Ingredient", "Ingredient")
-                        .WithMany()
-                        .HasForeignKey("IngredientId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.HasOne("NutriMatch.Models.Recipe", null)
-                        .WithMany("RecipeIngredients")
-                        .HasForeignKey("RecipeId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.Navigation("Ingredient");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RestaurantMeal", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Restaurant", "Restaurant")
-                        .WithMany("RestaurantMeals")
-                        .HasForeignKey("RestaurantId");
-                    b.Navigation("Restaurant");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.Navigation("RecipeIngredients");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Restaurant", b =>
-                {
-                    b.Navigation("RestaurantMeals");
-                });
-#pragma warning restore 612, 618
-        }
-    }
-}
Index: triMatch/Migrations/20250721154024_Identity.cs
===================================================================
--- NutriMatch/Migrations/20250721154024_Identity.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,198 +1,0 @@
-﻿using System;
-using Microsoft.EntityFrameworkCore.Migrations;
-using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
-#nullable disable
-namespace NutriMatch.Migrations
-{
-    public partial class Identity : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.CreateTable(
-                name: "AspNetRoles",
-                columns: table => new
-                {
-                    Id = table.Column<string>(type: "text", nullable: false),
-                    Name = table.Column<string>(type: "character varying(256)", maxLength: 256, nullable: true),
-                    NormalizedName = table.Column<string>(type: "character varying(256)", maxLength: 256, nullable: true),
-                    ConcurrencyStamp = table.Column<string>(type: "text", nullable: true)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_AspNetRoles", x => x.Id);
-                });
-            migrationBuilder.CreateTable(
-                name: "AspNetUsers",
-                columns: table => new
-                {
-                    Id = table.Column<string>(type: "text", nullable: false),
-                    UserName = table.Column<string>(type: "character varying(256)", maxLength: 256, nullable: true),
-                    NormalizedUserName = table.Column<string>(type: "character varying(256)", maxLength: 256, nullable: true),
-                    Email = table.Column<string>(type: "character varying(256)", maxLength: 256, nullable: true),
-                    NormalizedEmail = table.Column<string>(type: "character varying(256)", maxLength: 256, nullable: true),
-                    EmailConfirmed = table.Column<bool>(type: "boolean", nullable: false),
-                    PasswordHash = table.Column<string>(type: "text", nullable: true),
-                    SecurityStamp = table.Column<string>(type: "text", nullable: true),
-                    ConcurrencyStamp = table.Column<string>(type: "text", nullable: true),
-                    PhoneNumber = table.Column<string>(type: "text", nullable: true),
-                    PhoneNumberConfirmed = table.Column<bool>(type: "boolean", nullable: false),
-                    TwoFactorEnabled = table.Column<bool>(type: "boolean", nullable: false),
-                    LockoutEnd = table.Column<DateTimeOffset>(type: "timestamp with time zone", nullable: true),
-                    LockoutEnabled = table.Column<bool>(type: "boolean", nullable: false),
-                    AccessFailedCount = table.Column<int>(type: "integer", nullable: false)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_AspNetUsers", x => x.Id);
-                });
-            migrationBuilder.CreateTable(
-                name: "AspNetRoleClaims",
-                columns: table => new
-                {
-                    Id = table.Column<int>(type: "integer", nullable: false)
-                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
-                    RoleId = table.Column<string>(type: "text", nullable: false),
-                    ClaimType = table.Column<string>(type: "text", nullable: true),
-                    ClaimValue = table.Column<string>(type: "text", nullable: true)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_AspNetRoleClaims", x => x.Id);
-                    table.ForeignKey(
-                        name: "FK_AspNetRoleClaims_AspNetRoles_RoleId",
-                        column: x => x.RoleId,
-                        principalTable: "AspNetRoles",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Cascade);
-                });
-            migrationBuilder.CreateTable(
-                name: "AspNetUserClaims",
-                columns: table => new
-                {
-                    Id = table.Column<int>(type: "integer", nullable: false)
-                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
-                    UserId = table.Column<string>(type: "text", nullable: false),
-                    ClaimType = table.Column<string>(type: "text", nullable: true),
-                    ClaimValue = table.Column<string>(type: "text", nullable: true)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_AspNetUserClaims", x => x.Id);
-                    table.ForeignKey(
-                        name: "FK_AspNetUserClaims_AspNetUsers_UserId",
-                        column: x => x.UserId,
-                        principalTable: "AspNetUsers",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Cascade);
-                });
-            migrationBuilder.CreateTable(
-                name: "AspNetUserLogins",
-                columns: table => new
-                {
-                    LoginProvider = table.Column<string>(type: "character varying(128)", maxLength: 128, nullable: false),
-                    ProviderKey = table.Column<string>(type: "character varying(128)", maxLength: 128, nullable: false),
-                    ProviderDisplayName = table.Column<string>(type: "text", nullable: true),
-                    UserId = table.Column<string>(type: "text", nullable: false)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_AspNetUserLogins", x => new { x.LoginProvider, x.ProviderKey });
-                    table.ForeignKey(
-                        name: "FK_AspNetUserLogins_AspNetUsers_UserId",
-                        column: x => x.UserId,
-                        principalTable: "AspNetUsers",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Cascade);
-                });
-            migrationBuilder.CreateTable(
-                name: "AspNetUserRoles",
-                columns: table => new
-                {
-                    UserId = table.Column<string>(type: "text", nullable: false),
-                    RoleId = table.Column<string>(type: "text", nullable: false)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_AspNetUserRoles", x => new { x.UserId, x.RoleId });
-                    table.ForeignKey(
-                        name: "FK_AspNetUserRoles_AspNetRoles_RoleId",
-                        column: x => x.RoleId,
-                        principalTable: "AspNetRoles",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Cascade);
-                    table.ForeignKey(
-                        name: "FK_AspNetUserRoles_AspNetUsers_UserId",
-                        column: x => x.UserId,
-                        principalTable: "AspNetUsers",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Cascade);
-                });
-            migrationBuilder.CreateTable(
-                name: "AspNetUserTokens",
-                columns: table => new
-                {
-                    UserId = table.Column<string>(type: "text", nullable: false),
-                    LoginProvider = table.Column<string>(type: "character varying(128)", maxLength: 128, nullable: false),
-                    Name = table.Column<string>(type: "character varying(128)", maxLength: 128, nullable: false),
-                    Value = table.Column<string>(type: "text", nullable: true)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_AspNetUserTokens", x => new { x.UserId, x.LoginProvider, x.Name });
-                    table.ForeignKey(
-                        name: "FK_AspNetUserTokens_AspNetUsers_UserId",
-                        column: x => x.UserId,
-                        principalTable: "AspNetUsers",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Cascade);
-                });
-            migrationBuilder.CreateIndex(
-                name: "IX_AspNetRoleClaims_RoleId",
-                table: "AspNetRoleClaims",
-                column: "RoleId");
-            migrationBuilder.CreateIndex(
-                name: "RoleNameIndex",
-                table: "AspNetRoles",
-                column: "NormalizedName",
-                unique: true);
-            migrationBuilder.CreateIndex(
-                name: "IX_AspNetUserClaims_UserId",
-                table: "AspNetUserClaims",
-                column: "UserId");
-            migrationBuilder.CreateIndex(
-                name: "IX_AspNetUserLogins_UserId",
-                table: "AspNetUserLogins",
-                column: "UserId");
-            migrationBuilder.CreateIndex(
-                name: "IX_AspNetUserRoles_RoleId",
-                table: "AspNetUserRoles",
-                column: "RoleId");
-            migrationBuilder.CreateIndex(
-                name: "EmailIndex",
-                table: "AspNetUsers",
-                column: "NormalizedEmail");
-            migrationBuilder.CreateIndex(
-                name: "UserNameIndex",
-                table: "AspNetUsers",
-                column: "NormalizedUserName",
-                unique: true);
-        }
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropTable(
-                name: "AspNetRoleClaims");
-            migrationBuilder.DropTable(
-                name: "AspNetUserClaims");
-            migrationBuilder.DropTable(
-                name: "AspNetUserLogins");
-            migrationBuilder.DropTable(
-                name: "AspNetUserRoles");
-            migrationBuilder.DropTable(
-                name: "AspNetUserTokens");
-            migrationBuilder.DropTable(
-                name: "AspNetRoles");
-            migrationBuilder.DropTable(
-                name: "AspNetUsers");
-        }
-    }
-}
Index: triMatch/Migrations/20250802174947_AddUserRecipeRelation.Designer.cs
===================================================================
--- NutriMatch/Migrations/20250802174947_AddUserRecipeRelation.Designer.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,374 +1,0 @@
-﻿// <auto-generated />
-using System;
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Migrations;
-using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
-using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
-using NutriMatch.Data;
-#nullable disable
-namespace NutriMatch.Migrations
-{
-    [DbContext(typeof(AppDbContext))]
-    [Migration("20250802174947_AddUserRecipeRelation")]
-    partial class AddUserRecipeRelation
-    {
-        protected override void BuildTargetModel(ModelBuilder modelBuilder)
-        {
-#pragma warning disable 612, 618
-            modelBuilder
-                .HasAnnotation("ProductVersion", "9.0.7")
-                .HasAnnotation("Relational:MaxIdentifierLength", 63);
-            NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b =>
-                {
-                    b.Property<string>("Id")
-                        .HasColumnType("text");
-                    b.Property<string>("ConcurrencyStamp")
-                        .IsConcurrencyToken()
-                        .HasColumnType("text");
-                    b.Property<string>("Name")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-                    b.Property<string>("NormalizedName")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-                    b.HasKey("Id");
-                    b.HasIndex("NormalizedName")
-                        .IsUnique()
-                        .HasDatabaseName("RoleNameIndex");
-                    b.ToTable("AspNetRoles", (string)null);
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim<string>", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<string>("ClaimType")
-                        .HasColumnType("text");
-                    b.Property<string>("ClaimValue")
-                        .HasColumnType("text");
-                    b.Property<string>("RoleId")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.HasIndex("RoleId");
-                    b.ToTable("AspNetRoleClaims", (string)null);
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim<string>", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<string>("ClaimType")
-                        .HasColumnType("text");
-                    b.Property<string>("ClaimValue")
-                        .HasColumnType("text");
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.HasIndex("UserId");
-                    b.ToTable("AspNetUserClaims", (string)null);
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin<string>", b =>
-                {
-                    b.Property<string>("LoginProvider")
-                        .HasMaxLength(128)
-                        .HasColumnType("character varying(128)");
-                    b.Property<string>("ProviderKey")
-                        .HasMaxLength(128)
-                        .HasColumnType("character varying(128)");
-                    b.Property<string>("ProviderDisplayName")
-                        .HasColumnType("text");
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("LoginProvider", "ProviderKey");
-                    b.HasIndex("UserId");
-                    b.ToTable("AspNetUserLogins", (string)null);
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole<string>", b =>
-                {
-                    b.Property<string>("UserId")
-                        .HasColumnType("text");
-                    b.Property<string>("RoleId")
-                        .HasColumnType("text");
-                    b.HasKey("UserId", "RoleId");
-                    b.HasIndex("RoleId");
-                    b.ToTable("AspNetUserRoles", (string)null);
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken<string>", b =>
-                {
-                    b.Property<string>("UserId")
-                        .HasColumnType("text");
-                    b.Property<string>("LoginProvider")
-                        .HasMaxLength(128)
-                        .HasColumnType("character varying(128)");
-                    b.Property<string>("Name")
-                        .HasMaxLength(128)
-                        .HasColumnType("character varying(128)");
-                    b.Property<string>("Value")
-                        .HasColumnType("text");
-                    b.HasKey("UserId", "LoginProvider", "Name");
-                    b.ToTable("AspNetUserTokens", (string)null);
-                });
-            modelBuilder.Entity("NutriMatch.Models.Ingredient", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<float>("Calories")
-                        .HasColumnType("real");
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real");
-                    b.Property<float>("Fat")
-                        .HasColumnType("real");
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<float>("Protein")
-                        .HasColumnType("real");
-                    b.HasKey("Id");
-                    b.ToTable("Ingredients");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<float>("Calories")
-                        .HasColumnType("real");
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real");
-                    b.Property<float>("Fat")
-                        .HasColumnType("real");
-                    b.Property<string>("ImageUrl")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.PrimitiveCollection<string[]>("Instructions")
-                        .HasColumnType("text[]");
-                    b.Property<float>("Protein")
-                        .HasColumnType("real");
-                    b.Property<float>("Rating")
-                        .HasColumnType("real");
-                    b.Property<string>("Title")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.HasIndex("UserId");
-                    b.ToTable("Recipes");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RecipeIngredient", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<int>("IngredientId")
-                        .HasColumnType("integer");
-                    b.Property<float>("Quantity")
-                        .HasColumnType("real");
-                    b.Property<int>("RecipeId")
-                        .HasColumnType("integer");
-                    b.Property<string>("Unit")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.HasIndex("IngredientId");
-                    b.HasIndex("RecipeId");
-                    b.ToTable("RecipeIngredients");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Restaurant", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<string>("Description")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<string>("ImageUrl")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.ToTable("Restaurants");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RestaurantMeal", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<float>("Calories")
-                        .HasColumnType("real");
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real");
-                    b.Property<float>("Fat")
-                        .HasColumnType("real");
-                    b.Property<string>("ItemDescription")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<string>("ItemName")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<float>("Protein")
-                        .HasColumnType("real");
-                    b.Property<int?>("RestaurantId")
-                        .HasColumnType("integer");
-                    b.Property<string>("RestaurantName")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.HasIndex("RestaurantId");
-                    b.ToTable("RestaurantMeals");
-                });
-            modelBuilder.Entity("NutriMatch.Models.User", b =>
-                {
-                    b.Property<string>("Id")
-                        .HasColumnType("text");
-                    b.Property<int>("AccessFailedCount")
-                        .HasColumnType("integer");
-                    b.Property<string>("ConcurrencyStamp")
-                        .IsConcurrencyToken()
-                        .HasColumnType("text");
-                    b.Property<string>("Email")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-                    b.Property<bool>("EmailConfirmed")
-                        .HasColumnType("boolean");
-                    b.Property<bool>("LockoutEnabled")
-                        .HasColumnType("boolean");
-                    b.Property<DateTimeOffset?>("LockoutEnd")
-                        .HasColumnType("timestamp with time zone");
-                    b.Property<string>("NormalizedEmail")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-                    b.Property<string>("NormalizedUserName")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-                    b.Property<string>("PasswordHash")
-                        .HasColumnType("text");
-                    b.Property<string>("PhoneNumber")
-                        .HasColumnType("text");
-                    b.Property<bool>("PhoneNumberConfirmed")
-                        .HasColumnType("boolean");
-                    b.Property<string>("ProfilePictureUrl")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<string>("SecurityStamp")
-                        .HasColumnType("text");
-                    b.Property<bool>("TwoFactorEnabled")
-                        .HasColumnType("boolean");
-                    b.Property<string>("UserName")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-                    b.HasKey("Id");
-                    b.HasIndex("NormalizedEmail")
-                        .HasDatabaseName("EmailIndex");
-                    b.HasIndex("NormalizedUserName")
-                        .IsUnique()
-                        .HasDatabaseName("UserNameIndex");
-                    b.ToTable("AspNetUsers", (string)null);
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim<string>", b =>
-                {
-                    b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null)
-                        .WithMany()
-                        .HasForeignKey("RoleId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim<string>", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", null)
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin<string>", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", null)
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole<string>", b =>
-                {
-                    b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null)
-                        .WithMany()
-                        .HasForeignKey("RoleId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.HasOne("NutriMatch.Models.User", null)
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken<string>", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", null)
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", "User")
-                        .WithMany("Recipes")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.Navigation("User");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RecipeIngredient", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Ingredient", "Ingredient")
-                        .WithMany()
-                        .HasForeignKey("IngredientId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.HasOne("NutriMatch.Models.Recipe", null)
-                        .WithMany("RecipeIngredients")
-                        .HasForeignKey("RecipeId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.Navigation("Ingredient");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RestaurantMeal", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Restaurant", "Restaurant")
-                        .WithMany("RestaurantMeals")
-                        .HasForeignKey("RestaurantId");
-                    b.Navigation("Restaurant");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.Navigation("RecipeIngredients");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Restaurant", b =>
-                {
-                    b.Navigation("RestaurantMeals");
-                });
-            modelBuilder.Entity("NutriMatch.Models.User", b =>
-                {
-                    b.Navigation("Recipes");
-                });
-#pragma warning restore 612, 618
-        }
-    }
-}
Index: triMatch/Migrations/20250802174947_AddUserRecipeRelation.cs
===================================================================
--- NutriMatch/Migrations/20250802174947_AddUserRecipeRelation.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,49 +1,0 @@
-﻿using Microsoft.EntityFrameworkCore.Migrations;
-#nullable disable
-namespace NutriMatch.Migrations
-{
-    public partial class AddUserRecipeRelation : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.AddColumn<string>(
-                name: "UserId",
-                table: "Recipes",
-                type: "text",
-                nullable: false,
-                defaultValue: "");
-            migrationBuilder.AddColumn<string>(
-                name: "ProfilePictureUrl",
-                table: "AspNetUsers",
-                type: "text",
-                nullable: false,
-                defaultValue: "");
-            migrationBuilder.CreateIndex(
-                name: "IX_Recipes_UserId",
-                table: "Recipes",
-                column: "UserId");
-            migrationBuilder.AddForeignKey(
-                name: "FK_Recipes_AspNetUsers_UserId",
-                table: "Recipes",
-                column: "UserId",
-                principalTable: "AspNetUsers",
-                principalColumn: "Id",
-                onDelete: ReferentialAction.Cascade);
-        }
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropForeignKey(
-                name: "FK_Recipes_AspNetUsers_UserId",
-                table: "Recipes");
-            migrationBuilder.DropIndex(
-                name: "IX_Recipes_UserId",
-                table: "Recipes");
-            migrationBuilder.DropColumn(
-                name: "UserId",
-                table: "Recipes");
-            migrationBuilder.DropColumn(
-                name: "ProfilePictureUrl",
-                table: "AspNetUsers");
-        }
-    }
-}
Index: triMatch/Migrations/20250804164204_RatingRecipes.Designer.cs
===================================================================
--- NutriMatch/Migrations/20250804164204_RatingRecipes.Designer.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,437 +1,0 @@
-﻿// <auto-generated />
-using System;
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Migrations;
-using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
-using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
-using NutriMatch.Data;
-#nullable disable
-namespace NutriMatch.Migrations
-{
-    [DbContext(typeof(AppDbContext))]
-    [Migration("20250804164204_RatingRecipes")]
-    partial class RatingRecipes
-    {
-        protected override void BuildTargetModel(ModelBuilder modelBuilder)
-        {
-#pragma warning disable 612, 618
-            modelBuilder
-                .HasAnnotation("ProductVersion", "9.0.7")
-                .HasAnnotation("Relational:MaxIdentifierLength", 63);
-            NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b =>
-                {
-                    b.Property<string>("Id")
-                        .HasColumnType("text");
-                    b.Property<string>("ConcurrencyStamp")
-                        .IsConcurrencyToken()
-                        .HasColumnType("text");
-                    b.Property<string>("Name")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-                    b.Property<string>("NormalizedName")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-                    b.HasKey("Id");
-                    b.HasIndex("NormalizedName")
-                        .IsUnique()
-                        .HasDatabaseName("RoleNameIndex");
-                    b.ToTable("AspNetRoles", (string)null);
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim<string>", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<string>("ClaimType")
-                        .HasColumnType("text");
-                    b.Property<string>("ClaimValue")
-                        .HasColumnType("text");
-                    b.Property<string>("RoleId")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.HasIndex("RoleId");
-                    b.ToTable("AspNetRoleClaims", (string)null);
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim<string>", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<string>("ClaimType")
-                        .HasColumnType("text");
-                    b.Property<string>("ClaimValue")
-                        .HasColumnType("text");
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.HasIndex("UserId");
-                    b.ToTable("AspNetUserClaims", (string)null);
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin<string>", b =>
-                {
-                    b.Property<string>("LoginProvider")
-                        .HasMaxLength(128)
-                        .HasColumnType("character varying(128)");
-                    b.Property<string>("ProviderKey")
-                        .HasMaxLength(128)
-                        .HasColumnType("character varying(128)");
-                    b.Property<string>("ProviderDisplayName")
-                        .HasColumnType("text");
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("LoginProvider", "ProviderKey");
-                    b.HasIndex("UserId");
-                    b.ToTable("AspNetUserLogins", (string)null);
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole<string>", b =>
-                {
-                    b.Property<string>("UserId")
-                        .HasColumnType("text");
-                    b.Property<string>("RoleId")
-                        .HasColumnType("text");
-                    b.HasKey("UserId", "RoleId");
-                    b.HasIndex("RoleId");
-                    b.ToTable("AspNetUserRoles", (string)null);
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken<string>", b =>
-                {
-                    b.Property<string>("UserId")
-                        .HasColumnType("text");
-                    b.Property<string>("LoginProvider")
-                        .HasMaxLength(128)
-                        .HasColumnType("character varying(128)");
-                    b.Property<string>("Name")
-                        .HasMaxLength(128)
-                        .HasColumnType("character varying(128)");
-                    b.Property<string>("Value")
-                        .HasColumnType("text");
-                    b.HasKey("UserId", "LoginProvider", "Name");
-                    b.ToTable("AspNetUserTokens", (string)null);
-                });
-            modelBuilder.Entity("NutriMatch.Models.FavoriteRecipe", b =>
-                {
-                    b.Property<string>("UserId")
-                        .HasColumnType("text");
-                    b.Property<int>("RecipeId")
-                        .HasColumnType("integer");
-                    b.HasKey("UserId", "RecipeId");
-                    b.HasIndex("RecipeId");
-                    b.ToTable("FavoriteRecipes");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Ingredient", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<float>("Calories")
-                        .HasColumnType("real");
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real");
-                    b.Property<float>("Fat")
-                        .HasColumnType("real");
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<float>("Protein")
-                        .HasColumnType("real");
-                    b.HasKey("Id");
-                    b.ToTable("Ingredients");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<float>("Calories")
-                        .HasColumnType("real");
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real");
-                    b.Property<float>("Fat")
-                        .HasColumnType("real");
-                    b.Property<string>("ImageUrl")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.PrimitiveCollection<string[]>("Instructions")
-                        .HasColumnType("text[]");
-                    b.Property<float>("Protein")
-                        .HasColumnType("real");
-                    b.Property<float>("Rating")
-                        .HasColumnType("real");
-                    b.Property<string>("Title")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.HasIndex("UserId");
-                    b.ToTable("Recipes");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RecipeIngredient", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<int>("IngredientId")
-                        .HasColumnType("integer");
-                    b.Property<float>("Quantity")
-                        .HasColumnType("real");
-                    b.Property<int>("RecipeId")
-                        .HasColumnType("integer");
-                    b.Property<string>("Unit")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.HasIndex("IngredientId");
-                    b.HasIndex("RecipeId");
-                    b.ToTable("RecipeIngredients");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RecipeRating", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<double>("Rating")
-                        .HasColumnType("double precision");
-                    b.Property<int>("RecipeId")
-                        .HasColumnType("integer");
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.HasIndex("RecipeId");
-                    b.HasIndex("UserId", "RecipeId")
-                        .IsUnique();
-                    b.ToTable("RecipeRatings");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Restaurant", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<string>("Description")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<string>("ImageUrl")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.ToTable("Restaurants");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RestaurantMeal", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<float>("Calories")
-                        .HasColumnType("real");
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real");
-                    b.Property<float>("Fat")
-                        .HasColumnType("real");
-                    b.Property<string>("ItemDescription")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<string>("ItemName")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<float>("Protein")
-                        .HasColumnType("real");
-                    b.Property<int?>("RestaurantId")
-                        .HasColumnType("integer");
-                    b.Property<string>("RestaurantName")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.HasIndex("RestaurantId");
-                    b.ToTable("RestaurantMeals");
-                });
-            modelBuilder.Entity("NutriMatch.Models.User", b =>
-                {
-                    b.Property<string>("Id")
-                        .HasColumnType("text");
-                    b.Property<int>("AccessFailedCount")
-                        .HasColumnType("integer");
-                    b.Property<string>("ConcurrencyStamp")
-                        .IsConcurrencyToken()
-                        .HasColumnType("text");
-                    b.Property<string>("Email")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-                    b.Property<bool>("EmailConfirmed")
-                        .HasColumnType("boolean");
-                    b.Property<bool>("LockoutEnabled")
-                        .HasColumnType("boolean");
-                    b.Property<DateTimeOffset?>("LockoutEnd")
-                        .HasColumnType("timestamp with time zone");
-                    b.Property<string>("NormalizedEmail")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-                    b.Property<string>("NormalizedUserName")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-                    b.Property<string>("PasswordHash")
-                        .HasColumnType("text");
-                    b.Property<string>("PhoneNumber")
-                        .HasColumnType("text");
-                    b.Property<bool>("PhoneNumberConfirmed")
-                        .HasColumnType("boolean");
-                    b.Property<string>("ProfilePictureUrl")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<string>("SecurityStamp")
-                        .HasColumnType("text");
-                    b.Property<bool>("TwoFactorEnabled")
-                        .HasColumnType("boolean");
-                    b.Property<string>("UserName")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-                    b.HasKey("Id");
-                    b.HasIndex("NormalizedEmail")
-                        .HasDatabaseName("EmailIndex");
-                    b.HasIndex("NormalizedUserName")
-                        .IsUnique()
-                        .HasDatabaseName("UserNameIndex");
-                    b.ToTable("AspNetUsers", (string)null);
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim<string>", b =>
-                {
-                    b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null)
-                        .WithMany()
-                        .HasForeignKey("RoleId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim<string>", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", null)
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin<string>", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", null)
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole<string>", b =>
-                {
-                    b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null)
-                        .WithMany()
-                        .HasForeignKey("RoleId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.HasOne("NutriMatch.Models.User", null)
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken<string>", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", null)
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-            modelBuilder.Entity("NutriMatch.Models.FavoriteRecipe", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Recipe", "Recipe")
-                        .WithMany("FavoritedBy")
-                        .HasForeignKey("RecipeId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.HasOne("NutriMatch.Models.User", "User")
-                        .WithMany("FavoriteRecipes")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.Navigation("Recipe");
-                    b.Navigation("User");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", "User")
-                        .WithMany("Recipes")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.Navigation("User");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RecipeIngredient", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Ingredient", "Ingredient")
-                        .WithMany()
-                        .HasForeignKey("IngredientId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.HasOne("NutriMatch.Models.Recipe", null)
-                        .WithMany("RecipeIngredients")
-                        .HasForeignKey("RecipeId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.Navigation("Ingredient");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RecipeRating", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Recipe", "Recipe")
-                        .WithMany("Ratings")
-                        .HasForeignKey("RecipeId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.HasOne("NutriMatch.Models.User", "User")
-                        .WithMany("Ratings")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.Navigation("Recipe");
-                    b.Navigation("User");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RestaurantMeal", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Restaurant", "Restaurant")
-                        .WithMany("RestaurantMeals")
-                        .HasForeignKey("RestaurantId");
-                    b.Navigation("Restaurant");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.Navigation("FavoritedBy");
-                    b.Navigation("Ratings");
-                    b.Navigation("RecipeIngredients");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Restaurant", b =>
-                {
-                    b.Navigation("RestaurantMeals");
-                });
-            modelBuilder.Entity("NutriMatch.Models.User", b =>
-                {
-                    b.Navigation("FavoriteRecipes");
-                    b.Navigation("Ratings");
-                    b.Navigation("Recipes");
-                });
-#pragma warning restore 612, 618
-        }
-    }
-}
Index: triMatch/Migrations/20250804164204_RatingRecipes.cs
===================================================================
--- NutriMatch/Migrations/20250804164204_RatingRecipes.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,81 +1,0 @@
-﻿using Microsoft.EntityFrameworkCore.Migrations;
-using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
-#nullable disable
-namespace NutriMatch.Migrations
-{
-    public partial class RatingRecipes : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.CreateTable(
-                name: "FavoriteRecipes",
-                columns: table => new
-                {
-                    UserId = table.Column<string>(type: "text", nullable: false),
-                    RecipeId = table.Column<int>(type: "integer", nullable: false)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_FavoriteRecipes", x => new { x.UserId, x.RecipeId });
-                    table.ForeignKey(
-                        name: "FK_FavoriteRecipes_AspNetUsers_UserId",
-                        column: x => x.UserId,
-                        principalTable: "AspNetUsers",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Cascade);
-                    table.ForeignKey(
-                        name: "FK_FavoriteRecipes_Recipes_RecipeId",
-                        column: x => x.RecipeId,
-                        principalTable: "Recipes",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Cascade);
-                });
-            migrationBuilder.CreateTable(
-                name: "RecipeRatings",
-                columns: table => new
-                {
-                    Id = table.Column<int>(type: "integer", nullable: false)
-                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
-                    UserId = table.Column<string>(type: "text", nullable: false),
-                    RecipeId = table.Column<int>(type: "integer", nullable: false),
-                    Rating = table.Column<double>(type: "double precision", nullable: false)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_RecipeRatings", x => x.Id);
-                    table.ForeignKey(
-                        name: "FK_RecipeRatings_AspNetUsers_UserId",
-                        column: x => x.UserId,
-                        principalTable: "AspNetUsers",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Cascade);
-                    table.ForeignKey(
-                        name: "FK_RecipeRatings_Recipes_RecipeId",
-                        column: x => x.RecipeId,
-                        principalTable: "Recipes",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Cascade);
-                });
-            migrationBuilder.CreateIndex(
-                name: "IX_FavoriteRecipes_RecipeId",
-                table: "FavoriteRecipes",
-                column: "RecipeId");
-            migrationBuilder.CreateIndex(
-                name: "IX_RecipeRatings_RecipeId",
-                table: "RecipeRatings",
-                column: "RecipeId");
-            migrationBuilder.CreateIndex(
-                name: "IX_RecipeRatings_UserId_RecipeId",
-                table: "RecipeRatings",
-                columns: new[] { "UserId", "RecipeId" },
-                unique: true);
-        }
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropTable(
-                name: "FavoriteRecipes");
-            migrationBuilder.DropTable(
-                name: "RecipeRatings");
-        }
-    }
-}
Index: triMatch/Migrations/20250805200628_RecipeModelChange.Designer.cs
===================================================================
--- NutriMatch/Migrations/20250805200628_RecipeModelChange.Designer.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,435 +1,0 @@
-﻿// <auto-generated />
-using System;
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Migrations;
-using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
-using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
-using NutriMatch.Data;
-#nullable disable
-namespace NutriMatch.Migrations
-{
-    [DbContext(typeof(AppDbContext))]
-    [Migration("20250805200628_RecipeModelChange")]
-    partial class RecipeModelChange
-    {
-        protected override void BuildTargetModel(ModelBuilder modelBuilder)
-        {
-#pragma warning disable 612, 618
-            modelBuilder
-                .HasAnnotation("ProductVersion", "9.0.7")
-                .HasAnnotation("Relational:MaxIdentifierLength", 63);
-            NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b =>
-                {
-                    b.Property<string>("Id")
-                        .HasColumnType("text");
-                    b.Property<string>("ConcurrencyStamp")
-                        .IsConcurrencyToken()
-                        .HasColumnType("text");
-                    b.Property<string>("Name")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-                    b.Property<string>("NormalizedName")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-                    b.HasKey("Id");
-                    b.HasIndex("NormalizedName")
-                        .IsUnique()
-                        .HasDatabaseName("RoleNameIndex");
-                    b.ToTable("AspNetRoles", (string)null);
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim<string>", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<string>("ClaimType")
-                        .HasColumnType("text");
-                    b.Property<string>("ClaimValue")
-                        .HasColumnType("text");
-                    b.Property<string>("RoleId")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.HasIndex("RoleId");
-                    b.ToTable("AspNetRoleClaims", (string)null);
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim<string>", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<string>("ClaimType")
-                        .HasColumnType("text");
-                    b.Property<string>("ClaimValue")
-                        .HasColumnType("text");
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.HasIndex("UserId");
-                    b.ToTable("AspNetUserClaims", (string)null);
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin<string>", b =>
-                {
-                    b.Property<string>("LoginProvider")
-                        .HasMaxLength(128)
-                        .HasColumnType("character varying(128)");
-                    b.Property<string>("ProviderKey")
-                        .HasMaxLength(128)
-                        .HasColumnType("character varying(128)");
-                    b.Property<string>("ProviderDisplayName")
-                        .HasColumnType("text");
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("LoginProvider", "ProviderKey");
-                    b.HasIndex("UserId");
-                    b.ToTable("AspNetUserLogins", (string)null);
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole<string>", b =>
-                {
-                    b.Property<string>("UserId")
-                        .HasColumnType("text");
-                    b.Property<string>("RoleId")
-                        .HasColumnType("text");
-                    b.HasKey("UserId", "RoleId");
-                    b.HasIndex("RoleId");
-                    b.ToTable("AspNetUserRoles", (string)null);
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken<string>", b =>
-                {
-                    b.Property<string>("UserId")
-                        .HasColumnType("text");
-                    b.Property<string>("LoginProvider")
-                        .HasMaxLength(128)
-                        .HasColumnType("character varying(128)");
-                    b.Property<string>("Name")
-                        .HasMaxLength(128)
-                        .HasColumnType("character varying(128)");
-                    b.Property<string>("Value")
-                        .HasColumnType("text");
-                    b.HasKey("UserId", "LoginProvider", "Name");
-                    b.ToTable("AspNetUserTokens", (string)null);
-                });
-            modelBuilder.Entity("NutriMatch.Models.FavoriteRecipe", b =>
-                {
-                    b.Property<string>("UserId")
-                        .HasColumnType("text");
-                    b.Property<int>("RecipeId")
-                        .HasColumnType("integer");
-                    b.HasKey("UserId", "RecipeId");
-                    b.HasIndex("RecipeId");
-                    b.ToTable("FavoriteRecipes");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Ingredient", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<float>("Calories")
-                        .HasColumnType("real");
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real");
-                    b.Property<float>("Fat")
-                        .HasColumnType("real");
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<float>("Protein")
-                        .HasColumnType("real");
-                    b.HasKey("Id");
-                    b.ToTable("Ingredients");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<float>("Calories")
-                        .HasColumnType("real");
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real");
-                    b.Property<float>("Fat")
-                        .HasColumnType("real");
-                    b.Property<string>("ImageUrl")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.PrimitiveCollection<string[]>("Instructions")
-                        .HasColumnType("text[]");
-                    b.Property<float>("Protein")
-                        .HasColumnType("real");
-                    b.Property<string>("Title")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.HasIndex("UserId");
-                    b.ToTable("Recipes");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RecipeIngredient", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<int>("IngredientId")
-                        .HasColumnType("integer");
-                    b.Property<float>("Quantity")
-                        .HasColumnType("real");
-                    b.Property<int>("RecipeId")
-                        .HasColumnType("integer");
-                    b.Property<string>("Unit")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.HasIndex("IngredientId");
-                    b.HasIndex("RecipeId");
-                    b.ToTable("RecipeIngredients");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RecipeRating", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<double>("Rating")
-                        .HasColumnType("double precision");
-                    b.Property<int>("RecipeId")
-                        .HasColumnType("integer");
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.HasIndex("RecipeId");
-                    b.HasIndex("UserId", "RecipeId")
-                        .IsUnique();
-                    b.ToTable("RecipeRatings");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Restaurant", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<string>("Description")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<string>("ImageUrl")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.ToTable("Restaurants");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RestaurantMeal", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<float>("Calories")
-                        .HasColumnType("real");
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real");
-                    b.Property<float>("Fat")
-                        .HasColumnType("real");
-                    b.Property<string>("ItemDescription")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<string>("ItemName")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<float>("Protein")
-                        .HasColumnType("real");
-                    b.Property<int?>("RestaurantId")
-                        .HasColumnType("integer");
-                    b.Property<string>("RestaurantName")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.HasIndex("RestaurantId");
-                    b.ToTable("RestaurantMeals");
-                });
-            modelBuilder.Entity("NutriMatch.Models.User", b =>
-                {
-                    b.Property<string>("Id")
-                        .HasColumnType("text");
-                    b.Property<int>("AccessFailedCount")
-                        .HasColumnType("integer");
-                    b.Property<string>("ConcurrencyStamp")
-                        .IsConcurrencyToken()
-                        .HasColumnType("text");
-                    b.Property<string>("Email")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-                    b.Property<bool>("EmailConfirmed")
-                        .HasColumnType("boolean");
-                    b.Property<bool>("LockoutEnabled")
-                        .HasColumnType("boolean");
-                    b.Property<DateTimeOffset?>("LockoutEnd")
-                        .HasColumnType("timestamp with time zone");
-                    b.Property<string>("NormalizedEmail")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-                    b.Property<string>("NormalizedUserName")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-                    b.Property<string>("PasswordHash")
-                        .HasColumnType("text");
-                    b.Property<string>("PhoneNumber")
-                        .HasColumnType("text");
-                    b.Property<bool>("PhoneNumberConfirmed")
-                        .HasColumnType("boolean");
-                    b.Property<string>("ProfilePictureUrl")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<string>("SecurityStamp")
-                        .HasColumnType("text");
-                    b.Property<bool>("TwoFactorEnabled")
-                        .HasColumnType("boolean");
-                    b.Property<string>("UserName")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-                    b.HasKey("Id");
-                    b.HasIndex("NormalizedEmail")
-                        .HasDatabaseName("EmailIndex");
-                    b.HasIndex("NormalizedUserName")
-                        .IsUnique()
-                        .HasDatabaseName("UserNameIndex");
-                    b.ToTable("AspNetUsers", (string)null);
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim<string>", b =>
-                {
-                    b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null)
-                        .WithMany()
-                        .HasForeignKey("RoleId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim<string>", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", null)
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin<string>", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", null)
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole<string>", b =>
-                {
-                    b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null)
-                        .WithMany()
-                        .HasForeignKey("RoleId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.HasOne("NutriMatch.Models.User", null)
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken<string>", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", null)
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-            modelBuilder.Entity("NutriMatch.Models.FavoriteRecipe", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Recipe", "Recipe")
-                        .WithMany("FavoritedBy")
-                        .HasForeignKey("RecipeId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.HasOne("NutriMatch.Models.User", "User")
-                        .WithMany("FavoriteRecipes")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.Navigation("Recipe");
-                    b.Navigation("User");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", "User")
-                        .WithMany("Recipes")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.Navigation("User");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RecipeIngredient", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Ingredient", "Ingredient")
-                        .WithMany()
-                        .HasForeignKey("IngredientId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.HasOne("NutriMatch.Models.Recipe", null)
-                        .WithMany("RecipeIngredients")
-                        .HasForeignKey("RecipeId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.Navigation("Ingredient");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RecipeRating", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Recipe", "Recipe")
-                        .WithMany("Ratings")
-                        .HasForeignKey("RecipeId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.HasOne("NutriMatch.Models.User", "User")
-                        .WithMany("Ratings")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.Navigation("Recipe");
-                    b.Navigation("User");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RestaurantMeal", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Restaurant", "Restaurant")
-                        .WithMany("RestaurantMeals")
-                        .HasForeignKey("RestaurantId");
-                    b.Navigation("Restaurant");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.Navigation("FavoritedBy");
-                    b.Navigation("Ratings");
-                    b.Navigation("RecipeIngredients");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Restaurant", b =>
-                {
-                    b.Navigation("RestaurantMeals");
-                });
-            modelBuilder.Entity("NutriMatch.Models.User", b =>
-                {
-                    b.Navigation("FavoriteRecipes");
-                    b.Navigation("Ratings");
-                    b.Navigation("Recipes");
-                });
-#pragma warning restore 612, 618
-        }
-    }
-}
Index: triMatch/Migrations/20250805200628_RecipeModelChange.cs
===================================================================
--- NutriMatch/Migrations/20250805200628_RecipeModelChange.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,23 +1,0 @@
-﻿using Microsoft.EntityFrameworkCore.Migrations;
-#nullable disable
-namespace NutriMatch.Migrations
-{
-    public partial class RecipeModelChange : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropColumn(
-                name: "Rating",
-                table: "Recipes");
-        }
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.AddColumn<float>(
-                name: "Rating",
-                table: "Recipes",
-                type: "real",
-                nullable: false,
-                defaultValue: 0f);
-        }
-    }
-}
Index: triMatch/Migrations/20250806174559_RecipeApproval.Designer.cs
===================================================================
--- NutriMatch/Migrations/20250806174559_RecipeApproval.Designer.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,439 +1,0 @@
-﻿// <auto-generated />
-using System;
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Migrations;
-using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
-using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
-using NutriMatch.Data;
-#nullable disable
-namespace NutriMatch.Migrations
-{
-    [DbContext(typeof(AppDbContext))]
-    [Migration("20250806174559_RecipeApproval")]
-    partial class RecipeApproval
-    {
-        protected override void BuildTargetModel(ModelBuilder modelBuilder)
-        {
-#pragma warning disable 612, 618
-            modelBuilder
-                .HasAnnotation("ProductVersion", "9.0.7")
-                .HasAnnotation("Relational:MaxIdentifierLength", 63);
-            NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b =>
-                {
-                    b.Property<string>("Id")
-                        .HasColumnType("text");
-                    b.Property<string>("ConcurrencyStamp")
-                        .IsConcurrencyToken()
-                        .HasColumnType("text");
-                    b.Property<string>("Name")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-                    b.Property<string>("NormalizedName")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-                    b.HasKey("Id");
-                    b.HasIndex("NormalizedName")
-                        .IsUnique()
-                        .HasDatabaseName("RoleNameIndex");
-                    b.ToTable("AspNetRoles", (string)null);
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim<string>", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<string>("ClaimType")
-                        .HasColumnType("text");
-                    b.Property<string>("ClaimValue")
-                        .HasColumnType("text");
-                    b.Property<string>("RoleId")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.HasIndex("RoleId");
-                    b.ToTable("AspNetRoleClaims", (string)null);
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim<string>", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<string>("ClaimType")
-                        .HasColumnType("text");
-                    b.Property<string>("ClaimValue")
-                        .HasColumnType("text");
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.HasIndex("UserId");
-                    b.ToTable("AspNetUserClaims", (string)null);
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin<string>", b =>
-                {
-                    b.Property<string>("LoginProvider")
-                        .HasMaxLength(128)
-                        .HasColumnType("character varying(128)");
-                    b.Property<string>("ProviderKey")
-                        .HasMaxLength(128)
-                        .HasColumnType("character varying(128)");
-                    b.Property<string>("ProviderDisplayName")
-                        .HasColumnType("text");
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("LoginProvider", "ProviderKey");
-                    b.HasIndex("UserId");
-                    b.ToTable("AspNetUserLogins", (string)null);
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole<string>", b =>
-                {
-                    b.Property<string>("UserId")
-                        .HasColumnType("text");
-                    b.Property<string>("RoleId")
-                        .HasColumnType("text");
-                    b.HasKey("UserId", "RoleId");
-                    b.HasIndex("RoleId");
-                    b.ToTable("AspNetUserRoles", (string)null);
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken<string>", b =>
-                {
-                    b.Property<string>("UserId")
-                        .HasColumnType("text");
-                    b.Property<string>("LoginProvider")
-                        .HasMaxLength(128)
-                        .HasColumnType("character varying(128)");
-                    b.Property<string>("Name")
-                        .HasMaxLength(128)
-                        .HasColumnType("character varying(128)");
-                    b.Property<string>("Value")
-                        .HasColumnType("text");
-                    b.HasKey("UserId", "LoginProvider", "Name");
-                    b.ToTable("AspNetUserTokens", (string)null);
-                });
-            modelBuilder.Entity("NutriMatch.Models.FavoriteRecipe", b =>
-                {
-                    b.Property<string>("UserId")
-                        .HasColumnType("text");
-                    b.Property<int>("RecipeId")
-                        .HasColumnType("integer");
-                    b.HasKey("UserId", "RecipeId");
-                    b.HasIndex("RecipeId");
-                    b.ToTable("FavoriteRecipes");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Ingredient", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<float>("Calories")
-                        .HasColumnType("real");
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real");
-                    b.Property<float>("Fat")
-                        .HasColumnType("real");
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<float>("Protein")
-                        .HasColumnType("real");
-                    b.HasKey("Id");
-                    b.ToTable("Ingredients");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<float>("Calories")
-                        .HasColumnType("real");
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real");
-                    b.Property<DateTime>("CreatedAt")
-                        .HasColumnType("timestamp with time zone");
-                    b.Property<float>("Fat")
-                        .HasColumnType("real");
-                    b.Property<string>("ImageUrl")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.PrimitiveCollection<string[]>("Instructions")
-                        .HasColumnType("text[]");
-                    b.Property<bool>("IsApproved")
-                        .HasColumnType("boolean");
-                    b.Property<float>("Protein")
-                        .HasColumnType("real");
-                    b.Property<string>("Title")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.HasIndex("UserId");
-                    b.ToTable("Recipes");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RecipeIngredient", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<int>("IngredientId")
-                        .HasColumnType("integer");
-                    b.Property<float>("Quantity")
-                        .HasColumnType("real");
-                    b.Property<int>("RecipeId")
-                        .HasColumnType("integer");
-                    b.Property<string>("Unit")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.HasIndex("IngredientId");
-                    b.HasIndex("RecipeId");
-                    b.ToTable("RecipeIngredients");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RecipeRating", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<double>("Rating")
-                        .HasColumnType("double precision");
-                    b.Property<int>("RecipeId")
-                        .HasColumnType("integer");
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.HasIndex("RecipeId");
-                    b.HasIndex("UserId", "RecipeId")
-                        .IsUnique();
-                    b.ToTable("RecipeRatings");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Restaurant", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<string>("Description")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<string>("ImageUrl")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.ToTable("Restaurants");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RestaurantMeal", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<float>("Calories")
-                        .HasColumnType("real");
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real");
-                    b.Property<float>("Fat")
-                        .HasColumnType("real");
-                    b.Property<string>("ItemDescription")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<string>("ItemName")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<float>("Protein")
-                        .HasColumnType("real");
-                    b.Property<int?>("RestaurantId")
-                        .HasColumnType("integer");
-                    b.Property<string>("RestaurantName")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.HasIndex("RestaurantId");
-                    b.ToTable("RestaurantMeals");
-                });
-            modelBuilder.Entity("NutriMatch.Models.User", b =>
-                {
-                    b.Property<string>("Id")
-                        .HasColumnType("text");
-                    b.Property<int>("AccessFailedCount")
-                        .HasColumnType("integer");
-                    b.Property<string>("ConcurrencyStamp")
-                        .IsConcurrencyToken()
-                        .HasColumnType("text");
-                    b.Property<string>("Email")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-                    b.Property<bool>("EmailConfirmed")
-                        .HasColumnType("boolean");
-                    b.Property<bool>("LockoutEnabled")
-                        .HasColumnType("boolean");
-                    b.Property<DateTimeOffset?>("LockoutEnd")
-                        .HasColumnType("timestamp with time zone");
-                    b.Property<string>("NormalizedEmail")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-                    b.Property<string>("NormalizedUserName")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-                    b.Property<string>("PasswordHash")
-                        .HasColumnType("text");
-                    b.Property<string>("PhoneNumber")
-                        .HasColumnType("text");
-                    b.Property<bool>("PhoneNumberConfirmed")
-                        .HasColumnType("boolean");
-                    b.Property<string>("ProfilePictureUrl")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<string>("SecurityStamp")
-                        .HasColumnType("text");
-                    b.Property<bool>("TwoFactorEnabled")
-                        .HasColumnType("boolean");
-                    b.Property<string>("UserName")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-                    b.HasKey("Id");
-                    b.HasIndex("NormalizedEmail")
-                        .HasDatabaseName("EmailIndex");
-                    b.HasIndex("NormalizedUserName")
-                        .IsUnique()
-                        .HasDatabaseName("UserNameIndex");
-                    b.ToTable("AspNetUsers", (string)null);
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim<string>", b =>
-                {
-                    b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null)
-                        .WithMany()
-                        .HasForeignKey("RoleId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim<string>", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", null)
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin<string>", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", null)
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole<string>", b =>
-                {
-                    b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null)
-                        .WithMany()
-                        .HasForeignKey("RoleId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.HasOne("NutriMatch.Models.User", null)
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken<string>", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", null)
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-            modelBuilder.Entity("NutriMatch.Models.FavoriteRecipe", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Recipe", "Recipe")
-                        .WithMany("FavoritedBy")
-                        .HasForeignKey("RecipeId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.HasOne("NutriMatch.Models.User", "User")
-                        .WithMany("FavoriteRecipes")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.Navigation("Recipe");
-                    b.Navigation("User");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", "User")
-                        .WithMany("Recipes")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.Navigation("User");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RecipeIngredient", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Ingredient", "Ingredient")
-                        .WithMany()
-                        .HasForeignKey("IngredientId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.HasOne("NutriMatch.Models.Recipe", null)
-                        .WithMany("RecipeIngredients")
-                        .HasForeignKey("RecipeId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.Navigation("Ingredient");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RecipeRating", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Recipe", "Recipe")
-                        .WithMany("Ratings")
-                        .HasForeignKey("RecipeId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.HasOne("NutriMatch.Models.User", "User")
-                        .WithMany("Ratings")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.Navigation("Recipe");
-                    b.Navigation("User");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RestaurantMeal", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Restaurant", "Restaurant")
-                        .WithMany("RestaurantMeals")
-                        .HasForeignKey("RestaurantId");
-                    b.Navigation("Restaurant");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.Navigation("FavoritedBy");
-                    b.Navigation("Ratings");
-                    b.Navigation("RecipeIngredients");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Restaurant", b =>
-                {
-                    b.Navigation("RestaurantMeals");
-                });
-            modelBuilder.Entity("NutriMatch.Models.User", b =>
-                {
-                    b.Navigation("FavoriteRecipes");
-                    b.Navigation("Ratings");
-                    b.Navigation("Recipes");
-                });
-#pragma warning restore 612, 618
-        }
-    }
-}
Index: triMatch/Migrations/20250806174559_RecipeApproval.cs
===================================================================
--- NutriMatch/Migrations/20250806174559_RecipeApproval.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,33 +1,0 @@
-﻿using System;
-using Microsoft.EntityFrameworkCore.Migrations;
-#nullable disable
-namespace NutriMatch.Migrations
-{
-    public partial class RecipeApproval : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.AddColumn<DateTime>(
-                name: "CreatedAt",
-                table: "Recipes",
-                type: "timestamp with time zone",
-                nullable: false,
-                defaultValue: new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified));
-            migrationBuilder.AddColumn<bool>(
-                name: "IsApproved",
-                table: "Recipes",
-                type: "boolean",
-                nullable: false,
-                defaultValue: false);
-        }
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropColumn(
-                name: "CreatedAt",
-                table: "Recipes");
-            migrationBuilder.DropColumn(
-                name: "IsApproved",
-                table: "Recipes");
-        }
-    }
-}
Index: triMatch/Migrations/20250808152305_RecipeStatusAdminMessage.Designer.cs
===================================================================
--- NutriMatch/Migrations/20250808152305_RecipeStatusAdminMessage.Designer.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,443 +1,0 @@
-﻿// <auto-generated />
-using System;
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Migrations;
-using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
-using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
-using NutriMatch.Data;
-#nullable disable
-namespace NutriMatch.Migrations
-{
-    [DbContext(typeof(AppDbContext))]
-    [Migration("20250808152305_RecipeStatusAdminMessage")]
-    partial class RecipeStatusAdminMessage
-    {
-        protected override void BuildTargetModel(ModelBuilder modelBuilder)
-        {
-#pragma warning disable 612, 618
-            modelBuilder
-                .HasAnnotation("ProductVersion", "9.0.7")
-                .HasAnnotation("Relational:MaxIdentifierLength", 63);
-            NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b =>
-                {
-                    b.Property<string>("Id")
-                        .HasColumnType("text");
-                    b.Property<string>("ConcurrencyStamp")
-                        .IsConcurrencyToken()
-                        .HasColumnType("text");
-                    b.Property<string>("Name")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-                    b.Property<string>("NormalizedName")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-                    b.HasKey("Id");
-                    b.HasIndex("NormalizedName")
-                        .IsUnique()
-                        .HasDatabaseName("RoleNameIndex");
-                    b.ToTable("AspNetRoles", (string)null);
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim<string>", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<string>("ClaimType")
-                        .HasColumnType("text");
-                    b.Property<string>("ClaimValue")
-                        .HasColumnType("text");
-                    b.Property<string>("RoleId")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.HasIndex("RoleId");
-                    b.ToTable("AspNetRoleClaims", (string)null);
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim<string>", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<string>("ClaimType")
-                        .HasColumnType("text");
-                    b.Property<string>("ClaimValue")
-                        .HasColumnType("text");
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.HasIndex("UserId");
-                    b.ToTable("AspNetUserClaims", (string)null);
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin<string>", b =>
-                {
-                    b.Property<string>("LoginProvider")
-                        .HasMaxLength(128)
-                        .HasColumnType("character varying(128)");
-                    b.Property<string>("ProviderKey")
-                        .HasMaxLength(128)
-                        .HasColumnType("character varying(128)");
-                    b.Property<string>("ProviderDisplayName")
-                        .HasColumnType("text");
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("LoginProvider", "ProviderKey");
-                    b.HasIndex("UserId");
-                    b.ToTable("AspNetUserLogins", (string)null);
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole<string>", b =>
-                {
-                    b.Property<string>("UserId")
-                        .HasColumnType("text");
-                    b.Property<string>("RoleId")
-                        .HasColumnType("text");
-                    b.HasKey("UserId", "RoleId");
-                    b.HasIndex("RoleId");
-                    b.ToTable("AspNetUserRoles", (string)null);
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken<string>", b =>
-                {
-                    b.Property<string>("UserId")
-                        .HasColumnType("text");
-                    b.Property<string>("LoginProvider")
-                        .HasMaxLength(128)
-                        .HasColumnType("character varying(128)");
-                    b.Property<string>("Name")
-                        .HasMaxLength(128)
-                        .HasColumnType("character varying(128)");
-                    b.Property<string>("Value")
-                        .HasColumnType("text");
-                    b.HasKey("UserId", "LoginProvider", "Name");
-                    b.ToTable("AspNetUserTokens", (string)null);
-                });
-            modelBuilder.Entity("NutriMatch.Models.FavoriteRecipe", b =>
-                {
-                    b.Property<string>("UserId")
-                        .HasColumnType("text");
-                    b.Property<int>("RecipeId")
-                        .HasColumnType("integer");
-                    b.HasKey("UserId", "RecipeId");
-                    b.HasIndex("RecipeId");
-                    b.ToTable("FavoriteRecipes");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Ingredient", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<float>("Calories")
-                        .HasColumnType("real");
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real");
-                    b.Property<float>("Fat")
-                        .HasColumnType("real");
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<float>("Protein")
-                        .HasColumnType("real");
-                    b.HasKey("Id");
-                    b.ToTable("Ingredients");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<string>("AdminComment")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<float>("Calories")
-                        .HasColumnType("real");
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real");
-                    b.Property<DateTime>("CreatedAt")
-                        .HasColumnType("timestamp with time zone");
-                    b.Property<float>("Fat")
-                        .HasColumnType("real");
-                    b.Property<string>("ImageUrl")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.PrimitiveCollection<string[]>("Instructions")
-                        .HasColumnType("text[]");
-                    b.Property<float>("Protein")
-                        .HasColumnType("real");
-                    b.Property<string>("RecipeStatus")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<string>("Title")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.HasIndex("UserId");
-                    b.ToTable("Recipes");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RecipeIngredient", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<int>("IngredientId")
-                        .HasColumnType("integer");
-                    b.Property<float>("Quantity")
-                        .HasColumnType("real");
-                    b.Property<int>("RecipeId")
-                        .HasColumnType("integer");
-                    b.Property<string>("Unit")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.HasIndex("IngredientId");
-                    b.HasIndex("RecipeId");
-                    b.ToTable("RecipeIngredients");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RecipeRating", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<double>("Rating")
-                        .HasColumnType("double precision");
-                    b.Property<int>("RecipeId")
-                        .HasColumnType("integer");
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.HasIndex("RecipeId");
-                    b.HasIndex("UserId", "RecipeId")
-                        .IsUnique();
-                    b.ToTable("RecipeRatings");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Restaurant", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<string>("Description")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<string>("ImageUrl")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.ToTable("Restaurants");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RestaurantMeal", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<float>("Calories")
-                        .HasColumnType("real");
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real");
-                    b.Property<float>("Fat")
-                        .HasColumnType("real");
-                    b.Property<string>("ItemDescription")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<string>("ItemName")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<float>("Protein")
-                        .HasColumnType("real");
-                    b.Property<int?>("RestaurantId")
-                        .HasColumnType("integer");
-                    b.Property<string>("RestaurantName")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.HasIndex("RestaurantId");
-                    b.ToTable("RestaurantMeals");
-                });
-            modelBuilder.Entity("NutriMatch.Models.User", b =>
-                {
-                    b.Property<string>("Id")
-                        .HasColumnType("text");
-                    b.Property<int>("AccessFailedCount")
-                        .HasColumnType("integer");
-                    b.Property<string>("ConcurrencyStamp")
-                        .IsConcurrencyToken()
-                        .HasColumnType("text");
-                    b.Property<string>("Email")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-                    b.Property<bool>("EmailConfirmed")
-                        .HasColumnType("boolean");
-                    b.Property<bool>("LockoutEnabled")
-                        .HasColumnType("boolean");
-                    b.Property<DateTimeOffset?>("LockoutEnd")
-                        .HasColumnType("timestamp with time zone");
-                    b.Property<string>("NormalizedEmail")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-                    b.Property<string>("NormalizedUserName")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-                    b.Property<string>("PasswordHash")
-                        .HasColumnType("text");
-                    b.Property<string>("PhoneNumber")
-                        .HasColumnType("text");
-                    b.Property<bool>("PhoneNumberConfirmed")
-                        .HasColumnType("boolean");
-                    b.Property<string>("ProfilePictureUrl")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<string>("SecurityStamp")
-                        .HasColumnType("text");
-                    b.Property<bool>("TwoFactorEnabled")
-                        .HasColumnType("boolean");
-                    b.Property<string>("UserName")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-                    b.HasKey("Id");
-                    b.HasIndex("NormalizedEmail")
-                        .HasDatabaseName("EmailIndex");
-                    b.HasIndex("NormalizedUserName")
-                        .IsUnique()
-                        .HasDatabaseName("UserNameIndex");
-                    b.ToTable("AspNetUsers", (string)null);
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim<string>", b =>
-                {
-                    b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null)
-                        .WithMany()
-                        .HasForeignKey("RoleId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim<string>", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", null)
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin<string>", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", null)
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole<string>", b =>
-                {
-                    b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null)
-                        .WithMany()
-                        .HasForeignKey("RoleId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.HasOne("NutriMatch.Models.User", null)
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken<string>", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", null)
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-            modelBuilder.Entity("NutriMatch.Models.FavoriteRecipe", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Recipe", "Recipe")
-                        .WithMany("FavoritedBy")
-                        .HasForeignKey("RecipeId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.HasOne("NutriMatch.Models.User", "User")
-                        .WithMany("FavoriteRecipes")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.Navigation("Recipe");
-                    b.Navigation("User");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", "User")
-                        .WithMany("Recipes")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.Navigation("User");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RecipeIngredient", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Ingredient", "Ingredient")
-                        .WithMany()
-                        .HasForeignKey("IngredientId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.HasOne("NutriMatch.Models.Recipe", null)
-                        .WithMany("RecipeIngredients")
-                        .HasForeignKey("RecipeId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.Navigation("Ingredient");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RecipeRating", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Recipe", "Recipe")
-                        .WithMany("Ratings")
-                        .HasForeignKey("RecipeId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.HasOne("NutriMatch.Models.User", "User")
-                        .WithMany("Ratings")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.Navigation("Recipe");
-                    b.Navigation("User");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RestaurantMeal", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Restaurant", "Restaurant")
-                        .WithMany("RestaurantMeals")
-                        .HasForeignKey("RestaurantId");
-                    b.Navigation("Restaurant");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.Navigation("FavoritedBy");
-                    b.Navigation("Ratings");
-                    b.Navigation("RecipeIngredients");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Restaurant", b =>
-                {
-                    b.Navigation("RestaurantMeals");
-                });
-            modelBuilder.Entity("NutriMatch.Models.User", b =>
-                {
-                    b.Navigation("FavoriteRecipes");
-                    b.Navigation("Ratings");
-                    b.Navigation("Recipes");
-                });
-#pragma warning restore 612, 618
-        }
-    }
-}
Index: triMatch/Migrations/20250808152305_RecipeStatusAdminMessage.cs
===================================================================
--- NutriMatch/Migrations/20250808152305_RecipeStatusAdminMessage.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,41 +1,0 @@
-﻿using Microsoft.EntityFrameworkCore.Migrations;
-#nullable disable
-namespace NutriMatch.Migrations
-{
-    public partial class RecipeStatusAdminMessage : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropColumn(
-                name: "IsApproved",
-                table: "Recipes");
-            migrationBuilder.AddColumn<string>(
-                name: "AdminComment",
-                table: "Recipes",
-                type: "text",
-                nullable: false,
-                defaultValue: "");
-            migrationBuilder.AddColumn<string>(
-                name: "RecipeStatus",
-                table: "Recipes",
-                type: "text",
-                nullable: false,
-                defaultValue: "");
-        }
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropColumn(
-                name: "AdminComment",
-                table: "Recipes");
-            migrationBuilder.DropColumn(
-                name: "RecipeStatus",
-                table: "Recipes");
-            migrationBuilder.AddColumn<bool>(
-                name: "IsApproved",
-                table: "Recipes",
-                type: "boolean",
-                nullable: false,
-                defaultValue: false);
-        }
-    }
-}
Index: triMatch/Migrations/20250810011611_RecipeDeclineNoteAdded.Designer.cs
===================================================================
--- NutriMatch/Migrations/20250810011611_RecipeDeclineNoteAdded.Designer.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,446 +1,0 @@
-﻿// <auto-generated />
-using System;
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Migrations;
-using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
-using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
-using NutriMatch.Data;
-#nullable disable
-namespace NutriMatch.Migrations
-{
-    [DbContext(typeof(AppDbContext))]
-    [Migration("20250810011611_RecipeDeclineNoteAdded")]
-    partial class RecipeDeclineNoteAdded
-    {
-        protected override void BuildTargetModel(ModelBuilder modelBuilder)
-        {
-#pragma warning disable 612, 618
-            modelBuilder
-                .HasAnnotation("ProductVersion", "9.0.7")
-                .HasAnnotation("Relational:MaxIdentifierLength", 63);
-            NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b =>
-                {
-                    b.Property<string>("Id")
-                        .HasColumnType("text");
-                    b.Property<string>("ConcurrencyStamp")
-                        .IsConcurrencyToken()
-                        .HasColumnType("text");
-                    b.Property<string>("Name")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-                    b.Property<string>("NormalizedName")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-                    b.HasKey("Id");
-                    b.HasIndex("NormalizedName")
-                        .IsUnique()
-                        .HasDatabaseName("RoleNameIndex");
-                    b.ToTable("AspNetRoles", (string)null);
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim<string>", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<string>("ClaimType")
-                        .HasColumnType("text");
-                    b.Property<string>("ClaimValue")
-                        .HasColumnType("text");
-                    b.Property<string>("RoleId")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.HasIndex("RoleId");
-                    b.ToTable("AspNetRoleClaims", (string)null);
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim<string>", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<string>("ClaimType")
-                        .HasColumnType("text");
-                    b.Property<string>("ClaimValue")
-                        .HasColumnType("text");
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.HasIndex("UserId");
-                    b.ToTable("AspNetUserClaims", (string)null);
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin<string>", b =>
-                {
-                    b.Property<string>("LoginProvider")
-                        .HasMaxLength(128)
-                        .HasColumnType("character varying(128)");
-                    b.Property<string>("ProviderKey")
-                        .HasMaxLength(128)
-                        .HasColumnType("character varying(128)");
-                    b.Property<string>("ProviderDisplayName")
-                        .HasColumnType("text");
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("LoginProvider", "ProviderKey");
-                    b.HasIndex("UserId");
-                    b.ToTable("AspNetUserLogins", (string)null);
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole<string>", b =>
-                {
-                    b.Property<string>("UserId")
-                        .HasColumnType("text");
-                    b.Property<string>("RoleId")
-                        .HasColumnType("text");
-                    b.HasKey("UserId", "RoleId");
-                    b.HasIndex("RoleId");
-                    b.ToTable("AspNetUserRoles", (string)null);
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken<string>", b =>
-                {
-                    b.Property<string>("UserId")
-                        .HasColumnType("text");
-                    b.Property<string>("LoginProvider")
-                        .HasMaxLength(128)
-                        .HasColumnType("character varying(128)");
-                    b.Property<string>("Name")
-                        .HasMaxLength(128)
-                        .HasColumnType("character varying(128)");
-                    b.Property<string>("Value")
-                        .HasColumnType("text");
-                    b.HasKey("UserId", "LoginProvider", "Name");
-                    b.ToTable("AspNetUserTokens", (string)null);
-                });
-            modelBuilder.Entity("NutriMatch.Models.FavoriteRecipe", b =>
-                {
-                    b.Property<string>("UserId")
-                        .HasColumnType("text");
-                    b.Property<int>("RecipeId")
-                        .HasColumnType("integer");
-                    b.HasKey("UserId", "RecipeId");
-                    b.HasIndex("RecipeId");
-                    b.ToTable("FavoriteRecipes");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Ingredient", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<float>("Calories")
-                        .HasColumnType("real");
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real");
-                    b.Property<float>("Fat")
-                        .HasColumnType("real");
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<float>("Protein")
-                        .HasColumnType("real");
-                    b.HasKey("Id");
-                    b.ToTable("Ingredients");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<string>("AdminComment")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<float>("Calories")
-                        .HasColumnType("real");
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real");
-                    b.Property<DateTime>("CreatedAt")
-                        .HasColumnType("timestamp with time zone");
-                    b.Property<string>("DeclineReason")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<float>("Fat")
-                        .HasColumnType("real");
-                    b.Property<string>("ImageUrl")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.PrimitiveCollection<string[]>("Instructions")
-                        .HasColumnType("text[]");
-                    b.Property<float>("Protein")
-                        .HasColumnType("real");
-                    b.Property<string>("RecipeStatus")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<string>("Title")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.HasIndex("UserId");
-                    b.ToTable("Recipes");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RecipeIngredient", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<int>("IngredientId")
-                        .HasColumnType("integer");
-                    b.Property<float>("Quantity")
-                        .HasColumnType("real");
-                    b.Property<int>("RecipeId")
-                        .HasColumnType("integer");
-                    b.Property<string>("Unit")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.HasIndex("IngredientId");
-                    b.HasIndex("RecipeId");
-                    b.ToTable("RecipeIngredients");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RecipeRating", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<double>("Rating")
-                        .HasColumnType("double precision");
-                    b.Property<int>("RecipeId")
-                        .HasColumnType("integer");
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.HasIndex("RecipeId");
-                    b.HasIndex("UserId", "RecipeId")
-                        .IsUnique();
-                    b.ToTable("RecipeRatings");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Restaurant", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<string>("Description")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<string>("ImageUrl")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.ToTable("Restaurants");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RestaurantMeal", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<float>("Calories")
-                        .HasColumnType("real");
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real");
-                    b.Property<float>("Fat")
-                        .HasColumnType("real");
-                    b.Property<string>("ItemDescription")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<string>("ItemName")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<float>("Protein")
-                        .HasColumnType("real");
-                    b.Property<int?>("RestaurantId")
-                        .HasColumnType("integer");
-                    b.Property<string>("RestaurantName")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.HasIndex("RestaurantId");
-                    b.ToTable("RestaurantMeals");
-                });
-            modelBuilder.Entity("NutriMatch.Models.User", b =>
-                {
-                    b.Property<string>("Id")
-                        .HasColumnType("text");
-                    b.Property<int>("AccessFailedCount")
-                        .HasColumnType("integer");
-                    b.Property<string>("ConcurrencyStamp")
-                        .IsConcurrencyToken()
-                        .HasColumnType("text");
-                    b.Property<string>("Email")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-                    b.Property<bool>("EmailConfirmed")
-                        .HasColumnType("boolean");
-                    b.Property<bool>("LockoutEnabled")
-                        .HasColumnType("boolean");
-                    b.Property<DateTimeOffset?>("LockoutEnd")
-                        .HasColumnType("timestamp with time zone");
-                    b.Property<string>("NormalizedEmail")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-                    b.Property<string>("NormalizedUserName")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-                    b.Property<string>("PasswordHash")
-                        .HasColumnType("text");
-                    b.Property<string>("PhoneNumber")
-                        .HasColumnType("text");
-                    b.Property<bool>("PhoneNumberConfirmed")
-                        .HasColumnType("boolean");
-                    b.Property<string>("ProfilePictureUrl")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<string>("SecurityStamp")
-                        .HasColumnType("text");
-                    b.Property<bool>("TwoFactorEnabled")
-                        .HasColumnType("boolean");
-                    b.Property<string>("UserName")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-                    b.HasKey("Id");
-                    b.HasIndex("NormalizedEmail")
-                        .HasDatabaseName("EmailIndex");
-                    b.HasIndex("NormalizedUserName")
-                        .IsUnique()
-                        .HasDatabaseName("UserNameIndex");
-                    b.ToTable("AspNetUsers", (string)null);
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim<string>", b =>
-                {
-                    b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null)
-                        .WithMany()
-                        .HasForeignKey("RoleId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim<string>", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", null)
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin<string>", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", null)
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole<string>", b =>
-                {
-                    b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null)
-                        .WithMany()
-                        .HasForeignKey("RoleId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.HasOne("NutriMatch.Models.User", null)
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken<string>", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", null)
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-            modelBuilder.Entity("NutriMatch.Models.FavoriteRecipe", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Recipe", "Recipe")
-                        .WithMany("FavoritedBy")
-                        .HasForeignKey("RecipeId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.HasOne("NutriMatch.Models.User", "User")
-                        .WithMany("FavoriteRecipes")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.Navigation("Recipe");
-                    b.Navigation("User");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", "User")
-                        .WithMany("Recipes")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.Navigation("User");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RecipeIngredient", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Ingredient", "Ingredient")
-                        .WithMany()
-                        .HasForeignKey("IngredientId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.HasOne("NutriMatch.Models.Recipe", null)
-                        .WithMany("RecipeIngredients")
-                        .HasForeignKey("RecipeId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.Navigation("Ingredient");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RecipeRating", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Recipe", "Recipe")
-                        .WithMany("Ratings")
-                        .HasForeignKey("RecipeId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.HasOne("NutriMatch.Models.User", "User")
-                        .WithMany("Ratings")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.Navigation("Recipe");
-                    b.Navigation("User");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RestaurantMeal", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Restaurant", "Restaurant")
-                        .WithMany("RestaurantMeals")
-                        .HasForeignKey("RestaurantId");
-                    b.Navigation("Restaurant");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.Navigation("FavoritedBy");
-                    b.Navigation("Ratings");
-                    b.Navigation("RecipeIngredients");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Restaurant", b =>
-                {
-                    b.Navigation("RestaurantMeals");
-                });
-            modelBuilder.Entity("NutriMatch.Models.User", b =>
-                {
-                    b.Navigation("FavoriteRecipes");
-                    b.Navigation("Ratings");
-                    b.Navigation("Recipes");
-                });
-#pragma warning restore 612, 618
-        }
-    }
-}
Index: triMatch/Migrations/20250810011611_RecipeDeclineNoteAdded.cs
===================================================================
--- NutriMatch/Migrations/20250810011611_RecipeDeclineNoteAdded.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,23 +1,0 @@
-﻿using Microsoft.EntityFrameworkCore.Migrations;
-#nullable disable
-namespace NutriMatch.Migrations
-{
-    public partial class RecipeDeclineNoteAdded : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.AddColumn<string>(
-                name: "DeclineReason",
-                table: "Recipes",
-                type: "text",
-                nullable: false,
-                defaultValue: "");
-        }
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropColumn(
-                name: "DeclineReason",
-                table: "Recipes");
-        }
-    }
-}
Index: triMatch/Migrations/20250812123601_AddFoodType.Designer.cs
===================================================================
--- NutriMatch/Migrations/20250812123601_AddFoodType.Designer.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,450 +1,0 @@
-﻿// <auto-generated />
-using System;
-using System.Collections.Generic;
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Migrations;
-using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
-using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
-using NutriMatch.Data;
-#nullable disable
-namespace NutriMatch.Migrations
-{
-    [DbContext(typeof(AppDbContext))]
-    [Migration("20250812123601_AddFoodType")]
-    partial class AddFoodType
-    {
-        protected override void BuildTargetModel(ModelBuilder modelBuilder)
-        {
-#pragma warning disable 612, 618
-            modelBuilder
-                .HasAnnotation("ProductVersion", "9.0.7")
-                .HasAnnotation("Relational:MaxIdentifierLength", 63);
-            NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b =>
-                {
-                    b.Property<string>("Id")
-                        .HasColumnType("text");
-                    b.Property<string>("ConcurrencyStamp")
-                        .IsConcurrencyToken()
-                        .HasColumnType("text");
-                    b.Property<string>("Name")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-                    b.Property<string>("NormalizedName")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-                    b.HasKey("Id");
-                    b.HasIndex("NormalizedName")
-                        .IsUnique()
-                        .HasDatabaseName("RoleNameIndex");
-                    b.ToTable("AspNetRoles", (string)null);
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim<string>", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<string>("ClaimType")
-                        .HasColumnType("text");
-                    b.Property<string>("ClaimValue")
-                        .HasColumnType("text");
-                    b.Property<string>("RoleId")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.HasIndex("RoleId");
-                    b.ToTable("AspNetRoleClaims", (string)null);
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim<string>", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<string>("ClaimType")
-                        .HasColumnType("text");
-                    b.Property<string>("ClaimValue")
-                        .HasColumnType("text");
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.HasIndex("UserId");
-                    b.ToTable("AspNetUserClaims", (string)null);
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin<string>", b =>
-                {
-                    b.Property<string>("LoginProvider")
-                        .HasMaxLength(128)
-                        .HasColumnType("character varying(128)");
-                    b.Property<string>("ProviderKey")
-                        .HasMaxLength(128)
-                        .HasColumnType("character varying(128)");
-                    b.Property<string>("ProviderDisplayName")
-                        .HasColumnType("text");
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("LoginProvider", "ProviderKey");
-                    b.HasIndex("UserId");
-                    b.ToTable("AspNetUserLogins", (string)null);
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole<string>", b =>
-                {
-                    b.Property<string>("UserId")
-                        .HasColumnType("text");
-                    b.Property<string>("RoleId")
-                        .HasColumnType("text");
-                    b.HasKey("UserId", "RoleId");
-                    b.HasIndex("RoleId");
-                    b.ToTable("AspNetUserRoles", (string)null);
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken<string>", b =>
-                {
-                    b.Property<string>("UserId")
-                        .HasColumnType("text");
-                    b.Property<string>("LoginProvider")
-                        .HasMaxLength(128)
-                        .HasColumnType("character varying(128)");
-                    b.Property<string>("Name")
-                        .HasMaxLength(128)
-                        .HasColumnType("character varying(128)");
-                    b.Property<string>("Value")
-                        .HasColumnType("text");
-                    b.HasKey("UserId", "LoginProvider", "Name");
-                    b.ToTable("AspNetUserTokens", (string)null);
-                });
-            modelBuilder.Entity("NutriMatch.Models.FavoriteRecipe", b =>
-                {
-                    b.Property<string>("UserId")
-                        .HasColumnType("text");
-                    b.Property<int>("RecipeId")
-                        .HasColumnType("integer");
-                    b.HasKey("UserId", "RecipeId");
-                    b.HasIndex("RecipeId");
-                    b.ToTable("FavoriteRecipes");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Ingredient", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<float>("Calories")
-                        .HasColumnType("real");
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real");
-                    b.Property<float>("Fat")
-                        .HasColumnType("real");
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<float>("Protein")
-                        .HasColumnType("real");
-                    b.HasKey("Id");
-                    b.ToTable("Ingredients");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<string>("AdminComment")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<float>("Calories")
-                        .HasColumnType("real");
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real");
-                    b.Property<DateTime>("CreatedAt")
-                        .HasColumnType("timestamp with time zone");
-                    b.Property<string>("DeclineReason")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<float>("Fat")
-                        .HasColumnType("real");
-                    b.Property<string>("ImageUrl")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.PrimitiveCollection<string[]>("Instructions")
-                        .HasColumnType("text[]");
-                    b.Property<float>("Protein")
-                        .HasColumnType("real");
-                    b.Property<string>("RecipeStatus")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<string>("Title")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.PrimitiveCollection<List<string>>("Type")
-                        .IsRequired()
-                        .HasColumnType("text[]");
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.HasIndex("UserId");
-                    b.ToTable("Recipes");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RecipeIngredient", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<int>("IngredientId")
-                        .HasColumnType("integer");
-                    b.Property<float>("Quantity")
-                        .HasColumnType("real");
-                    b.Property<int>("RecipeId")
-                        .HasColumnType("integer");
-                    b.Property<string>("Unit")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.HasIndex("IngredientId");
-                    b.HasIndex("RecipeId");
-                    b.ToTable("RecipeIngredients");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RecipeRating", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<double>("Rating")
-                        .HasColumnType("double precision");
-                    b.Property<int>("RecipeId")
-                        .HasColumnType("integer");
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.HasIndex("RecipeId");
-                    b.HasIndex("UserId", "RecipeId")
-                        .IsUnique();
-                    b.ToTable("RecipeRatings");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Restaurant", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<string>("Description")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<string>("ImageUrl")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.ToTable("Restaurants");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RestaurantMeal", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<float>("Calories")
-                        .HasColumnType("real");
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real");
-                    b.Property<float>("Fat")
-                        .HasColumnType("real");
-                    b.Property<string>("ItemDescription")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<string>("ItemName")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<float>("Protein")
-                        .HasColumnType("real");
-                    b.Property<int?>("RestaurantId")
-                        .HasColumnType("integer");
-                    b.Property<string>("RestaurantName")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.HasIndex("RestaurantId");
-                    b.ToTable("RestaurantMeals");
-                });
-            modelBuilder.Entity("NutriMatch.Models.User", b =>
-                {
-                    b.Property<string>("Id")
-                        .HasColumnType("text");
-                    b.Property<int>("AccessFailedCount")
-                        .HasColumnType("integer");
-                    b.Property<string>("ConcurrencyStamp")
-                        .IsConcurrencyToken()
-                        .HasColumnType("text");
-                    b.Property<string>("Email")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-                    b.Property<bool>("EmailConfirmed")
-                        .HasColumnType("boolean");
-                    b.Property<bool>("LockoutEnabled")
-                        .HasColumnType("boolean");
-                    b.Property<DateTimeOffset?>("LockoutEnd")
-                        .HasColumnType("timestamp with time zone");
-                    b.Property<string>("NormalizedEmail")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-                    b.Property<string>("NormalizedUserName")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-                    b.Property<string>("PasswordHash")
-                        .HasColumnType("text");
-                    b.Property<string>("PhoneNumber")
-                        .HasColumnType("text");
-                    b.Property<bool>("PhoneNumberConfirmed")
-                        .HasColumnType("boolean");
-                    b.Property<string>("ProfilePictureUrl")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<string>("SecurityStamp")
-                        .HasColumnType("text");
-                    b.Property<bool>("TwoFactorEnabled")
-                        .HasColumnType("boolean");
-                    b.Property<string>("UserName")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-                    b.HasKey("Id");
-                    b.HasIndex("NormalizedEmail")
-                        .HasDatabaseName("EmailIndex");
-                    b.HasIndex("NormalizedUserName")
-                        .IsUnique()
-                        .HasDatabaseName("UserNameIndex");
-                    b.ToTable("AspNetUsers", (string)null);
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim<string>", b =>
-                {
-                    b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null)
-                        .WithMany()
-                        .HasForeignKey("RoleId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim<string>", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", null)
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin<string>", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", null)
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole<string>", b =>
-                {
-                    b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null)
-                        .WithMany()
-                        .HasForeignKey("RoleId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.HasOne("NutriMatch.Models.User", null)
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken<string>", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", null)
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-            modelBuilder.Entity("NutriMatch.Models.FavoriteRecipe", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Recipe", "Recipe")
-                        .WithMany("FavoritedBy")
-                        .HasForeignKey("RecipeId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.HasOne("NutriMatch.Models.User", "User")
-                        .WithMany("FavoriteRecipes")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.Navigation("Recipe");
-                    b.Navigation("User");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", "User")
-                        .WithMany("Recipes")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.Navigation("User");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RecipeIngredient", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Ingredient", "Ingredient")
-                        .WithMany()
-                        .HasForeignKey("IngredientId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.HasOne("NutriMatch.Models.Recipe", null)
-                        .WithMany("RecipeIngredients")
-                        .HasForeignKey("RecipeId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.Navigation("Ingredient");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RecipeRating", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Recipe", "Recipe")
-                        .WithMany("Ratings")
-                        .HasForeignKey("RecipeId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.HasOne("NutriMatch.Models.User", "User")
-                        .WithMany("Ratings")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.Navigation("Recipe");
-                    b.Navigation("User");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RestaurantMeal", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Restaurant", "Restaurant")
-                        .WithMany("RestaurantMeals")
-                        .HasForeignKey("RestaurantId");
-                    b.Navigation("Restaurant");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.Navigation("FavoritedBy");
-                    b.Navigation("Ratings");
-                    b.Navigation("RecipeIngredients");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Restaurant", b =>
-                {
-                    b.Navigation("RestaurantMeals");
-                });
-            modelBuilder.Entity("NutriMatch.Models.User", b =>
-                {
-                    b.Navigation("FavoriteRecipes");
-                    b.Navigation("Ratings");
-                    b.Navigation("Recipes");
-                });
-#pragma warning restore 612, 618
-        }
-    }
-}
Index: triMatch/Migrations/20250812123601_AddFoodType.cs
===================================================================
--- NutriMatch/Migrations/20250812123601_AddFoodType.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,23 +1,0 @@
-﻿using System.Collections.Generic;
-using Microsoft.EntityFrameworkCore.Migrations;
-#nullable disable
-namespace NutriMatch.Migrations
-{
-    public partial class AddFoodType : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.AddColumn<List<string>>(
-                name: "Type",
-                table: "Recipes",
-                type: "text[]",
-                nullable: false);
-        }
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropColumn(
-                name: "Type",
-                table: "Recipes");
-        }
-    }
-}
Index: triMatch/Migrations/20250814155629_AddRestaurantMealType.Designer.cs
===================================================================
--- NutriMatch/Migrations/20250814155629_AddRestaurantMealType.Designer.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,453 +1,0 @@
-﻿// <auto-generated />
-using System;
-using System.Collections.Generic;
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Migrations;
-using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
-using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
-using NutriMatch.Data;
-#nullable disable
-namespace NutriMatch.Migrations
-{
-    [DbContext(typeof(AppDbContext))]
-    [Migration("20250814155629_AddRestaurantMealType")]
-    partial class AddRestaurantMealType
-    {
-        protected override void BuildTargetModel(ModelBuilder modelBuilder)
-        {
-#pragma warning disable 612, 618
-            modelBuilder
-                .HasAnnotation("ProductVersion", "9.0.7")
-                .HasAnnotation("Relational:MaxIdentifierLength", 63);
-            NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b =>
-                {
-                    b.Property<string>("Id")
-                        .HasColumnType("text");
-                    b.Property<string>("ConcurrencyStamp")
-                        .IsConcurrencyToken()
-                        .HasColumnType("text");
-                    b.Property<string>("Name")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-                    b.Property<string>("NormalizedName")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-                    b.HasKey("Id");
-                    b.HasIndex("NormalizedName")
-                        .IsUnique()
-                        .HasDatabaseName("RoleNameIndex");
-                    b.ToTable("AspNetRoles", (string)null);
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim<string>", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<string>("ClaimType")
-                        .HasColumnType("text");
-                    b.Property<string>("ClaimValue")
-                        .HasColumnType("text");
-                    b.Property<string>("RoleId")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.HasIndex("RoleId");
-                    b.ToTable("AspNetRoleClaims", (string)null);
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim<string>", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<string>("ClaimType")
-                        .HasColumnType("text");
-                    b.Property<string>("ClaimValue")
-                        .HasColumnType("text");
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.HasIndex("UserId");
-                    b.ToTable("AspNetUserClaims", (string)null);
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin<string>", b =>
-                {
-                    b.Property<string>("LoginProvider")
-                        .HasMaxLength(128)
-                        .HasColumnType("character varying(128)");
-                    b.Property<string>("ProviderKey")
-                        .HasMaxLength(128)
-                        .HasColumnType("character varying(128)");
-                    b.Property<string>("ProviderDisplayName")
-                        .HasColumnType("text");
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("LoginProvider", "ProviderKey");
-                    b.HasIndex("UserId");
-                    b.ToTable("AspNetUserLogins", (string)null);
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole<string>", b =>
-                {
-                    b.Property<string>("UserId")
-                        .HasColumnType("text");
-                    b.Property<string>("RoleId")
-                        .HasColumnType("text");
-                    b.HasKey("UserId", "RoleId");
-                    b.HasIndex("RoleId");
-                    b.ToTable("AspNetUserRoles", (string)null);
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken<string>", b =>
-                {
-                    b.Property<string>("UserId")
-                        .HasColumnType("text");
-                    b.Property<string>("LoginProvider")
-                        .HasMaxLength(128)
-                        .HasColumnType("character varying(128)");
-                    b.Property<string>("Name")
-                        .HasMaxLength(128)
-                        .HasColumnType("character varying(128)");
-                    b.Property<string>("Value")
-                        .HasColumnType("text");
-                    b.HasKey("UserId", "LoginProvider", "Name");
-                    b.ToTable("AspNetUserTokens", (string)null);
-                });
-            modelBuilder.Entity("NutriMatch.Models.FavoriteRecipe", b =>
-                {
-                    b.Property<string>("UserId")
-                        .HasColumnType("text");
-                    b.Property<int>("RecipeId")
-                        .HasColumnType("integer");
-                    b.HasKey("UserId", "RecipeId");
-                    b.HasIndex("RecipeId");
-                    b.ToTable("FavoriteRecipes");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Ingredient", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<float>("Calories")
-                        .HasColumnType("real");
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real");
-                    b.Property<float>("Fat")
-                        .HasColumnType("real");
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<float>("Protein")
-                        .HasColumnType("real");
-                    b.HasKey("Id");
-                    b.ToTable("Ingredients");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<string>("AdminComment")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<float>("Calories")
-                        .HasColumnType("real");
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real");
-                    b.Property<DateTime>("CreatedAt")
-                        .HasColumnType("timestamp with time zone");
-                    b.Property<string>("DeclineReason")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<float>("Fat")
-                        .HasColumnType("real");
-                    b.Property<string>("ImageUrl")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.PrimitiveCollection<string[]>("Instructions")
-                        .HasColumnType("text[]");
-                    b.Property<float>("Protein")
-                        .HasColumnType("real");
-                    b.Property<string>("RecipeStatus")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<string>("Title")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.PrimitiveCollection<List<string>>("Type")
-                        .IsRequired()
-                        .HasColumnType("text[]");
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.HasIndex("UserId");
-                    b.ToTable("Recipes");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RecipeIngredient", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<int>("IngredientId")
-                        .HasColumnType("integer");
-                    b.Property<float>("Quantity")
-                        .HasColumnType("real");
-                    b.Property<int>("RecipeId")
-                        .HasColumnType("integer");
-                    b.Property<string>("Unit")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.HasIndex("IngredientId");
-                    b.HasIndex("RecipeId");
-                    b.ToTable("RecipeIngredients");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RecipeRating", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<double>("Rating")
-                        .HasColumnType("double precision");
-                    b.Property<int>("RecipeId")
-                        .HasColumnType("integer");
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.HasIndex("RecipeId");
-                    b.HasIndex("UserId", "RecipeId")
-                        .IsUnique();
-                    b.ToTable("RecipeRatings");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Restaurant", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<string>("Description")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<string>("ImageUrl")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.ToTable("Restaurants");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RestaurantMeal", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<float>("Calories")
-                        .HasColumnType("real");
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real");
-                    b.Property<float>("Fat")
-                        .HasColumnType("real");
-                    b.Property<string>("ItemDescription")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<string>("ItemName")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<float>("Protein")
-                        .HasColumnType("real");
-                    b.Property<int?>("RestaurantId")
-                        .HasColumnType("integer");
-                    b.Property<string>("RestaurantName")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.PrimitiveCollection<List<string>>("Type")
-                        .IsRequired()
-                        .HasColumnType("text[]");
-                    b.HasKey("Id");
-                    b.HasIndex("RestaurantId");
-                    b.ToTable("RestaurantMeals");
-                });
-            modelBuilder.Entity("NutriMatch.Models.User", b =>
-                {
-                    b.Property<string>("Id")
-                        .HasColumnType("text");
-                    b.Property<int>("AccessFailedCount")
-                        .HasColumnType("integer");
-                    b.Property<string>("ConcurrencyStamp")
-                        .IsConcurrencyToken()
-                        .HasColumnType("text");
-                    b.Property<string>("Email")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-                    b.Property<bool>("EmailConfirmed")
-                        .HasColumnType("boolean");
-                    b.Property<bool>("LockoutEnabled")
-                        .HasColumnType("boolean");
-                    b.Property<DateTimeOffset?>("LockoutEnd")
-                        .HasColumnType("timestamp with time zone");
-                    b.Property<string>("NormalizedEmail")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-                    b.Property<string>("NormalizedUserName")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-                    b.Property<string>("PasswordHash")
-                        .HasColumnType("text");
-                    b.Property<string>("PhoneNumber")
-                        .HasColumnType("text");
-                    b.Property<bool>("PhoneNumberConfirmed")
-                        .HasColumnType("boolean");
-                    b.Property<string>("ProfilePictureUrl")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<string>("SecurityStamp")
-                        .HasColumnType("text");
-                    b.Property<bool>("TwoFactorEnabled")
-                        .HasColumnType("boolean");
-                    b.Property<string>("UserName")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-                    b.HasKey("Id");
-                    b.HasIndex("NormalizedEmail")
-                        .HasDatabaseName("EmailIndex");
-                    b.HasIndex("NormalizedUserName")
-                        .IsUnique()
-                        .HasDatabaseName("UserNameIndex");
-                    b.ToTable("AspNetUsers", (string)null);
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim<string>", b =>
-                {
-                    b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null)
-                        .WithMany()
-                        .HasForeignKey("RoleId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim<string>", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", null)
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin<string>", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", null)
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole<string>", b =>
-                {
-                    b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null)
-                        .WithMany()
-                        .HasForeignKey("RoleId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.HasOne("NutriMatch.Models.User", null)
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken<string>", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", null)
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-            modelBuilder.Entity("NutriMatch.Models.FavoriteRecipe", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Recipe", "Recipe")
-                        .WithMany("FavoritedBy")
-                        .HasForeignKey("RecipeId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.HasOne("NutriMatch.Models.User", "User")
-                        .WithMany("FavoriteRecipes")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.Navigation("Recipe");
-                    b.Navigation("User");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", "User")
-                        .WithMany("Recipes")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.Navigation("User");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RecipeIngredient", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Ingredient", "Ingredient")
-                        .WithMany()
-                        .HasForeignKey("IngredientId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.HasOne("NutriMatch.Models.Recipe", null)
-                        .WithMany("RecipeIngredients")
-                        .HasForeignKey("RecipeId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.Navigation("Ingredient");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RecipeRating", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Recipe", "Recipe")
-                        .WithMany("Ratings")
-                        .HasForeignKey("RecipeId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.HasOne("NutriMatch.Models.User", "User")
-                        .WithMany("Ratings")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.Navigation("Recipe");
-                    b.Navigation("User");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RestaurantMeal", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Restaurant", "Restaurant")
-                        .WithMany("RestaurantMeals")
-                        .HasForeignKey("RestaurantId");
-                    b.Navigation("Restaurant");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.Navigation("FavoritedBy");
-                    b.Navigation("Ratings");
-                    b.Navigation("RecipeIngredients");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Restaurant", b =>
-                {
-                    b.Navigation("RestaurantMeals");
-                });
-            modelBuilder.Entity("NutriMatch.Models.User", b =>
-                {
-                    b.Navigation("FavoriteRecipes");
-                    b.Navigation("Ratings");
-                    b.Navigation("Recipes");
-                });
-#pragma warning restore 612, 618
-        }
-    }
-}
Index: triMatch/Migrations/20250814155629_AddRestaurantMealType.cs
===================================================================
--- NutriMatch/Migrations/20250814155629_AddRestaurantMealType.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,23 +1,0 @@
-﻿using System.Collections.Generic;
-using Microsoft.EntityFrameworkCore.Migrations;
-#nullable disable
-namespace NutriMatch.Migrations
-{
-    public partial class AddRestaurantMealType : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.AddColumn<List<string>>(
-                name: "Type",
-                table: "RestaurantMeals",
-                type: "text[]",
-                nullable: true);
-        }
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropColumn(
-                name: "Type",
-                table: "RestaurantMeals");
-        }
-    }
-}
Index: triMatch/Migrations/20250815115511_AddMealPlan.Designer.cs
===================================================================
--- NutriMatch/Migrations/20250815115511_AddMealPlan.Designer.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,515 +1,0 @@
-﻿// <auto-generated />
-using System;
-using System.Collections.Generic;
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Migrations;
-using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
-using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
-using NutriMatch.Data;
-#nullable disable
-namespace NutriMatch.Migrations
-{
-    [DbContext(typeof(AppDbContext))]
-    [Migration("20250815115511_AddMealPlan")]
-    partial class AddMealPlan
-    {
-        protected override void BuildTargetModel(ModelBuilder modelBuilder)
-        {
-#pragma warning disable 612, 618
-            modelBuilder
-                .HasAnnotation("ProductVersion", "9.0.7")
-                .HasAnnotation("Relational:MaxIdentifierLength", 63);
-            NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b =>
-                {
-                    b.Property<string>("Id")
-                        .HasColumnType("text");
-                    b.Property<string>("ConcurrencyStamp")
-                        .IsConcurrencyToken()
-                        .HasColumnType("text");
-                    b.Property<string>("Name")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-                    b.Property<string>("NormalizedName")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-                    b.HasKey("Id");
-                    b.HasIndex("NormalizedName")
-                        .IsUnique()
-                        .HasDatabaseName("RoleNameIndex");
-                    b.ToTable("AspNetRoles", (string)null);
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim<string>", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<string>("ClaimType")
-                        .HasColumnType("text");
-                    b.Property<string>("ClaimValue")
-                        .HasColumnType("text");
-                    b.Property<string>("RoleId")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.HasIndex("RoleId");
-                    b.ToTable("AspNetRoleClaims", (string)null);
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim<string>", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<string>("ClaimType")
-                        .HasColumnType("text");
-                    b.Property<string>("ClaimValue")
-                        .HasColumnType("text");
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.HasIndex("UserId");
-                    b.ToTable("AspNetUserClaims", (string)null);
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin<string>", b =>
-                {
-                    b.Property<string>("LoginProvider")
-                        .HasMaxLength(128)
-                        .HasColumnType("character varying(128)");
-                    b.Property<string>("ProviderKey")
-                        .HasMaxLength(128)
-                        .HasColumnType("character varying(128)");
-                    b.Property<string>("ProviderDisplayName")
-                        .HasColumnType("text");
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("LoginProvider", "ProviderKey");
-                    b.HasIndex("UserId");
-                    b.ToTable("AspNetUserLogins", (string)null);
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole<string>", b =>
-                {
-                    b.Property<string>("UserId")
-                        .HasColumnType("text");
-                    b.Property<string>("RoleId")
-                        .HasColumnType("text");
-                    b.HasKey("UserId", "RoleId");
-                    b.HasIndex("RoleId");
-                    b.ToTable("AspNetUserRoles", (string)null);
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken<string>", b =>
-                {
-                    b.Property<string>("UserId")
-                        .HasColumnType("text");
-                    b.Property<string>("LoginProvider")
-                        .HasMaxLength(128)
-                        .HasColumnType("character varying(128)");
-                    b.Property<string>("Name")
-                        .HasMaxLength(128)
-                        .HasColumnType("character varying(128)");
-                    b.Property<string>("Value")
-                        .HasColumnType("text");
-                    b.HasKey("UserId", "LoginProvider", "Name");
-                    b.ToTable("AspNetUserTokens", (string)null);
-                });
-            modelBuilder.Entity("NutriMatch.Models.FavoriteRecipe", b =>
-                {
-                    b.Property<string>("UserId")
-                        .HasColumnType("text");
-                    b.Property<int>("RecipeId")
-                        .HasColumnType("integer");
-                    b.HasKey("UserId", "RecipeId");
-                    b.HasIndex("RecipeId");
-                    b.ToTable("FavoriteRecipes");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Ingredient", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<float>("Calories")
-                        .HasColumnType("real");
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real");
-                    b.Property<float>("Fat")
-                        .HasColumnType("real");
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<float>("Protein")
-                        .HasColumnType("real");
-                    b.HasKey("Id");
-                    b.ToTable("Ingredients");
-                });
-            modelBuilder.Entity("NutriMatch.Models.MealSlot", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<string>("Day")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<bool>("IsRestaurantMeal")
-                        .HasColumnType("boolean");
-                    b.Property<string>("MealType")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<int>("RecipeId")
-                        .HasColumnType("integer");
-                    b.Property<int>("RestaurantMealId")
-                        .HasColumnType("integer");
-                    b.Property<int?>("WeeklyMealPlanId")
-                        .HasColumnType("integer");
-                    b.HasKey("Id");
-                    b.HasIndex("RecipeId");
-                    b.HasIndex("RestaurantMealId");
-                    b.HasIndex("WeeklyMealPlanId");
-                    b.ToTable("MealSlots");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<string>("AdminComment")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<float>("Calories")
-                        .HasColumnType("real");
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real");
-                    b.Property<DateTime>("CreatedAt")
-                        .HasColumnType("timestamp with time zone");
-                    b.Property<string>("DeclineReason")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<float>("Fat")
-                        .HasColumnType("real");
-                    b.Property<string>("ImageUrl")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.PrimitiveCollection<string[]>("Instructions")
-                        .HasColumnType("text[]");
-                    b.Property<float>("Protein")
-                        .HasColumnType("real");
-                    b.Property<string>("RecipeStatus")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<string>("Title")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.PrimitiveCollection<List<string>>("Type")
-                        .IsRequired()
-                        .HasColumnType("text[]");
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.HasIndex("UserId");
-                    b.ToTable("Recipes");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RecipeIngredient", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<int>("IngredientId")
-                        .HasColumnType("integer");
-                    b.Property<float>("Quantity")
-                        .HasColumnType("real");
-                    b.Property<int>("RecipeId")
-                        .HasColumnType("integer");
-                    b.Property<string>("Unit")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.HasIndex("IngredientId");
-                    b.HasIndex("RecipeId");
-                    b.ToTable("RecipeIngredients");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RecipeRating", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<double>("Rating")
-                        .HasColumnType("double precision");
-                    b.Property<int>("RecipeId")
-                        .HasColumnType("integer");
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.HasIndex("RecipeId");
-                    b.HasIndex("UserId", "RecipeId")
-                        .IsUnique();
-                    b.ToTable("RecipeRatings");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Restaurant", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<string>("Description")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<string>("ImageUrl")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.ToTable("Restaurants");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RestaurantMeal", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<float>("Calories")
-                        .HasColumnType("real");
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real");
-                    b.Property<float>("Fat")
-                        .HasColumnType("real");
-                    b.Property<string>("ItemDescription")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<string>("ItemName")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<float>("Protein")
-                        .HasColumnType("real");
-                    b.Property<int?>("RestaurantId")
-                        .HasColumnType("integer");
-                    b.Property<string>("RestaurantName")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.PrimitiveCollection<List<string>>("Type")
-                        .IsRequired()
-                        .HasColumnType("text[]");
-                    b.HasKey("Id");
-                    b.HasIndex("RestaurantId");
-                    b.ToTable("RestaurantMeals");
-                });
-            modelBuilder.Entity("NutriMatch.Models.User", b =>
-                {
-                    b.Property<string>("Id")
-                        .HasColumnType("text");
-                    b.Property<int>("AccessFailedCount")
-                        .HasColumnType("integer");
-                    b.Property<string>("ConcurrencyStamp")
-                        .IsConcurrencyToken()
-                        .HasColumnType("text");
-                    b.Property<string>("Email")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-                    b.Property<bool>("EmailConfirmed")
-                        .HasColumnType("boolean");
-                    b.Property<bool>("LockoutEnabled")
-                        .HasColumnType("boolean");
-                    b.Property<DateTimeOffset?>("LockoutEnd")
-                        .HasColumnType("timestamp with time zone");
-                    b.Property<string>("NormalizedEmail")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-                    b.Property<string>("NormalizedUserName")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-                    b.Property<string>("PasswordHash")
-                        .HasColumnType("text");
-                    b.Property<string>("PhoneNumber")
-                        .HasColumnType("text");
-                    b.Property<bool>("PhoneNumberConfirmed")
-                        .HasColumnType("boolean");
-                    b.Property<string>("ProfilePictureUrl")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<string>("SecurityStamp")
-                        .HasColumnType("text");
-                    b.Property<bool>("TwoFactorEnabled")
-                        .HasColumnType("boolean");
-                    b.Property<string>("UserName")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-                    b.HasKey("Id");
-                    b.HasIndex("NormalizedEmail")
-                        .HasDatabaseName("EmailIndex");
-                    b.HasIndex("NormalizedUserName")
-                        .IsUnique()
-                        .HasDatabaseName("UserNameIndex");
-                    b.ToTable("AspNetUsers", (string)null);
-                });
-            modelBuilder.Entity("NutriMatch.Models.WeeklyMealPlan", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<DateTime>("GeneratedAt")
-                        .HasColumnType("timestamp with time zone");
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.ToTable("WeeklyMealPlans");
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim<string>", b =>
-                {
-                    b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null)
-                        .WithMany()
-                        .HasForeignKey("RoleId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim<string>", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", null)
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin<string>", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", null)
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole<string>", b =>
-                {
-                    b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null)
-                        .WithMany()
-                        .HasForeignKey("RoleId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.HasOne("NutriMatch.Models.User", null)
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken<string>", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", null)
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-            modelBuilder.Entity("NutriMatch.Models.FavoriteRecipe", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Recipe", "Recipe")
-                        .WithMany("FavoritedBy")
-                        .HasForeignKey("RecipeId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.HasOne("NutriMatch.Models.User", "User")
-                        .WithMany("FavoriteRecipes")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.Navigation("Recipe");
-                    b.Navigation("User");
-                });
-            modelBuilder.Entity("NutriMatch.Models.MealSlot", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Recipe", "Recipe")
-                        .WithMany()
-                        .HasForeignKey("RecipeId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.HasOne("NutriMatch.Models.RestaurantMeal", "RestaurantMeal")
-                        .WithMany()
-                        .HasForeignKey("RestaurantMealId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.HasOne("NutriMatch.Models.WeeklyMealPlan", null)
-                        .WithMany("MealSlots")
-                        .HasForeignKey("WeeklyMealPlanId");
-                    b.Navigation("Recipe");
-                    b.Navigation("RestaurantMeal");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", "User")
-                        .WithMany("Recipes")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.Navigation("User");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RecipeIngredient", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Ingredient", "Ingredient")
-                        .WithMany()
-                        .HasForeignKey("IngredientId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.HasOne("NutriMatch.Models.Recipe", null)
-                        .WithMany("RecipeIngredients")
-                        .HasForeignKey("RecipeId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.Navigation("Ingredient");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RecipeRating", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Recipe", "Recipe")
-                        .WithMany("Ratings")
-                        .HasForeignKey("RecipeId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.HasOne("NutriMatch.Models.User", "User")
-                        .WithMany("Ratings")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.Navigation("Recipe");
-                    b.Navigation("User");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RestaurantMeal", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Restaurant", "Restaurant")
-                        .WithMany("RestaurantMeals")
-                        .HasForeignKey("RestaurantId");
-                    b.Navigation("Restaurant");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.Navigation("FavoritedBy");
-                    b.Navigation("Ratings");
-                    b.Navigation("RecipeIngredients");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Restaurant", b =>
-                {
-                    b.Navigation("RestaurantMeals");
-                });
-            modelBuilder.Entity("NutriMatch.Models.User", b =>
-                {
-                    b.Navigation("FavoriteRecipes");
-                    b.Navigation("Ratings");
-                    b.Navigation("Recipes");
-                });
-            modelBuilder.Entity("NutriMatch.Models.WeeklyMealPlan", b =>
-                {
-                    b.Navigation("MealSlots");
-                });
-#pragma warning restore 612, 618
-        }
-    }
-}
Index: triMatch/Migrations/20250815115511_AddMealPlan.cs
===================================================================
--- NutriMatch/Migrations/20250815115511_AddMealPlan.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,79 +1,0 @@
-﻿using System;
-using Microsoft.EntityFrameworkCore.Migrations;
-using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
-#nullable disable
-namespace NutriMatch.Migrations
-{
-    public partial class AddMealPlan : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.CreateTable(
-                name: "WeeklyMealPlans",
-                columns: table => new
-                {
-                    Id = table.Column<int>(type: "integer", nullable: false)
-                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
-                    UserId = table.Column<string>(type: "text", nullable: false),
-                    GeneratedAt = table.Column<DateTime>(type: "timestamp with time zone", nullable: false)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_WeeklyMealPlans", x => x.Id);
-                });
-            migrationBuilder.CreateTable(
-                name: "MealSlots",
-                columns: table => new
-                {
-                    Id = table.Column<int>(type: "integer", nullable: false)
-                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
-                    Day = table.Column<string>(type: "text", nullable: false),
-                    MealType = table.Column<string>(type: "text", nullable: false),
-                    RecipeId = table.Column<int>(type: "integer", nullable: false),
-                    RestaurantMealId = table.Column<int>(type: "integer", nullable: false),
-                    IsRestaurantMeal = table.Column<bool>(type: "boolean", nullable: false),
-                    WeeklyMealPlanId = table.Column<int>(type: "integer", nullable: true)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_MealSlots", x => x.Id);
-                    table.ForeignKey(
-                        name: "FK_MealSlots_Recipes_RecipeId",
-                        column: x => x.RecipeId,
-                        principalTable: "Recipes",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Cascade);
-                    table.ForeignKey(
-                        name: "FK_MealSlots_RestaurantMeals_RestaurantMealId",
-                        column: x => x.RestaurantMealId,
-                        principalTable: "RestaurantMeals",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Cascade);
-                    table.ForeignKey(
-                        name: "FK_MealSlots_WeeklyMealPlans_WeeklyMealPlanId",
-                        column: x => x.WeeklyMealPlanId,
-                        principalTable: "WeeklyMealPlans",
-                        principalColumn: "Id");
-                });
-            migrationBuilder.CreateIndex(
-                name: "IX_MealSlots_RecipeId",
-                table: "MealSlots",
-                column: "RecipeId");
-            migrationBuilder.CreateIndex(
-                name: "IX_MealSlots_RestaurantMealId",
-                table: "MealSlots",
-                column: "RestaurantMealId");
-            migrationBuilder.CreateIndex(
-                name: "IX_MealSlots_WeeklyMealPlanId",
-                table: "MealSlots",
-                column: "WeeklyMealPlanId");
-        }
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropTable(
-                name: "MealSlots");
-            migrationBuilder.DropTable(
-                name: "WeeklyMealPlans");
-        }
-    }
-}
Index: triMatch/Migrations/20250815123938_MealPlanFix.Designer.cs
===================================================================
--- NutriMatch/Migrations/20250815123938_MealPlanFix.Designer.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,511 +1,0 @@
-﻿// <auto-generated />
-using System;
-using System.Collections.Generic;
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Migrations;
-using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
-using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
-using NutriMatch.Data;
-#nullable disable
-namespace NutriMatch.Migrations
-{
-    [DbContext(typeof(AppDbContext))]
-    [Migration("20250815123938_MealPlanFix")]
-    partial class MealPlanFix
-    {
-        protected override void BuildTargetModel(ModelBuilder modelBuilder)
-        {
-#pragma warning disable 612, 618
-            modelBuilder
-                .HasAnnotation("ProductVersion", "9.0.7")
-                .HasAnnotation("Relational:MaxIdentifierLength", 63);
-            NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b =>
-                {
-                    b.Property<string>("Id")
-                        .HasColumnType("text");
-                    b.Property<string>("ConcurrencyStamp")
-                        .IsConcurrencyToken()
-                        .HasColumnType("text");
-                    b.Property<string>("Name")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-                    b.Property<string>("NormalizedName")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-                    b.HasKey("Id");
-                    b.HasIndex("NormalizedName")
-                        .IsUnique()
-                        .HasDatabaseName("RoleNameIndex");
-                    b.ToTable("AspNetRoles", (string)null);
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim<string>", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<string>("ClaimType")
-                        .HasColumnType("text");
-                    b.Property<string>("ClaimValue")
-                        .HasColumnType("text");
-                    b.Property<string>("RoleId")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.HasIndex("RoleId");
-                    b.ToTable("AspNetRoleClaims", (string)null);
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim<string>", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<string>("ClaimType")
-                        .HasColumnType("text");
-                    b.Property<string>("ClaimValue")
-                        .HasColumnType("text");
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.HasIndex("UserId");
-                    b.ToTable("AspNetUserClaims", (string)null);
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin<string>", b =>
-                {
-                    b.Property<string>("LoginProvider")
-                        .HasMaxLength(128)
-                        .HasColumnType("character varying(128)");
-                    b.Property<string>("ProviderKey")
-                        .HasMaxLength(128)
-                        .HasColumnType("character varying(128)");
-                    b.Property<string>("ProviderDisplayName")
-                        .HasColumnType("text");
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("LoginProvider", "ProviderKey");
-                    b.HasIndex("UserId");
-                    b.ToTable("AspNetUserLogins", (string)null);
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole<string>", b =>
-                {
-                    b.Property<string>("UserId")
-                        .HasColumnType("text");
-                    b.Property<string>("RoleId")
-                        .HasColumnType("text");
-                    b.HasKey("UserId", "RoleId");
-                    b.HasIndex("RoleId");
-                    b.ToTable("AspNetUserRoles", (string)null);
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken<string>", b =>
-                {
-                    b.Property<string>("UserId")
-                        .HasColumnType("text");
-                    b.Property<string>("LoginProvider")
-                        .HasMaxLength(128)
-                        .HasColumnType("character varying(128)");
-                    b.Property<string>("Name")
-                        .HasMaxLength(128)
-                        .HasColumnType("character varying(128)");
-                    b.Property<string>("Value")
-                        .HasColumnType("text");
-                    b.HasKey("UserId", "LoginProvider", "Name");
-                    b.ToTable("AspNetUserTokens", (string)null);
-                });
-            modelBuilder.Entity("NutriMatch.Models.FavoriteRecipe", b =>
-                {
-                    b.Property<string>("UserId")
-                        .HasColumnType("text");
-                    b.Property<int>("RecipeId")
-                        .HasColumnType("integer");
-                    b.HasKey("UserId", "RecipeId");
-                    b.HasIndex("RecipeId");
-                    b.ToTable("FavoriteRecipes");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Ingredient", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<float>("Calories")
-                        .HasColumnType("real");
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real");
-                    b.Property<float>("Fat")
-                        .HasColumnType("real");
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<float>("Protein")
-                        .HasColumnType("real");
-                    b.HasKey("Id");
-                    b.ToTable("Ingredients");
-                });
-            modelBuilder.Entity("NutriMatch.Models.MealSlot", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<string>("Day")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<bool>("IsRestaurantMeal")
-                        .HasColumnType("boolean");
-                    b.Property<string>("MealType")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<int?>("RecipeId")
-                        .HasColumnType("integer");
-                    b.Property<int?>("RestaurantMealId")
-                        .HasColumnType("integer");
-                    b.Property<int?>("WeeklyMealPlanId")
-                        .HasColumnType("integer");
-                    b.HasKey("Id");
-                    b.HasIndex("RecipeId");
-                    b.HasIndex("RestaurantMealId");
-                    b.HasIndex("WeeklyMealPlanId");
-                    b.ToTable("MealSlots");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<string>("AdminComment")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<float>("Calories")
-                        .HasColumnType("real");
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real");
-                    b.Property<DateTime>("CreatedAt")
-                        .HasColumnType("timestamp with time zone");
-                    b.Property<string>("DeclineReason")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<float>("Fat")
-                        .HasColumnType("real");
-                    b.Property<string>("ImageUrl")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.PrimitiveCollection<string[]>("Instructions")
-                        .HasColumnType("text[]");
-                    b.Property<float>("Protein")
-                        .HasColumnType("real");
-                    b.Property<string>("RecipeStatus")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<string>("Title")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.PrimitiveCollection<List<string>>("Type")
-                        .IsRequired()
-                        .HasColumnType("text[]");
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.HasIndex("UserId");
-                    b.ToTable("Recipes");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RecipeIngredient", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<int>("IngredientId")
-                        .HasColumnType("integer");
-                    b.Property<float>("Quantity")
-                        .HasColumnType("real");
-                    b.Property<int>("RecipeId")
-                        .HasColumnType("integer");
-                    b.Property<string>("Unit")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.HasIndex("IngredientId");
-                    b.HasIndex("RecipeId");
-                    b.ToTable("RecipeIngredients");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RecipeRating", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<double>("Rating")
-                        .HasColumnType("double precision");
-                    b.Property<int>("RecipeId")
-                        .HasColumnType("integer");
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.HasIndex("RecipeId");
-                    b.HasIndex("UserId", "RecipeId")
-                        .IsUnique();
-                    b.ToTable("RecipeRatings");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Restaurant", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<string>("Description")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<string>("ImageUrl")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.ToTable("Restaurants");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RestaurantMeal", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<float>("Calories")
-                        .HasColumnType("real");
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real");
-                    b.Property<float>("Fat")
-                        .HasColumnType("real");
-                    b.Property<string>("ItemDescription")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<string>("ItemName")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<float>("Protein")
-                        .HasColumnType("real");
-                    b.Property<int?>("RestaurantId")
-                        .HasColumnType("integer");
-                    b.Property<string>("RestaurantName")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.PrimitiveCollection<List<string>>("Type")
-                        .IsRequired()
-                        .HasColumnType("text[]");
-                    b.HasKey("Id");
-                    b.HasIndex("RestaurantId");
-                    b.ToTable("RestaurantMeals");
-                });
-            modelBuilder.Entity("NutriMatch.Models.User", b =>
-                {
-                    b.Property<string>("Id")
-                        .HasColumnType("text");
-                    b.Property<int>("AccessFailedCount")
-                        .HasColumnType("integer");
-                    b.Property<string>("ConcurrencyStamp")
-                        .IsConcurrencyToken()
-                        .HasColumnType("text");
-                    b.Property<string>("Email")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-                    b.Property<bool>("EmailConfirmed")
-                        .HasColumnType("boolean");
-                    b.Property<bool>("LockoutEnabled")
-                        .HasColumnType("boolean");
-                    b.Property<DateTimeOffset?>("LockoutEnd")
-                        .HasColumnType("timestamp with time zone");
-                    b.Property<string>("NormalizedEmail")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-                    b.Property<string>("NormalizedUserName")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-                    b.Property<string>("PasswordHash")
-                        .HasColumnType("text");
-                    b.Property<string>("PhoneNumber")
-                        .HasColumnType("text");
-                    b.Property<bool>("PhoneNumberConfirmed")
-                        .HasColumnType("boolean");
-                    b.Property<string>("ProfilePictureUrl")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<string>("SecurityStamp")
-                        .HasColumnType("text");
-                    b.Property<bool>("TwoFactorEnabled")
-                        .HasColumnType("boolean");
-                    b.Property<string>("UserName")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-                    b.HasKey("Id");
-                    b.HasIndex("NormalizedEmail")
-                        .HasDatabaseName("EmailIndex");
-                    b.HasIndex("NormalizedUserName")
-                        .IsUnique()
-                        .HasDatabaseName("UserNameIndex");
-                    b.ToTable("AspNetUsers", (string)null);
-                });
-            modelBuilder.Entity("NutriMatch.Models.WeeklyMealPlan", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<DateTime>("GeneratedAt")
-                        .HasColumnType("timestamp with time zone");
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.ToTable("WeeklyMealPlans");
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim<string>", b =>
-                {
-                    b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null)
-                        .WithMany()
-                        .HasForeignKey("RoleId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim<string>", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", null)
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin<string>", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", null)
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole<string>", b =>
-                {
-                    b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null)
-                        .WithMany()
-                        .HasForeignKey("RoleId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.HasOne("NutriMatch.Models.User", null)
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken<string>", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", null)
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-            modelBuilder.Entity("NutriMatch.Models.FavoriteRecipe", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Recipe", "Recipe")
-                        .WithMany("FavoritedBy")
-                        .HasForeignKey("RecipeId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.HasOne("NutriMatch.Models.User", "User")
-                        .WithMany("FavoriteRecipes")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.Navigation("Recipe");
-                    b.Navigation("User");
-                });
-            modelBuilder.Entity("NutriMatch.Models.MealSlot", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Recipe", "Recipe")
-                        .WithMany()
-                        .HasForeignKey("RecipeId");
-                    b.HasOne("NutriMatch.Models.RestaurantMeal", "RestaurantMeal")
-                        .WithMany()
-                        .HasForeignKey("RestaurantMealId");
-                    b.HasOne("NutriMatch.Models.WeeklyMealPlan", null)
-                        .WithMany("MealSlots")
-                        .HasForeignKey("WeeklyMealPlanId");
-                    b.Navigation("Recipe");
-                    b.Navigation("RestaurantMeal");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", "User")
-                        .WithMany("Recipes")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.Navigation("User");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RecipeIngredient", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Ingredient", "Ingredient")
-                        .WithMany()
-                        .HasForeignKey("IngredientId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.HasOne("NutriMatch.Models.Recipe", null)
-                        .WithMany("RecipeIngredients")
-                        .HasForeignKey("RecipeId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.Navigation("Ingredient");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RecipeRating", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Recipe", "Recipe")
-                        .WithMany("Ratings")
-                        .HasForeignKey("RecipeId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.HasOne("NutriMatch.Models.User", "User")
-                        .WithMany("Ratings")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.Navigation("Recipe");
-                    b.Navigation("User");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RestaurantMeal", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Restaurant", "Restaurant")
-                        .WithMany("RestaurantMeals")
-                        .HasForeignKey("RestaurantId");
-                    b.Navigation("Restaurant");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.Navigation("FavoritedBy");
-                    b.Navigation("Ratings");
-                    b.Navigation("RecipeIngredients");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Restaurant", b =>
-                {
-                    b.Navigation("RestaurantMeals");
-                });
-            modelBuilder.Entity("NutriMatch.Models.User", b =>
-                {
-                    b.Navigation("FavoriteRecipes");
-                    b.Navigation("Ratings");
-                    b.Navigation("Recipes");
-                });
-            modelBuilder.Entity("NutriMatch.Models.WeeklyMealPlan", b =>
-                {
-                    b.Navigation("MealSlots");
-                });
-#pragma warning restore 612, 618
-        }
-    }
-}
Index: triMatch/Migrations/20250815123938_MealPlanFix.cs
===================================================================
--- NutriMatch/Migrations/20250815123938_MealPlanFix.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,84 +1,0 @@
-﻿using Microsoft.EntityFrameworkCore.Migrations;
-#nullable disable
-namespace NutriMatch.Migrations
-{
-    public partial class MealPlanFix : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropForeignKey(
-                name: "FK_MealSlots_Recipes_RecipeId",
-                table: "MealSlots");
-            migrationBuilder.DropForeignKey(
-                name: "FK_MealSlots_RestaurantMeals_RestaurantMealId",
-                table: "MealSlots");
-            migrationBuilder.AlterColumn<int>(
-                name: "RestaurantMealId",
-                table: "MealSlots",
-                type: "integer",
-                nullable: true,
-                oldClrType: typeof(int),
-                oldType: "integer");
-            migrationBuilder.AlterColumn<int>(
-                name: "RecipeId",
-                table: "MealSlots",
-                type: "integer",
-                nullable: true,
-                oldClrType: typeof(int),
-                oldType: "integer");
-            migrationBuilder.AddForeignKey(
-                name: "FK_MealSlots_Recipes_RecipeId",
-                table: "MealSlots",
-                column: "RecipeId",
-                principalTable: "Recipes",
-                principalColumn: "Id");
-            migrationBuilder.AddForeignKey(
-                name: "FK_MealSlots_RestaurantMeals_RestaurantMealId",
-                table: "MealSlots",
-                column: "RestaurantMealId",
-                principalTable: "RestaurantMeals",
-                principalColumn: "Id");
-        }
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropForeignKey(
-                name: "FK_MealSlots_Recipes_RecipeId",
-                table: "MealSlots");
-            migrationBuilder.DropForeignKey(
-                name: "FK_MealSlots_RestaurantMeals_RestaurantMealId",
-                table: "MealSlots");
-            migrationBuilder.AlterColumn<int>(
-                name: "RestaurantMealId",
-                table: "MealSlots",
-                type: "integer",
-                nullable: false,
-                defaultValue: 0,
-                oldClrType: typeof(int),
-                oldType: "integer",
-                oldNullable: true);
-            migrationBuilder.AlterColumn<int>(
-                name: "RecipeId",
-                table: "MealSlots",
-                type: "integer",
-                nullable: false,
-                defaultValue: 0,
-                oldClrType: typeof(int),
-                oldType: "integer",
-                oldNullable: true);
-            migrationBuilder.AddForeignKey(
-                name: "FK_MealSlots_Recipes_RecipeId",
-                table: "MealSlots",
-                column: "RecipeId",
-                principalTable: "Recipes",
-                principalColumn: "Id",
-                onDelete: ReferentialAction.Cascade);
-            migrationBuilder.AddForeignKey(
-                name: "FK_MealSlots_RestaurantMeals_RestaurantMealId",
-                table: "MealSlots",
-                column: "RestaurantMealId",
-                principalTable: "RestaurantMeals",
-                principalColumn: "Id",
-                onDelete: ReferentialAction.Cascade);
-        }
-    }
-}
Index: triMatch/Migrations/20250820150843_Ingredient Approval.Designer.cs
===================================================================
--- NutriMatch/Migrations/20250820150843_Ingredient Approval.Designer.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,515 +1,0 @@
-﻿// <auto-generated />
-using System;
-using System.Collections.Generic;
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Migrations;
-using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
-using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
-using NutriMatch.Data;
-#nullable disable
-namespace NutriMatch.Migrations
-{
-    [DbContext(typeof(AppDbContext))]
-    [Migration("20250820150843_Ingredient Approval")]
-    partial class IngredientApproval
-    {
-        protected override void BuildTargetModel(ModelBuilder modelBuilder)
-        {
-#pragma warning disable 612, 618
-            modelBuilder
-                .HasAnnotation("ProductVersion", "9.0.7")
-                .HasAnnotation("Relational:MaxIdentifierLength", 63);
-            NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b =>
-                {
-                    b.Property<string>("Id")
-                        .HasColumnType("text");
-                    b.Property<string>("ConcurrencyStamp")
-                        .IsConcurrencyToken()
-                        .HasColumnType("text");
-                    b.Property<string>("Name")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-                    b.Property<string>("NormalizedName")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-                    b.HasKey("Id");
-                    b.HasIndex("NormalizedName")
-                        .IsUnique()
-                        .HasDatabaseName("RoleNameIndex");
-                    b.ToTable("AspNetRoles", (string)null);
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim<string>", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<string>("ClaimType")
-                        .HasColumnType("text");
-                    b.Property<string>("ClaimValue")
-                        .HasColumnType("text");
-                    b.Property<string>("RoleId")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.HasIndex("RoleId");
-                    b.ToTable("AspNetRoleClaims", (string)null);
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim<string>", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<string>("ClaimType")
-                        .HasColumnType("text");
-                    b.Property<string>("ClaimValue")
-                        .HasColumnType("text");
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.HasIndex("UserId");
-                    b.ToTable("AspNetUserClaims", (string)null);
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin<string>", b =>
-                {
-                    b.Property<string>("LoginProvider")
-                        .HasMaxLength(128)
-                        .HasColumnType("character varying(128)");
-                    b.Property<string>("ProviderKey")
-                        .HasMaxLength(128)
-                        .HasColumnType("character varying(128)");
-                    b.Property<string>("ProviderDisplayName")
-                        .HasColumnType("text");
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("LoginProvider", "ProviderKey");
-                    b.HasIndex("UserId");
-                    b.ToTable("AspNetUserLogins", (string)null);
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole<string>", b =>
-                {
-                    b.Property<string>("UserId")
-                        .HasColumnType("text");
-                    b.Property<string>("RoleId")
-                        .HasColumnType("text");
-                    b.HasKey("UserId", "RoleId");
-                    b.HasIndex("RoleId");
-                    b.ToTable("AspNetUserRoles", (string)null);
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken<string>", b =>
-                {
-                    b.Property<string>("UserId")
-                        .HasColumnType("text");
-                    b.Property<string>("LoginProvider")
-                        .HasMaxLength(128)
-                        .HasColumnType("character varying(128)");
-                    b.Property<string>("Name")
-                        .HasMaxLength(128)
-                        .HasColumnType("character varying(128)");
-                    b.Property<string>("Value")
-                        .HasColumnType("text");
-                    b.HasKey("UserId", "LoginProvider", "Name");
-                    b.ToTable("AspNetUserTokens", (string)null);
-                });
-            modelBuilder.Entity("NutriMatch.Models.FavoriteRecipe", b =>
-                {
-                    b.Property<string>("UserId")
-                        .HasColumnType("text");
-                    b.Property<int>("RecipeId")
-                        .HasColumnType("integer");
-                    b.HasKey("UserId", "RecipeId");
-                    b.HasIndex("RecipeId");
-                    b.ToTable("FavoriteRecipes");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Ingredient", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<float>("Calories")
-                        .HasColumnType("real");
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real");
-                    b.Property<float>("Fat")
-                        .HasColumnType("real");
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<float>("Protein")
-                        .HasColumnType("real");
-                    b.Property<string>("Status")
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.ToTable("Ingredients");
-                });
-            modelBuilder.Entity("NutriMatch.Models.MealSlot", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<string>("Day")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<bool>("IsRestaurantMeal")
-                        .HasColumnType("boolean");
-                    b.Property<string>("MealType")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<int?>("RecipeId")
-                        .HasColumnType("integer");
-                    b.Property<int?>("RestaurantMealId")
-                        .HasColumnType("integer");
-                    b.Property<int?>("WeeklyMealPlanId")
-                        .HasColumnType("integer");
-                    b.HasKey("Id");
-                    b.HasIndex("RecipeId");
-                    b.HasIndex("RestaurantMealId");
-                    b.HasIndex("WeeklyMealPlanId");
-                    b.ToTable("MealSlots");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<string>("AdminComment")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<float>("Calories")
-                        .HasColumnType("real");
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real");
-                    b.Property<DateTime>("CreatedAt")
-                        .HasColumnType("timestamp with time zone");
-                    b.Property<string>("DeclineReason")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<float>("Fat")
-                        .HasColumnType("real");
-                    b.Property<bool?>("HasPendingIngredients")
-                        .HasColumnType("boolean");
-                    b.Property<string>("ImageUrl")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.PrimitiveCollection<string[]>("Instructions")
-                        .HasColumnType("text[]");
-                    b.Property<float>("Protein")
-                        .HasColumnType("real");
-                    b.Property<string>("RecipeStatus")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<string>("Title")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.PrimitiveCollection<List<string>>("Type")
-                        .IsRequired()
-                        .HasColumnType("text[]");
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.HasIndex("UserId");
-                    b.ToTable("Recipes");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RecipeIngredient", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<int>("IngredientId")
-                        .HasColumnType("integer");
-                    b.Property<float>("Quantity")
-                        .HasColumnType("real");
-                    b.Property<int>("RecipeId")
-                        .HasColumnType("integer");
-                    b.Property<string>("Unit")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.HasIndex("IngredientId");
-                    b.HasIndex("RecipeId");
-                    b.ToTable("RecipeIngredients");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RecipeRating", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<double>("Rating")
-                        .HasColumnType("double precision");
-                    b.Property<int>("RecipeId")
-                        .HasColumnType("integer");
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.HasIndex("RecipeId");
-                    b.HasIndex("UserId", "RecipeId")
-                        .IsUnique();
-                    b.ToTable("RecipeRatings");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Restaurant", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<string>("Description")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<string>("ImageUrl")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.ToTable("Restaurants");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RestaurantMeal", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<float>("Calories")
-                        .HasColumnType("real");
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real");
-                    b.Property<float>("Fat")
-                        .HasColumnType("real");
-                    b.Property<string>("ItemDescription")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<string>("ItemName")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<float>("Protein")
-                        .HasColumnType("real");
-                    b.Property<int?>("RestaurantId")
-                        .HasColumnType("integer");
-                    b.Property<string>("RestaurantName")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.PrimitiveCollection<List<string>>("Type")
-                        .IsRequired()
-                        .HasColumnType("text[]");
-                    b.HasKey("Id");
-                    b.HasIndex("RestaurantId");
-                    b.ToTable("RestaurantMeals");
-                });
-            modelBuilder.Entity("NutriMatch.Models.User", b =>
-                {
-                    b.Property<string>("Id")
-                        .HasColumnType("text");
-                    b.Property<int>("AccessFailedCount")
-                        .HasColumnType("integer");
-                    b.Property<string>("ConcurrencyStamp")
-                        .IsConcurrencyToken()
-                        .HasColumnType("text");
-                    b.Property<string>("Email")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-                    b.Property<bool>("EmailConfirmed")
-                        .HasColumnType("boolean");
-                    b.Property<bool>("LockoutEnabled")
-                        .HasColumnType("boolean");
-                    b.Property<DateTimeOffset?>("LockoutEnd")
-                        .HasColumnType("timestamp with time zone");
-                    b.Property<string>("NormalizedEmail")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-                    b.Property<string>("NormalizedUserName")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-                    b.Property<string>("PasswordHash")
-                        .HasColumnType("text");
-                    b.Property<string>("PhoneNumber")
-                        .HasColumnType("text");
-                    b.Property<bool>("PhoneNumberConfirmed")
-                        .HasColumnType("boolean");
-                    b.Property<string>("ProfilePictureUrl")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.Property<string>("SecurityStamp")
-                        .HasColumnType("text");
-                    b.Property<bool>("TwoFactorEnabled")
-                        .HasColumnType("boolean");
-                    b.Property<string>("UserName")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-                    b.HasKey("Id");
-                    b.HasIndex("NormalizedEmail")
-                        .HasDatabaseName("EmailIndex");
-                    b.HasIndex("NormalizedUserName")
-                        .IsUnique()
-                        .HasDatabaseName("UserNameIndex");
-                    b.ToTable("AspNetUsers", (string)null);
-                });
-            modelBuilder.Entity("NutriMatch.Models.WeeklyMealPlan", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-                    b.Property<DateTime>("GeneratedAt")
-                        .HasColumnType("timestamp with time zone");
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-                    b.HasKey("Id");
-                    b.ToTable("WeeklyMealPlans");
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim<string>", b =>
-                {
-                    b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null)
-                        .WithMany()
-                        .HasForeignKey("RoleId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim<string>", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", null)
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin<string>", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", null)
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole<string>", b =>
-                {
-                    b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null)
-                        .WithMany()
-                        .HasForeignKey("RoleId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.HasOne("NutriMatch.Models.User", null)
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken<string>", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", null)
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-            modelBuilder.Entity("NutriMatch.Models.FavoriteRecipe", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Recipe", "Recipe")
-                        .WithMany("FavoritedBy")
-                        .HasForeignKey("RecipeId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.HasOne("NutriMatch.Models.User", "User")
-                        .WithMany("FavoriteRecipes")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.Navigation("Recipe");
-                    b.Navigation("User");
-                });
-            modelBuilder.Entity("NutriMatch.Models.MealSlot", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Recipe", "Recipe")
-                        .WithMany()
-                        .HasForeignKey("RecipeId");
-                    b.HasOne("NutriMatch.Models.RestaurantMeal", "RestaurantMeal")
-                        .WithMany()
-                        .HasForeignKey("RestaurantMealId");
-                    b.HasOne("NutriMatch.Models.WeeklyMealPlan", null)
-                        .WithMany("MealSlots")
-                        .HasForeignKey("WeeklyMealPlanId");
-                    b.Navigation("Recipe");
-                    b.Navigation("RestaurantMeal");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", "User")
-                        .WithMany("Recipes")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.Navigation("User");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RecipeIngredient", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Ingredient", "Ingredient")
-                        .WithMany()
-                        .HasForeignKey("IngredientId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.HasOne("NutriMatch.Models.Recipe", null)
-                        .WithMany("RecipeIngredients")
-                        .HasForeignKey("RecipeId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.Navigation("Ingredient");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RecipeRating", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Recipe", "Recipe")
-                        .WithMany("Ratings")
-                        .HasForeignKey("RecipeId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.HasOne("NutriMatch.Models.User", "User")
-                        .WithMany("Ratings")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                    b.Navigation("Recipe");
-                    b.Navigation("User");
-                });
-            modelBuilder.Entity("NutriMatch.Models.RestaurantMeal", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Restaurant", "Restaurant")
-                        .WithMany("RestaurantMeals")
-                        .HasForeignKey("RestaurantId");
-                    b.Navigation("Restaurant");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.Navigation("FavoritedBy");
-                    b.Navigation("Ratings");
-                    b.Navigation("RecipeIngredients");
-                });
-            modelBuilder.Entity("NutriMatch.Models.Restaurant", b =>
-                {
-                    b.Navigation("RestaurantMeals");
-                });
-            modelBuilder.Entity("NutriMatch.Models.User", b =>
-                {
-                    b.Navigation("FavoriteRecipes");
-                    b.Navigation("Ratings");
-                    b.Navigation("Recipes");
-                });
-            modelBuilder.Entity("NutriMatch.Models.WeeklyMealPlan", b =>
-                {
-                    b.Navigation("MealSlots");
-                });
-#pragma warning restore 612, 618
-        }
-    }
-}
Index: triMatch/Migrations/20250820150843_Ingredient Approval.cs
===================================================================
--- NutriMatch/Migrations/20250820150843_Ingredient Approval.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,30 +1,0 @@
-﻿using Microsoft.EntityFrameworkCore.Migrations;
-#nullable disable
-namespace NutriMatch.Migrations
-{
-    public partial class IngredientApproval : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.AddColumn<bool>(
-                name: "HasPendingIngredients",
-                table: "Recipes",
-                type: "boolean",
-                nullable: true);
-            migrationBuilder.AddColumn<string>(
-                name: "Status",
-                table: "Ingredients",
-                type: "text",
-                nullable: true);
-        }
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropColumn(
-                name: "HasPendingIngredients",
-                table: "Recipes");
-            migrationBuilder.DropColumn(
-                name: "Status",
-                table: "Ingredients");
-        }
-    }
-}
Index: triMatch/Migrations/20250930183527_AddMealKeywordsTable.Designer.cs
===================================================================
--- NutriMatch/Migrations/20250930183527_AddMealKeywordsTable.Designer.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,728 +1,0 @@
-﻿// <auto-generated />
-using System;
-using System.Collections.Generic;
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Migrations;
-using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
-using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
-using NutriMatch.Data;
-
-#nullable disable
-
-namespace NutriMatch.Migrations
-{
-    [DbContext(typeof(AppDbContext))]
-    [Migration("20250930183527_AddMealKeywordsTable")]
-    partial class AddMealKeywordsTable
-    {
-        /// <inheritdoc />
-        protected override void BuildTargetModel(ModelBuilder modelBuilder)
-        {
-#pragma warning disable 612, 618
-            modelBuilder
-                .HasAnnotation("ProductVersion", "9.0.7")
-                .HasAnnotation("Relational:MaxIdentifierLength", 63);
-
-            NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b =>
-                {
-                    b.Property<string>("Id")
-                        .HasColumnType("text");
-
-                    b.Property<string>("ConcurrencyStamp")
-                        .IsConcurrencyToken()
-                        .HasColumnType("text");
-
-                    b.Property<string>("Name")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-
-                    b.Property<string>("NormalizedName")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("NormalizedName")
-                        .IsUnique()
-                        .HasDatabaseName("RoleNameIndex");
-
-                    b.ToTable("AspNetRoles", (string)null);
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim<string>", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<string>("ClaimType")
-                        .HasColumnType("text");
-
-                    b.Property<string>("ClaimValue")
-                        .HasColumnType("text");
-
-                    b.Property<string>("RoleId")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("RoleId");
-
-                    b.ToTable("AspNetRoleClaims", (string)null);
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim<string>", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<string>("ClaimType")
-                        .HasColumnType("text");
-
-                    b.Property<string>("ClaimValue")
-                        .HasColumnType("text");
-
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("UserId");
-
-                    b.ToTable("AspNetUserClaims", (string)null);
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin<string>", b =>
-                {
-                    b.Property<string>("LoginProvider")
-                        .HasMaxLength(128)
-                        .HasColumnType("character varying(128)");
-
-                    b.Property<string>("ProviderKey")
-                        .HasMaxLength(128)
-                        .HasColumnType("character varying(128)");
-
-                    b.Property<string>("ProviderDisplayName")
-                        .HasColumnType("text");
-
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("LoginProvider", "ProviderKey");
-
-                    b.HasIndex("UserId");
-
-                    b.ToTable("AspNetUserLogins", (string)null);
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole<string>", b =>
-                {
-                    b.Property<string>("UserId")
-                        .HasColumnType("text");
-
-                    b.Property<string>("RoleId")
-                        .HasColumnType("text");
-
-                    b.HasKey("UserId", "RoleId");
-
-                    b.HasIndex("RoleId");
-
-                    b.ToTable("AspNetUserRoles", (string)null);
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken<string>", b =>
-                {
-                    b.Property<string>("UserId")
-                        .HasColumnType("text");
-
-                    b.Property<string>("LoginProvider")
-                        .HasMaxLength(128)
-                        .HasColumnType("character varying(128)");
-
-                    b.Property<string>("Name")
-                        .HasMaxLength(128)
-                        .HasColumnType("character varying(128)");
-
-                    b.Property<string>("Value")
-                        .HasColumnType("text");
-
-                    b.HasKey("UserId", "LoginProvider", "Name");
-
-                    b.ToTable("AspNetUserTokens", (string)null);
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.FavoriteRecipe", b =>
-                {
-                    b.Property<string>("UserId")
-                        .HasColumnType("text");
-
-                    b.Property<int>("RecipeId")
-                        .HasColumnType("integer");
-
-                    b.HasKey("UserId", "RecipeId");
-
-                    b.HasIndex("RecipeId");
-
-                    b.ToTable("FavoriteRecipes");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.Ingredient", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<float>("Calories")
-                        .HasColumnType("real");
-
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real");
-
-                    b.Property<float>("Fat")
-                        .HasColumnType("real");
-
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<float>("Protein")
-                        .HasColumnType("real");
-
-                    b.Property<string>("Status")
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("Ingredients");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.MealKeyword", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<string>("Tag")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("MealKeywords");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.MealSlot", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<string>("Day")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<bool>("IsRestaurantMeal")
-                        .HasColumnType("boolean");
-
-                    b.Property<string>("MealType")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<int?>("RecipeId")
-                        .HasColumnType("integer");
-
-                    b.Property<int?>("RestaurantMealId")
-                        .HasColumnType("integer");
-
-                    b.Property<int?>("WeeklyMealPlanId")
-                        .HasColumnType("integer");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("RecipeId");
-
-                    b.HasIndex("RestaurantMealId");
-
-                    b.HasIndex("WeeklyMealPlanId");
-
-                    b.ToTable("MealSlots");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<string>("AdminComment")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<float>("Calories")
-                        .HasColumnType("real");
-
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real");
-
-                    b.Property<DateTime>("CreatedAt")
-                        .HasColumnType("timestamp with time zone");
-
-                    b.Property<string>("DeclineReason")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<float>("Fat")
-                        .HasColumnType("real");
-
-                    b.Property<bool?>("HasPendingIngredients")
-                        .HasColumnType("boolean");
-
-                    b.Property<string>("ImageUrl")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.PrimitiveCollection<string[]>("Instructions")
-                        .HasColumnType("text[]");
-
-                    b.Property<float>("Protein")
-                        .HasColumnType("real");
-
-                    b.Property<string>("RecipeStatus")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<string>("Title")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.PrimitiveCollection<List<string>>("Type")
-                        .IsRequired()
-                        .HasColumnType("text[]");
-
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("UserId");
-
-                    b.ToTable("Recipes");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.RecipeIngredient", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<int>("IngredientId")
-                        .HasColumnType("integer");
-
-                    b.Property<float>("Quantity")
-                        .HasColumnType("real");
-
-                    b.Property<int>("RecipeId")
-                        .HasColumnType("integer");
-
-                    b.Property<string>("Unit")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("IngredientId");
-
-                    b.HasIndex("RecipeId");
-
-                    b.ToTable("RecipeIngredients");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.RecipeRating", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<double>("Rating")
-                        .HasColumnType("double precision");
-
-                    b.Property<int>("RecipeId")
-                        .HasColumnType("integer");
-
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("RecipeId");
-
-                    b.HasIndex("UserId", "RecipeId")
-                        .IsUnique();
-
-                    b.ToTable("RecipeRatings");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.Restaurant", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<string>("Description")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<string>("ImageUrl")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("Restaurants");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.RestaurantMeal", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<float>("Calories")
-                        .HasColumnType("real");
-
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real");
-
-                    b.Property<float>("Fat")
-                        .HasColumnType("real");
-
-                    b.Property<string>("ItemDescription")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<string>("ItemName")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<float>("Protein")
-                        .HasColumnType("real");
-
-                    b.Property<int?>("RestaurantId")
-                        .HasColumnType("integer");
-
-                    b.Property<string>("RestaurantName")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.PrimitiveCollection<List<string>>("Type")
-                        .IsRequired()
-                        .HasColumnType("text[]");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("RestaurantId");
-
-                    b.ToTable("RestaurantMeals");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.User", b =>
-                {
-                    b.Property<string>("Id")
-                        .HasColumnType("text");
-
-                    b.Property<int>("AccessFailedCount")
-                        .HasColumnType("integer");
-
-                    b.Property<string>("ConcurrencyStamp")
-                        .IsConcurrencyToken()
-                        .HasColumnType("text");
-
-                    b.Property<string>("Email")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-
-                    b.Property<bool>("EmailConfirmed")
-                        .HasColumnType("boolean");
-
-                    b.Property<bool>("LockoutEnabled")
-                        .HasColumnType("boolean");
-
-                    b.Property<DateTimeOffset?>("LockoutEnd")
-                        .HasColumnType("timestamp with time zone");
-
-                    b.Property<string>("NormalizedEmail")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-
-                    b.Property<string>("NormalizedUserName")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-
-                    b.Property<string>("PasswordHash")
-                        .HasColumnType("text");
-
-                    b.Property<string>("PhoneNumber")
-                        .HasColumnType("text");
-
-                    b.Property<bool>("PhoneNumberConfirmed")
-                        .HasColumnType("boolean");
-
-                    b.Property<string>("ProfilePictureUrl")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<string>("SecurityStamp")
-                        .HasColumnType("text");
-
-                    b.Property<bool>("TwoFactorEnabled")
-                        .HasColumnType("boolean");
-
-                    b.Property<string>("UserName")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("NormalizedEmail")
-                        .HasDatabaseName("EmailIndex");
-
-                    b.HasIndex("NormalizedUserName")
-                        .IsUnique()
-                        .HasDatabaseName("UserNameIndex");
-
-                    b.ToTable("AspNetUsers", (string)null);
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.WeeklyMealPlan", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<DateTime>("GeneratedAt")
-                        .HasColumnType("timestamp with time zone");
-
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("WeeklyMealPlans");
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim<string>", b =>
-                {
-                    b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null)
-                        .WithMany()
-                        .HasForeignKey("RoleId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim<string>", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", null)
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin<string>", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", null)
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole<string>", b =>
-                {
-                    b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null)
-                        .WithMany()
-                        .HasForeignKey("RoleId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.HasOne("NutriMatch.Models.User", null)
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken<string>", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", null)
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.FavoriteRecipe", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Recipe", "Recipe")
-                        .WithMany("FavoritedBy")
-                        .HasForeignKey("RecipeId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.HasOne("NutriMatch.Models.User", "User")
-                        .WithMany("FavoriteRecipes")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("Recipe");
-
-                    b.Navigation("User");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.MealSlot", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Recipe", "Recipe")
-                        .WithMany()
-                        .HasForeignKey("RecipeId");
-
-                    b.HasOne("NutriMatch.Models.RestaurantMeal", "RestaurantMeal")
-                        .WithMany()
-                        .HasForeignKey("RestaurantMealId");
-
-                    b.HasOne("NutriMatch.Models.WeeklyMealPlan", null)
-                        .WithMany("MealSlots")
-                        .HasForeignKey("WeeklyMealPlanId");
-
-                    b.Navigation("Recipe");
-
-                    b.Navigation("RestaurantMeal");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", "User")
-                        .WithMany("Recipes")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("User");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.RecipeIngredient", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Ingredient", "Ingredient")
-                        .WithMany()
-                        .HasForeignKey("IngredientId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.HasOne("NutriMatch.Models.Recipe", null)
-                        .WithMany("RecipeIngredients")
-                        .HasForeignKey("RecipeId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("Ingredient");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.RecipeRating", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Recipe", "Recipe")
-                        .WithMany("Ratings")
-                        .HasForeignKey("RecipeId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.HasOne("NutriMatch.Models.User", "User")
-                        .WithMany("Ratings")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("Recipe");
-
-                    b.Navigation("User");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.RestaurantMeal", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Restaurant", "Restaurant")
-                        .WithMany("RestaurantMeals")
-                        .HasForeignKey("RestaurantId");
-
-                    b.Navigation("Restaurant");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.Navigation("FavoritedBy");
-
-                    b.Navigation("Ratings");
-
-                    b.Navigation("RecipeIngredients");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.Restaurant", b =>
-                {
-                    b.Navigation("RestaurantMeals");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.User", b =>
-                {
-                    b.Navigation("FavoriteRecipes");
-
-                    b.Navigation("Ratings");
-
-                    b.Navigation("Recipes");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.WeeklyMealPlan", b =>
-                {
-                    b.Navigation("MealSlots");
-                });
-#pragma warning restore 612, 618
-        }
-    }
-}
Index: triMatch/Migrations/20250930183527_AddMealKeywordsTable.cs
===================================================================
--- NutriMatch/Migrations/20250930183527_AddMealKeywordsTable.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,36 +1,0 @@
-﻿using Microsoft.EntityFrameworkCore.Migrations;
-using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
-
-#nullable disable
-
-namespace NutriMatch.Migrations
-{
-    /// <inheritdoc />
-    public partial class AddMealKeywordsTable : Migration
-    {
-        /// <inheritdoc />
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.CreateTable(
-                name: "MealKeywords",
-                columns: table => new
-                {
-                    Id = table.Column<int>(type: "integer", nullable: false)
-                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
-                    Name = table.Column<string>(type: "text", nullable: false),
-                    Tag = table.Column<string>(type: "text", nullable: false)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_MealKeywords", x => x.Id);
-                });
-        }
-
-        /// <inheritdoc />
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropTable(
-                name: "MealKeywords");
-        }
-    }
-}
Index: triMatch/Migrations/20251001131313_Notifications.Designer.cs
===================================================================
--- NutriMatch/Migrations/20251001131313_Notifications.Designer.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,765 +1,0 @@
-﻿// <auto-generated />
-using System;
-using System.Collections.Generic;
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Migrations;
-using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
-using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
-using NutriMatch.Data;
-
-#nullable disable
-
-namespace NutriMatch.Migrations
-{
-    [DbContext(typeof(AppDbContext))]
-    [Migration("20251001131313_Notifications")]
-    partial class Notifications
-    {
-        /// <inheritdoc />
-        protected override void BuildTargetModel(ModelBuilder modelBuilder)
-        {
-#pragma warning disable 612, 618
-            modelBuilder
-                .HasAnnotation("ProductVersion", "9.0.7")
-                .HasAnnotation("Relational:MaxIdentifierLength", 63);
-
-            NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b =>
-                {
-                    b.Property<string>("Id")
-                        .HasColumnType("text");
-
-                    b.Property<string>("ConcurrencyStamp")
-                        .IsConcurrencyToken()
-                        .HasColumnType("text");
-
-                    b.Property<string>("Name")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-
-                    b.Property<string>("NormalizedName")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("NormalizedName")
-                        .IsUnique()
-                        .HasDatabaseName("RoleNameIndex");
-
-                    b.ToTable("AspNetRoles", (string)null);
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim<string>", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<string>("ClaimType")
-                        .HasColumnType("text");
-
-                    b.Property<string>("ClaimValue")
-                        .HasColumnType("text");
-
-                    b.Property<string>("RoleId")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("RoleId");
-
-                    b.ToTable("AspNetRoleClaims", (string)null);
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim<string>", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<string>("ClaimType")
-                        .HasColumnType("text");
-
-                    b.Property<string>("ClaimValue")
-                        .HasColumnType("text");
-
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("UserId");
-
-                    b.ToTable("AspNetUserClaims", (string)null);
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin<string>", b =>
-                {
-                    b.Property<string>("LoginProvider")
-                        .HasMaxLength(128)
-                        .HasColumnType("character varying(128)");
-
-                    b.Property<string>("ProviderKey")
-                        .HasMaxLength(128)
-                        .HasColumnType("character varying(128)");
-
-                    b.Property<string>("ProviderDisplayName")
-                        .HasColumnType("text");
-
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("LoginProvider", "ProviderKey");
-
-                    b.HasIndex("UserId");
-
-                    b.ToTable("AspNetUserLogins", (string)null);
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole<string>", b =>
-                {
-                    b.Property<string>("UserId")
-                        .HasColumnType("text");
-
-                    b.Property<string>("RoleId")
-                        .HasColumnType("text");
-
-                    b.HasKey("UserId", "RoleId");
-
-                    b.HasIndex("RoleId");
-
-                    b.ToTable("AspNetUserRoles", (string)null);
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken<string>", b =>
-                {
-                    b.Property<string>("UserId")
-                        .HasColumnType("text");
-
-                    b.Property<string>("LoginProvider")
-                        .HasMaxLength(128)
-                        .HasColumnType("character varying(128)");
-
-                    b.Property<string>("Name")
-                        .HasMaxLength(128)
-                        .HasColumnType("character varying(128)");
-
-                    b.Property<string>("Value")
-                        .HasColumnType("text");
-
-                    b.HasKey("UserId", "LoginProvider", "Name");
-
-                    b.ToTable("AspNetUserTokens", (string)null);
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.FavoriteRecipe", b =>
-                {
-                    b.Property<string>("UserId")
-                        .HasColumnType("text");
-
-                    b.Property<int>("RecipeId")
-                        .HasColumnType("integer");
-
-                    b.HasKey("UserId", "RecipeId");
-
-                    b.HasIndex("RecipeId");
-
-                    b.ToTable("FavoriteRecipes");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.Ingredient", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<float>("Calories")
-                        .HasColumnType("real");
-
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real");
-
-                    b.Property<float>("Fat")
-                        .HasColumnType("real");
-
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<float>("Protein")
-                        .HasColumnType("real");
-
-                    b.Property<string>("Status")
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("Ingredients");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.MealKeyword", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<string>("Tag")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("MealKeywords");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.MealSlot", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<string>("Day")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<bool>("IsRestaurantMeal")
-                        .HasColumnType("boolean");
-
-                    b.Property<string>("MealType")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<int?>("RecipeId")
-                        .HasColumnType("integer");
-
-                    b.Property<int?>("RestaurantMealId")
-                        .HasColumnType("integer");
-
-                    b.Property<int?>("WeeklyMealPlanId")
-                        .HasColumnType("integer");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("RecipeId");
-
-                    b.HasIndex("RestaurantMealId");
-
-                    b.HasIndex("WeeklyMealPlanId");
-
-                    b.ToTable("MealSlots");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.Notification", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<DateTime>("CreatedAt")
-                        .HasColumnType("timestamp with time zone");
-
-                    b.Property<bool>("IsRead")
-                        .HasColumnType("boolean");
-
-                    b.Property<string>("Message")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<int?>("RecipeId")
-                        .HasColumnType("integer");
-
-                    b.Property<int?>("RelatedUserId")
-                        .HasColumnType("integer");
-
-                    b.Property<string>("Type")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("Notifications");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<string>("AdminComment")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<float>("Calories")
-                        .HasColumnType("real");
-
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real");
-
-                    b.Property<DateTime>("CreatedAt")
-                        .HasColumnType("timestamp with time zone");
-
-                    b.Property<string>("DeclineReason")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<float>("Fat")
-                        .HasColumnType("real");
-
-                    b.Property<bool?>("HasPendingIngredients")
-                        .HasColumnType("boolean");
-
-                    b.Property<string>("ImageUrl")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.PrimitiveCollection<string[]>("Instructions")
-                        .HasColumnType("text[]");
-
-                    b.Property<float>("Protein")
-                        .HasColumnType("real");
-
-                    b.Property<string>("RecipeStatus")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<string>("Title")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.PrimitiveCollection<List<string>>("Type")
-                        .IsRequired()
-                        .HasColumnType("text[]");
-
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("UserId");
-
-                    b.ToTable("Recipes");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.RecipeIngredient", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<int>("IngredientId")
-                        .HasColumnType("integer");
-
-                    b.Property<float>("Quantity")
-                        .HasColumnType("real");
-
-                    b.Property<int>("RecipeId")
-                        .HasColumnType("integer");
-
-                    b.Property<string>("Unit")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("IngredientId");
-
-                    b.HasIndex("RecipeId");
-
-                    b.ToTable("RecipeIngredients");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.RecipeRating", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<double>("Rating")
-                        .HasColumnType("double precision");
-
-                    b.Property<int>("RecipeId")
-                        .HasColumnType("integer");
-
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("RecipeId");
-
-                    b.HasIndex("UserId", "RecipeId")
-                        .IsUnique();
-
-                    b.ToTable("RecipeRatings");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.Restaurant", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<string>("Description")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<string>("ImageUrl")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("Restaurants");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.RestaurantMeal", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<float>("Calories")
-                        .HasColumnType("real");
-
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real");
-
-                    b.Property<float>("Fat")
-                        .HasColumnType("real");
-
-                    b.Property<string>("ItemDescription")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<string>("ItemName")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<float>("Protein")
-                        .HasColumnType("real");
-
-                    b.Property<int?>("RestaurantId")
-                        .HasColumnType("integer");
-
-                    b.Property<string>("RestaurantName")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.PrimitiveCollection<List<string>>("Type")
-                        .IsRequired()
-                        .HasColumnType("text[]");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("RestaurantId");
-
-                    b.ToTable("RestaurantMeals");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.User", b =>
-                {
-                    b.Property<string>("Id")
-                        .HasColumnType("text");
-
-                    b.Property<int>("AccessFailedCount")
-                        .HasColumnType("integer");
-
-                    b.Property<string>("ConcurrencyStamp")
-                        .IsConcurrencyToken()
-                        .HasColumnType("text");
-
-                    b.Property<string>("Email")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-
-                    b.Property<bool>("EmailConfirmed")
-                        .HasColumnType("boolean");
-
-                    b.Property<bool>("LockoutEnabled")
-                        .HasColumnType("boolean");
-
-                    b.Property<DateTimeOffset?>("LockoutEnd")
-                        .HasColumnType("timestamp with time zone");
-
-                    b.Property<string>("NormalizedEmail")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-
-                    b.Property<string>("NormalizedUserName")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-
-                    b.Property<string>("PasswordHash")
-                        .HasColumnType("text");
-
-                    b.Property<string>("PhoneNumber")
-                        .HasColumnType("text");
-
-                    b.Property<bool>("PhoneNumberConfirmed")
-                        .HasColumnType("boolean");
-
-                    b.Property<string>("ProfilePictureUrl")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<string>("SecurityStamp")
-                        .HasColumnType("text");
-
-                    b.Property<bool>("TwoFactorEnabled")
-                        .HasColumnType("boolean");
-
-                    b.Property<string>("UserName")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("NormalizedEmail")
-                        .HasDatabaseName("EmailIndex");
-
-                    b.HasIndex("NormalizedUserName")
-                        .IsUnique()
-                        .HasDatabaseName("UserNameIndex");
-
-                    b.ToTable("AspNetUsers", (string)null);
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.WeeklyMealPlan", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<DateTime>("GeneratedAt")
-                        .HasColumnType("timestamp with time zone");
-
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("WeeklyMealPlans");
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim<string>", b =>
-                {
-                    b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null)
-                        .WithMany()
-                        .HasForeignKey("RoleId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim<string>", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", null)
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin<string>", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", null)
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole<string>", b =>
-                {
-                    b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null)
-                        .WithMany()
-                        .HasForeignKey("RoleId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.HasOne("NutriMatch.Models.User", null)
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken<string>", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", null)
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.FavoriteRecipe", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Recipe", "Recipe")
-                        .WithMany("FavoritedBy")
-                        .HasForeignKey("RecipeId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.HasOne("NutriMatch.Models.User", "User")
-                        .WithMany("FavoriteRecipes")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("Recipe");
-
-                    b.Navigation("User");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.MealSlot", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Recipe", "Recipe")
-                        .WithMany()
-                        .HasForeignKey("RecipeId");
-
-                    b.HasOne("NutriMatch.Models.RestaurantMeal", "RestaurantMeal")
-                        .WithMany()
-                        .HasForeignKey("RestaurantMealId");
-
-                    b.HasOne("NutriMatch.Models.WeeklyMealPlan", null)
-                        .WithMany("MealSlots")
-                        .HasForeignKey("WeeklyMealPlanId");
-
-                    b.Navigation("Recipe");
-
-                    b.Navigation("RestaurantMeal");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", "User")
-                        .WithMany("Recipes")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("User");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.RecipeIngredient", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Ingredient", "Ingredient")
-                        .WithMany()
-                        .HasForeignKey("IngredientId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.HasOne("NutriMatch.Models.Recipe", null)
-                        .WithMany("RecipeIngredients")
-                        .HasForeignKey("RecipeId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("Ingredient");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.RecipeRating", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Recipe", "Recipe")
-                        .WithMany("Ratings")
-                        .HasForeignKey("RecipeId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.HasOne("NutriMatch.Models.User", "User")
-                        .WithMany("Ratings")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("Recipe");
-
-                    b.Navigation("User");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.RestaurantMeal", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Restaurant", "Restaurant")
-                        .WithMany("RestaurantMeals")
-                        .HasForeignKey("RestaurantId");
-
-                    b.Navigation("Restaurant");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.Navigation("FavoritedBy");
-
-                    b.Navigation("Ratings");
-
-                    b.Navigation("RecipeIngredients");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.Restaurant", b =>
-                {
-                    b.Navigation("RestaurantMeals");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.User", b =>
-                {
-                    b.Navigation("FavoriteRecipes");
-
-                    b.Navigation("Ratings");
-
-                    b.Navigation("Recipes");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.WeeklyMealPlan", b =>
-                {
-                    b.Navigation("MealSlots");
-                });
-#pragma warning restore 612, 618
-        }
-    }
-}
Index: triMatch/Migrations/20251001131313_Notifications.cs
===================================================================
--- NutriMatch/Migrations/20251001131313_Notifications.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,42 +1,0 @@
-﻿using System;
-using Microsoft.EntityFrameworkCore.Migrations;
-using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
-
-#nullable disable
-
-namespace NutriMatch.Migrations
-{
-    /// <inheritdoc />
-    public partial class Notifications : Migration
-    {
-        /// <inheritdoc />
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.CreateTable(
-                name: "Notifications",
-                columns: table => new
-                {
-                    Id = table.Column<int>(type: "integer", nullable: false)
-                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
-                    UserId = table.Column<string>(type: "text", nullable: false),
-                    Type = table.Column<string>(type: "text", nullable: false),
-                    Message = table.Column<string>(type: "text", nullable: false),
-                    RecipeId = table.Column<int>(type: "integer", nullable: true),
-                    RelatedUserId = table.Column<int>(type: "integer", nullable: true),
-                    IsRead = table.Column<bool>(type: "boolean", nullable: false),
-                    CreatedAt = table.Column<DateTime>(type: "timestamp with time zone", nullable: false)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_Notifications", x => x.Id);
-                });
-        }
-
-        /// <inheritdoc />
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropTable(
-                name: "Notifications");
-        }
-    }
-}
Index: triMatch/Migrations/20251001141545_Notification.Designer.cs
===================================================================
--- NutriMatch/Migrations/20251001141545_Notification.Designer.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,765 +1,0 @@
-﻿// <auto-generated />
-using System;
-using System.Collections.Generic;
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Migrations;
-using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
-using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
-using NutriMatch.Data;
-
-#nullable disable
-
-namespace NutriMatch.Migrations
-{
-    [DbContext(typeof(AppDbContext))]
-    [Migration("20251001141545_Notification")]
-    partial class Notification
-    {
-        /// <inheritdoc />
-        protected override void BuildTargetModel(ModelBuilder modelBuilder)
-        {
-#pragma warning disable 612, 618
-            modelBuilder
-                .HasAnnotation("ProductVersion", "9.0.7")
-                .HasAnnotation("Relational:MaxIdentifierLength", 63);
-
-            NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b =>
-                {
-                    b.Property<string>("Id")
-                        .HasColumnType("text");
-
-                    b.Property<string>("ConcurrencyStamp")
-                        .IsConcurrencyToken()
-                        .HasColumnType("text");
-
-                    b.Property<string>("Name")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-
-                    b.Property<string>("NormalizedName")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("NormalizedName")
-                        .IsUnique()
-                        .HasDatabaseName("RoleNameIndex");
-
-                    b.ToTable("AspNetRoles", (string)null);
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim<string>", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<string>("ClaimType")
-                        .HasColumnType("text");
-
-                    b.Property<string>("ClaimValue")
-                        .HasColumnType("text");
-
-                    b.Property<string>("RoleId")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("RoleId");
-
-                    b.ToTable("AspNetRoleClaims", (string)null);
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim<string>", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<string>("ClaimType")
-                        .HasColumnType("text");
-
-                    b.Property<string>("ClaimValue")
-                        .HasColumnType("text");
-
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("UserId");
-
-                    b.ToTable("AspNetUserClaims", (string)null);
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin<string>", b =>
-                {
-                    b.Property<string>("LoginProvider")
-                        .HasMaxLength(128)
-                        .HasColumnType("character varying(128)");
-
-                    b.Property<string>("ProviderKey")
-                        .HasMaxLength(128)
-                        .HasColumnType("character varying(128)");
-
-                    b.Property<string>("ProviderDisplayName")
-                        .HasColumnType("text");
-
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("LoginProvider", "ProviderKey");
-
-                    b.HasIndex("UserId");
-
-                    b.ToTable("AspNetUserLogins", (string)null);
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole<string>", b =>
-                {
-                    b.Property<string>("UserId")
-                        .HasColumnType("text");
-
-                    b.Property<string>("RoleId")
-                        .HasColumnType("text");
-
-                    b.HasKey("UserId", "RoleId");
-
-                    b.HasIndex("RoleId");
-
-                    b.ToTable("AspNetUserRoles", (string)null);
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken<string>", b =>
-                {
-                    b.Property<string>("UserId")
-                        .HasColumnType("text");
-
-                    b.Property<string>("LoginProvider")
-                        .HasMaxLength(128)
-                        .HasColumnType("character varying(128)");
-
-                    b.Property<string>("Name")
-                        .HasMaxLength(128)
-                        .HasColumnType("character varying(128)");
-
-                    b.Property<string>("Value")
-                        .HasColumnType("text");
-
-                    b.HasKey("UserId", "LoginProvider", "Name");
-
-                    b.ToTable("AspNetUserTokens", (string)null);
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.FavoriteRecipe", b =>
-                {
-                    b.Property<string>("UserId")
-                        .HasColumnType("text");
-
-                    b.Property<int>("RecipeId")
-                        .HasColumnType("integer");
-
-                    b.HasKey("UserId", "RecipeId");
-
-                    b.HasIndex("RecipeId");
-
-                    b.ToTable("FavoriteRecipes");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.Ingredient", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<float>("Calories")
-                        .HasColumnType("real");
-
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real");
-
-                    b.Property<float>("Fat")
-                        .HasColumnType("real");
-
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<float>("Protein")
-                        .HasColumnType("real");
-
-                    b.Property<string>("Status")
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("Ingredients");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.MealKeyword", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<string>("Tag")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("MealKeywords");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.MealSlot", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<string>("Day")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<bool>("IsRestaurantMeal")
-                        .HasColumnType("boolean");
-
-                    b.Property<string>("MealType")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<int?>("RecipeId")
-                        .HasColumnType("integer");
-
-                    b.Property<int?>("RestaurantMealId")
-                        .HasColumnType("integer");
-
-                    b.Property<int?>("WeeklyMealPlanId")
-                        .HasColumnType("integer");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("RecipeId");
-
-                    b.HasIndex("RestaurantMealId");
-
-                    b.HasIndex("WeeklyMealPlanId");
-
-                    b.ToTable("MealSlots");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.Notification", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<DateTime>("CreatedAt")
-                        .HasColumnType("timestamp with time zone");
-
-                    b.Property<bool>("IsRead")
-                        .HasColumnType("boolean");
-
-                    b.Property<string>("Message")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<int?>("RecipeId")
-                        .HasColumnType("integer");
-
-                    b.Property<string>("RelatedUserId")
-                        .HasColumnType("text");
-
-                    b.Property<string>("Type")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("Notifications");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<string>("AdminComment")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<float>("Calories")
-                        .HasColumnType("real");
-
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real");
-
-                    b.Property<DateTime>("CreatedAt")
-                        .HasColumnType("timestamp with time zone");
-
-                    b.Property<string>("DeclineReason")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<float>("Fat")
-                        .HasColumnType("real");
-
-                    b.Property<bool?>("HasPendingIngredients")
-                        .HasColumnType("boolean");
-
-                    b.Property<string>("ImageUrl")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.PrimitiveCollection<string[]>("Instructions")
-                        .HasColumnType("text[]");
-
-                    b.Property<float>("Protein")
-                        .HasColumnType("real");
-
-                    b.Property<string>("RecipeStatus")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<string>("Title")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.PrimitiveCollection<List<string>>("Type")
-                        .IsRequired()
-                        .HasColumnType("text[]");
-
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("UserId");
-
-                    b.ToTable("Recipes");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.RecipeIngredient", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<int>("IngredientId")
-                        .HasColumnType("integer");
-
-                    b.Property<float>("Quantity")
-                        .HasColumnType("real");
-
-                    b.Property<int>("RecipeId")
-                        .HasColumnType("integer");
-
-                    b.Property<string>("Unit")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("IngredientId");
-
-                    b.HasIndex("RecipeId");
-
-                    b.ToTable("RecipeIngredients");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.RecipeRating", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<double>("Rating")
-                        .HasColumnType("double precision");
-
-                    b.Property<int>("RecipeId")
-                        .HasColumnType("integer");
-
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("RecipeId");
-
-                    b.HasIndex("UserId", "RecipeId")
-                        .IsUnique();
-
-                    b.ToTable("RecipeRatings");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.Restaurant", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<string>("Description")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<string>("ImageUrl")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("Restaurants");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.RestaurantMeal", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<float>("Calories")
-                        .HasColumnType("real");
-
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real");
-
-                    b.Property<float>("Fat")
-                        .HasColumnType("real");
-
-                    b.Property<string>("ItemDescription")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<string>("ItemName")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<float>("Protein")
-                        .HasColumnType("real");
-
-                    b.Property<int?>("RestaurantId")
-                        .HasColumnType("integer");
-
-                    b.Property<string>("RestaurantName")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.PrimitiveCollection<List<string>>("Type")
-                        .IsRequired()
-                        .HasColumnType("text[]");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("RestaurantId");
-
-                    b.ToTable("RestaurantMeals");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.User", b =>
-                {
-                    b.Property<string>("Id")
-                        .HasColumnType("text");
-
-                    b.Property<int>("AccessFailedCount")
-                        .HasColumnType("integer");
-
-                    b.Property<string>("ConcurrencyStamp")
-                        .IsConcurrencyToken()
-                        .HasColumnType("text");
-
-                    b.Property<string>("Email")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-
-                    b.Property<bool>("EmailConfirmed")
-                        .HasColumnType("boolean");
-
-                    b.Property<bool>("LockoutEnabled")
-                        .HasColumnType("boolean");
-
-                    b.Property<DateTimeOffset?>("LockoutEnd")
-                        .HasColumnType("timestamp with time zone");
-
-                    b.Property<string>("NormalizedEmail")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-
-                    b.Property<string>("NormalizedUserName")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-
-                    b.Property<string>("PasswordHash")
-                        .HasColumnType("text");
-
-                    b.Property<string>("PhoneNumber")
-                        .HasColumnType("text");
-
-                    b.Property<bool>("PhoneNumberConfirmed")
-                        .HasColumnType("boolean");
-
-                    b.Property<string>("ProfilePictureUrl")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<string>("SecurityStamp")
-                        .HasColumnType("text");
-
-                    b.Property<bool>("TwoFactorEnabled")
-                        .HasColumnType("boolean");
-
-                    b.Property<string>("UserName")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("NormalizedEmail")
-                        .HasDatabaseName("EmailIndex");
-
-                    b.HasIndex("NormalizedUserName")
-                        .IsUnique()
-                        .HasDatabaseName("UserNameIndex");
-
-                    b.ToTable("AspNetUsers", (string)null);
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.WeeklyMealPlan", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<DateTime>("GeneratedAt")
-                        .HasColumnType("timestamp with time zone");
-
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("WeeklyMealPlans");
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim<string>", b =>
-                {
-                    b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null)
-                        .WithMany()
-                        .HasForeignKey("RoleId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim<string>", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", null)
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin<string>", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", null)
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole<string>", b =>
-                {
-                    b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null)
-                        .WithMany()
-                        .HasForeignKey("RoleId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.HasOne("NutriMatch.Models.User", null)
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken<string>", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", null)
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.FavoriteRecipe", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Recipe", "Recipe")
-                        .WithMany("FavoritedBy")
-                        .HasForeignKey("RecipeId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.HasOne("NutriMatch.Models.User", "User")
-                        .WithMany("FavoriteRecipes")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("Recipe");
-
-                    b.Navigation("User");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.MealSlot", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Recipe", "Recipe")
-                        .WithMany()
-                        .HasForeignKey("RecipeId");
-
-                    b.HasOne("NutriMatch.Models.RestaurantMeal", "RestaurantMeal")
-                        .WithMany()
-                        .HasForeignKey("RestaurantMealId");
-
-                    b.HasOne("NutriMatch.Models.WeeklyMealPlan", null)
-                        .WithMany("MealSlots")
-                        .HasForeignKey("WeeklyMealPlanId");
-
-                    b.Navigation("Recipe");
-
-                    b.Navigation("RestaurantMeal");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", "User")
-                        .WithMany("Recipes")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("User");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.RecipeIngredient", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Ingredient", "Ingredient")
-                        .WithMany()
-                        .HasForeignKey("IngredientId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.HasOne("NutriMatch.Models.Recipe", null)
-                        .WithMany("RecipeIngredients")
-                        .HasForeignKey("RecipeId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("Ingredient");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.RecipeRating", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Recipe", "Recipe")
-                        .WithMany("Ratings")
-                        .HasForeignKey("RecipeId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.HasOne("NutriMatch.Models.User", "User")
-                        .WithMany("Ratings")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("Recipe");
-
-                    b.Navigation("User");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.RestaurantMeal", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Restaurant", "Restaurant")
-                        .WithMany("RestaurantMeals")
-                        .HasForeignKey("RestaurantId");
-
-                    b.Navigation("Restaurant");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.Navigation("FavoritedBy");
-
-                    b.Navigation("Ratings");
-
-                    b.Navigation("RecipeIngredients");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.Restaurant", b =>
-                {
-                    b.Navigation("RestaurantMeals");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.User", b =>
-                {
-                    b.Navigation("FavoriteRecipes");
-
-                    b.Navigation("Ratings");
-
-                    b.Navigation("Recipes");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.WeeklyMealPlan", b =>
-                {
-                    b.Navigation("MealSlots");
-                });
-#pragma warning restore 612, 618
-        }
-    }
-}
Index: triMatch/Migrations/20251001141545_Notification.cs
===================================================================
--- NutriMatch/Migrations/20251001141545_Notification.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,36 +1,0 @@
-﻿using Microsoft.EntityFrameworkCore.Migrations;
-
-#nullable disable
-
-namespace NutriMatch.Migrations
-{
-    /// <inheritdoc />
-    public partial class Notification : Migration
-    {
-        /// <inheritdoc />
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.AlterColumn<string>(
-                name: "RelatedUserId",
-                table: "Notifications",
-                type: "text",
-                nullable: true,
-                oldClrType: typeof(int),
-                oldType: "integer",
-                oldNullable: true);
-        }
-
-        /// <inheritdoc />
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.AlterColumn<int>(
-                name: "RelatedUserId",
-                table: "Notifications",
-                type: "integer",
-                nullable: true,
-                oldClrType: typeof(string),
-                oldType: "text",
-                oldNullable: true);
-        }
-    }
-}
Index: triMatch/Migrations/20251003132037_AddRestaurantFollowingAndMealPreferences.Designer.cs
===================================================================
--- NutriMatch/Migrations/20251003132037_AddRestaurantFollowingAndMealPreferences.Designer.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,850 +1,0 @@
-﻿// <auto-generated />
-using System;
-using System.Collections.Generic;
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Migrations;
-using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
-using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
-using NutriMatch.Data;
-
-#nullable disable
-
-namespace NutriMatch.Migrations
-{
-    [DbContext(typeof(AppDbContext))]
-    [Migration("20251003132037_AddRestaurantFollowingAndMealPreferences")]
-    partial class AddRestaurantFollowingAndMealPreferences
-    {
-        /// <inheritdoc />
-        protected override void BuildTargetModel(ModelBuilder modelBuilder)
-        {
-#pragma warning disable 612, 618
-            modelBuilder
-                .HasAnnotation("ProductVersion", "9.0.7")
-                .HasAnnotation("Relational:MaxIdentifierLength", 63);
-
-            NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b =>
-                {
-                    b.Property<string>("Id")
-                        .HasColumnType("text");
-
-                    b.Property<string>("ConcurrencyStamp")
-                        .IsConcurrencyToken()
-                        .HasColumnType("text");
-
-                    b.Property<string>("Name")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-
-                    b.Property<string>("NormalizedName")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("NormalizedName")
-                        .IsUnique()
-                        .HasDatabaseName("RoleNameIndex");
-
-                    b.ToTable("AspNetRoles", (string)null);
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim<string>", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<string>("ClaimType")
-                        .HasColumnType("text");
-
-                    b.Property<string>("ClaimValue")
-                        .HasColumnType("text");
-
-                    b.Property<string>("RoleId")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("RoleId");
-
-                    b.ToTable("AspNetRoleClaims", (string)null);
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim<string>", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<string>("ClaimType")
-                        .HasColumnType("text");
-
-                    b.Property<string>("ClaimValue")
-                        .HasColumnType("text");
-
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("UserId");
-
-                    b.ToTable("AspNetUserClaims", (string)null);
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin<string>", b =>
-                {
-                    b.Property<string>("LoginProvider")
-                        .HasMaxLength(128)
-                        .HasColumnType("character varying(128)");
-
-                    b.Property<string>("ProviderKey")
-                        .HasMaxLength(128)
-                        .HasColumnType("character varying(128)");
-
-                    b.Property<string>("ProviderDisplayName")
-                        .HasColumnType("text");
-
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("LoginProvider", "ProviderKey");
-
-                    b.HasIndex("UserId");
-
-                    b.ToTable("AspNetUserLogins", (string)null);
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole<string>", b =>
-                {
-                    b.Property<string>("UserId")
-                        .HasColumnType("text");
-
-                    b.Property<string>("RoleId")
-                        .HasColumnType("text");
-
-                    b.HasKey("UserId", "RoleId");
-
-                    b.HasIndex("RoleId");
-
-                    b.ToTable("AspNetUserRoles", (string)null);
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken<string>", b =>
-                {
-                    b.Property<string>("UserId")
-                        .HasColumnType("text");
-
-                    b.Property<string>("LoginProvider")
-                        .HasMaxLength(128)
-                        .HasColumnType("character varying(128)");
-
-                    b.Property<string>("Name")
-                        .HasMaxLength(128)
-                        .HasColumnType("character varying(128)");
-
-                    b.Property<string>("Value")
-                        .HasColumnType("text");
-
-                    b.HasKey("UserId", "LoginProvider", "Name");
-
-                    b.ToTable("AspNetUserTokens", (string)null);
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.FavoriteRecipe", b =>
-                {
-                    b.Property<string>("UserId")
-                        .HasColumnType("text");
-
-                    b.Property<int>("RecipeId")
-                        .HasColumnType("integer");
-
-                    b.HasKey("UserId", "RecipeId");
-
-                    b.HasIndex("RecipeId");
-
-                    b.ToTable("FavoriteRecipes");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.Ingredient", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<float>("Calories")
-                        .HasColumnType("real");
-
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real");
-
-                    b.Property<float>("Fat")
-                        .HasColumnType("real");
-
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<float>("Protein")
-                        .HasColumnType("real");
-
-                    b.Property<string>("Status")
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("Ingredients");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.MealKeyword", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<string>("Tag")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("MealKeywords");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.MealSlot", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<string>("Day")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<bool>("IsRestaurantMeal")
-                        .HasColumnType("boolean");
-
-                    b.Property<string>("MealType")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<int?>("RecipeId")
-                        .HasColumnType("integer");
-
-                    b.Property<int?>("RestaurantMealId")
-                        .HasColumnType("integer");
-
-                    b.Property<int?>("WeeklyMealPlanId")
-                        .HasColumnType("integer");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("RecipeId");
-
-                    b.HasIndex("RestaurantMealId");
-
-                    b.HasIndex("WeeklyMealPlanId");
-
-                    b.ToTable("MealSlots");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.Notification", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<DateTime>("CreatedAt")
-                        .HasColumnType("timestamp with time zone");
-
-                    b.Property<bool>("IsRead")
-                        .HasColumnType("boolean");
-
-                    b.Property<string>("Message")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<int?>("RecipeId")
-                        .HasColumnType("integer");
-
-                    b.Property<string>("RelatedUserId")
-                        .HasColumnType("text");
-
-                    b.Property<string>("Type")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("Notifications");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<string>("AdminComment")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<float>("Calories")
-                        .HasColumnType("real");
-
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real");
-
-                    b.Property<DateTime>("CreatedAt")
-                        .HasColumnType("timestamp with time zone");
-
-                    b.Property<string>("DeclineReason")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<float>("Fat")
-                        .HasColumnType("real");
-
-                    b.Property<bool?>("HasPendingIngredients")
-                        .HasColumnType("boolean");
-
-                    b.Property<string>("ImageUrl")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.PrimitiveCollection<string[]>("Instructions")
-                        .HasColumnType("text[]");
-
-                    b.Property<float>("Protein")
-                        .HasColumnType("real");
-
-                    b.Property<string>("RecipeStatus")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<string>("Title")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.PrimitiveCollection<List<string>>("Type")
-                        .IsRequired()
-                        .HasColumnType("text[]");
-
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("UserId");
-
-                    b.ToTable("Recipes");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.RecipeIngredient", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<int>("IngredientId")
-                        .HasColumnType("integer");
-
-                    b.Property<float>("Quantity")
-                        .HasColumnType("real");
-
-                    b.Property<int>("RecipeId")
-                        .HasColumnType("integer");
-
-                    b.Property<string>("Unit")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("IngredientId");
-
-                    b.HasIndex("RecipeId");
-
-                    b.ToTable("RecipeIngredients");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.RecipeRating", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<double>("Rating")
-                        .HasColumnType("double precision");
-
-                    b.Property<int>("RecipeId")
-                        .HasColumnType("integer");
-
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("RecipeId");
-
-                    b.HasIndex("UserId", "RecipeId")
-                        .IsUnique();
-
-                    b.ToTable("RecipeRatings");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.Restaurant", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<string>("Description")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<string>("ImageUrl")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("Restaurants");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.RestaurantFollowing", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<int>("RestaurantId")
-                        .HasColumnType("integer");
-
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("RestaurantId");
-
-                    b.HasIndex("UserId", "RestaurantId")
-                        .IsUnique();
-
-                    b.ToTable("RestaurantFollowings");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.RestaurantMeal", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<float>("Calories")
-                        .HasColumnType("real");
-
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real");
-
-                    b.Property<float>("Fat")
-                        .HasColumnType("real");
-
-                    b.Property<string>("ItemDescription")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<string>("ItemName")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<float>("Protein")
-                        .HasColumnType("real");
-
-                    b.Property<int?>("RestaurantId")
-                        .HasColumnType("integer");
-
-                    b.Property<string>("RestaurantName")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.PrimitiveCollection<List<string>>("Type")
-                        .IsRequired()
-                        .HasColumnType("text[]");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("RestaurantId");
-
-                    b.ToTable("RestaurantMeals");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.User", b =>
-                {
-                    b.Property<string>("Id")
-                        .HasColumnType("text");
-
-                    b.Property<int>("AccessFailedCount")
-                        .HasColumnType("integer");
-
-                    b.Property<string>("ConcurrencyStamp")
-                        .IsConcurrencyToken()
-                        .HasColumnType("text");
-
-                    b.Property<string>("Email")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-
-                    b.Property<bool>("EmailConfirmed")
-                        .HasColumnType("boolean");
-
-                    b.Property<bool>("LockoutEnabled")
-                        .HasColumnType("boolean");
-
-                    b.Property<DateTimeOffset?>("LockoutEnd")
-                        .HasColumnType("timestamp with time zone");
-
-                    b.Property<string>("NormalizedEmail")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-
-                    b.Property<string>("NormalizedUserName")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-
-                    b.Property<string>("PasswordHash")
-                        .HasColumnType("text");
-
-                    b.Property<string>("PhoneNumber")
-                        .HasColumnType("text");
-
-                    b.Property<bool>("PhoneNumberConfirmed")
-                        .HasColumnType("boolean");
-
-                    b.Property<string>("ProfilePictureUrl")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<string>("SecurityStamp")
-                        .HasColumnType("text");
-
-                    b.Property<bool>("TwoFactorEnabled")
-                        .HasColumnType("boolean");
-
-                    b.Property<string>("UserName")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("NormalizedEmail")
-                        .HasDatabaseName("EmailIndex");
-
-                    b.HasIndex("NormalizedUserName")
-                        .IsUnique()
-                        .HasDatabaseName("UserNameIndex");
-
-                    b.ToTable("AspNetUsers", (string)null);
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.UserMealPreference", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<string>("Tag")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("UserId", "Tag")
-                        .IsUnique();
-
-                    b.ToTable("UserMealPreferences");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.WeeklyMealPlan", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<DateTime>("GeneratedAt")
-                        .HasColumnType("timestamp with time zone");
-
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("WeeklyMealPlans");
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim<string>", b =>
-                {
-                    b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null)
-                        .WithMany()
-                        .HasForeignKey("RoleId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim<string>", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", null)
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin<string>", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", null)
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole<string>", b =>
-                {
-                    b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null)
-                        .WithMany()
-                        .HasForeignKey("RoleId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.HasOne("NutriMatch.Models.User", null)
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken<string>", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", null)
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.FavoriteRecipe", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Recipe", "Recipe")
-                        .WithMany("FavoritedBy")
-                        .HasForeignKey("RecipeId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.HasOne("NutriMatch.Models.User", "User")
-                        .WithMany("FavoriteRecipes")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("Recipe");
-
-                    b.Navigation("User");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.MealSlot", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Recipe", "Recipe")
-                        .WithMany()
-                        .HasForeignKey("RecipeId");
-
-                    b.HasOne("NutriMatch.Models.RestaurantMeal", "RestaurantMeal")
-                        .WithMany()
-                        .HasForeignKey("RestaurantMealId");
-
-                    b.HasOne("NutriMatch.Models.WeeklyMealPlan", null)
-                        .WithMany("MealSlots")
-                        .HasForeignKey("WeeklyMealPlanId");
-
-                    b.Navigation("Recipe");
-
-                    b.Navigation("RestaurantMeal");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", "User")
-                        .WithMany("Recipes")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("User");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.RecipeIngredient", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Ingredient", "Ingredient")
-                        .WithMany()
-                        .HasForeignKey("IngredientId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.HasOne("NutriMatch.Models.Recipe", null)
-                        .WithMany("RecipeIngredients")
-                        .HasForeignKey("RecipeId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("Ingredient");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.RecipeRating", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Recipe", "Recipe")
-                        .WithMany("Ratings")
-                        .HasForeignKey("RecipeId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.HasOne("NutriMatch.Models.User", "User")
-                        .WithMany("Ratings")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("Recipe");
-
-                    b.Navigation("User");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.RestaurantFollowing", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Restaurant", "Restaurant")
-                        .WithMany("Followers")
-                        .HasForeignKey("RestaurantId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.HasOne("NutriMatch.Models.User", "User")
-                        .WithMany("FollowedRestaurants")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("Restaurant");
-
-                    b.Navigation("User");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.RestaurantMeal", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Restaurant", "Restaurant")
-                        .WithMany("RestaurantMeals")
-                        .HasForeignKey("RestaurantId");
-
-                    b.Navigation("Restaurant");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.UserMealPreference", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", "User")
-                        .WithMany("MealTagPreferences")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("User");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.Navigation("FavoritedBy");
-
-                    b.Navigation("Ratings");
-
-                    b.Navigation("RecipeIngredients");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.Restaurant", b =>
-                {
-                    b.Navigation("Followers");
-
-                    b.Navigation("RestaurantMeals");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.User", b =>
-                {
-                    b.Navigation("FavoriteRecipes");
-
-                    b.Navigation("FollowedRestaurants");
-
-                    b.Navigation("MealTagPreferences");
-
-                    b.Navigation("Ratings");
-
-                    b.Navigation("Recipes");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.WeeklyMealPlan", b =>
-                {
-                    b.Navigation("MealSlots");
-                });
-#pragma warning restore 612, 618
-        }
-    }
-}
Index: triMatch/Migrations/20251003132037_AddRestaurantFollowingAndMealPreferences.cs
===================================================================
--- NutriMatch/Migrations/20251003132037_AddRestaurantFollowingAndMealPreferences.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,88 +1,0 @@
-﻿using Microsoft.EntityFrameworkCore.Migrations;
-using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
-
-#nullable disable
-
-namespace NutriMatch.Migrations
-{
-    /// <inheritdoc />
-    public partial class AddRestaurantFollowingAndMealPreferences : Migration
-    {
-        /// <inheritdoc />
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.CreateTable(
-                name: "RestaurantFollowings",
-                columns: table => new
-                {
-                    Id = table.Column<int>(type: "integer", nullable: false)
-                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
-                    UserId = table.Column<string>(type: "text", nullable: false),
-                    RestaurantId = table.Column<int>(type: "integer", nullable: false)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_RestaurantFollowings", x => x.Id);
-                    table.ForeignKey(
-                        name: "FK_RestaurantFollowings_AspNetUsers_UserId",
-                        column: x => x.UserId,
-                        principalTable: "AspNetUsers",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Cascade);
-                    table.ForeignKey(
-                        name: "FK_RestaurantFollowings_Restaurants_RestaurantId",
-                        column: x => x.RestaurantId,
-                        principalTable: "Restaurants",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Cascade);
-                });
-
-            migrationBuilder.CreateTable(
-                name: "UserMealPreferences",
-                columns: table => new
-                {
-                    Id = table.Column<int>(type: "integer", nullable: false)
-                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
-                    UserId = table.Column<string>(type: "text", nullable: false),
-                    Tag = table.Column<string>(type: "text", nullable: false)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_UserMealPreferences", x => x.Id);
-                    table.ForeignKey(
-                        name: "FK_UserMealPreferences_AspNetUsers_UserId",
-                        column: x => x.UserId,
-                        principalTable: "AspNetUsers",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Cascade);
-                });
-
-            migrationBuilder.CreateIndex(
-                name: "IX_RestaurantFollowings_RestaurantId",
-                table: "RestaurantFollowings",
-                column: "RestaurantId");
-
-            migrationBuilder.CreateIndex(
-                name: "IX_RestaurantFollowings_UserId_RestaurantId",
-                table: "RestaurantFollowings",
-                columns: new[] { "UserId", "RestaurantId" },
-                unique: true);
-
-            migrationBuilder.CreateIndex(
-                name: "IX_UserMealPreferences_UserId_Tag",
-                table: "UserMealPreferences",
-                columns: new[] { "UserId", "Tag" },
-                unique: true);
-        }
-
-        /// <inheritdoc />
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropTable(
-                name: "RestaurantFollowings");
-
-            migrationBuilder.DropTable(
-                name: "UserMealPreferences");
-        }
-    }
-}
Index: triMatch/Migrations/20251004144331_AddThresholdValuesForPreferences.Designer.cs
===================================================================
--- NutriMatch/Migrations/20251004144331_AddThresholdValuesForPreferences.Designer.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,853 +1,0 @@
-﻿// <auto-generated />
-using System;
-using System.Collections.Generic;
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Migrations;
-using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
-using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
-using NutriMatch.Data;
-
-#nullable disable
-
-namespace NutriMatch.Migrations
-{
-    [DbContext(typeof(AppDbContext))]
-    [Migration("20251004144331_AddThresholdValuesForPreferences")]
-    partial class AddThresholdValuesForPreferences
-    {
-        /// <inheritdoc />
-        protected override void BuildTargetModel(ModelBuilder modelBuilder)
-        {
-#pragma warning disable 612, 618
-            modelBuilder
-                .HasAnnotation("ProductVersion", "9.0.7")
-                .HasAnnotation("Relational:MaxIdentifierLength", 63);
-
-            NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b =>
-                {
-                    b.Property<string>("Id")
-                        .HasColumnType("text");
-
-                    b.Property<string>("ConcurrencyStamp")
-                        .IsConcurrencyToken()
-                        .HasColumnType("text");
-
-                    b.Property<string>("Name")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-
-                    b.Property<string>("NormalizedName")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("NormalizedName")
-                        .IsUnique()
-                        .HasDatabaseName("RoleNameIndex");
-
-                    b.ToTable("AspNetRoles", (string)null);
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim<string>", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<string>("ClaimType")
-                        .HasColumnType("text");
-
-                    b.Property<string>("ClaimValue")
-                        .HasColumnType("text");
-
-                    b.Property<string>("RoleId")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("RoleId");
-
-                    b.ToTable("AspNetRoleClaims", (string)null);
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim<string>", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<string>("ClaimType")
-                        .HasColumnType("text");
-
-                    b.Property<string>("ClaimValue")
-                        .HasColumnType("text");
-
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("UserId");
-
-                    b.ToTable("AspNetUserClaims", (string)null);
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin<string>", b =>
-                {
-                    b.Property<string>("LoginProvider")
-                        .HasMaxLength(128)
-                        .HasColumnType("character varying(128)");
-
-                    b.Property<string>("ProviderKey")
-                        .HasMaxLength(128)
-                        .HasColumnType("character varying(128)");
-
-                    b.Property<string>("ProviderDisplayName")
-                        .HasColumnType("text");
-
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("LoginProvider", "ProviderKey");
-
-                    b.HasIndex("UserId");
-
-                    b.ToTable("AspNetUserLogins", (string)null);
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole<string>", b =>
-                {
-                    b.Property<string>("UserId")
-                        .HasColumnType("text");
-
-                    b.Property<string>("RoleId")
-                        .HasColumnType("text");
-
-                    b.HasKey("UserId", "RoleId");
-
-                    b.HasIndex("RoleId");
-
-                    b.ToTable("AspNetUserRoles", (string)null);
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken<string>", b =>
-                {
-                    b.Property<string>("UserId")
-                        .HasColumnType("text");
-
-                    b.Property<string>("LoginProvider")
-                        .HasMaxLength(128)
-                        .HasColumnType("character varying(128)");
-
-                    b.Property<string>("Name")
-                        .HasMaxLength(128)
-                        .HasColumnType("character varying(128)");
-
-                    b.Property<string>("Value")
-                        .HasColumnType("text");
-
-                    b.HasKey("UserId", "LoginProvider", "Name");
-
-                    b.ToTable("AspNetUserTokens", (string)null);
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.FavoriteRecipe", b =>
-                {
-                    b.Property<string>("UserId")
-                        .HasColumnType("text");
-
-                    b.Property<int>("RecipeId")
-                        .HasColumnType("integer");
-
-                    b.HasKey("UserId", "RecipeId");
-
-                    b.HasIndex("RecipeId");
-
-                    b.ToTable("FavoriteRecipes");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.Ingredient", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<float>("Calories")
-                        .HasColumnType("real");
-
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real");
-
-                    b.Property<float>("Fat")
-                        .HasColumnType("real");
-
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<float>("Protein")
-                        .HasColumnType("real");
-
-                    b.Property<string>("Status")
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("Ingredients");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.MealKeyword", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<string>("Tag")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("MealKeywords");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.MealSlot", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<string>("Day")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<bool>("IsRestaurantMeal")
-                        .HasColumnType("boolean");
-
-                    b.Property<string>("MealType")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<int?>("RecipeId")
-                        .HasColumnType("integer");
-
-                    b.Property<int?>("RestaurantMealId")
-                        .HasColumnType("integer");
-
-                    b.Property<int?>("WeeklyMealPlanId")
-                        .HasColumnType("integer");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("RecipeId");
-
-                    b.HasIndex("RestaurantMealId");
-
-                    b.HasIndex("WeeklyMealPlanId");
-
-                    b.ToTable("MealSlots");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.Notification", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<DateTime>("CreatedAt")
-                        .HasColumnType("timestamp with time zone");
-
-                    b.Property<bool>("IsRead")
-                        .HasColumnType("boolean");
-
-                    b.Property<string>("Message")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<int?>("RecipeId")
-                        .HasColumnType("integer");
-
-                    b.Property<string>("RelatedUserId")
-                        .HasColumnType("text");
-
-                    b.Property<string>("Type")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("Notifications");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<string>("AdminComment")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<float>("Calories")
-                        .HasColumnType("real");
-
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real");
-
-                    b.Property<DateTime>("CreatedAt")
-                        .HasColumnType("timestamp with time zone");
-
-                    b.Property<string>("DeclineReason")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<float>("Fat")
-                        .HasColumnType("real");
-
-                    b.Property<bool?>("HasPendingIngredients")
-                        .HasColumnType("boolean");
-
-                    b.Property<string>("ImageUrl")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.PrimitiveCollection<string[]>("Instructions")
-                        .HasColumnType("text[]");
-
-                    b.Property<float>("Protein")
-                        .HasColumnType("real");
-
-                    b.Property<string>("RecipeStatus")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<string>("Title")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.PrimitiveCollection<List<string>>("Type")
-                        .IsRequired()
-                        .HasColumnType("text[]");
-
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("UserId");
-
-                    b.ToTable("Recipes");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.RecipeIngredient", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<int>("IngredientId")
-                        .HasColumnType("integer");
-
-                    b.Property<float>("Quantity")
-                        .HasColumnType("real");
-
-                    b.Property<int>("RecipeId")
-                        .HasColumnType("integer");
-
-                    b.Property<string>("Unit")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("IngredientId");
-
-                    b.HasIndex("RecipeId");
-
-                    b.ToTable("RecipeIngredients");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.RecipeRating", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<double>("Rating")
-                        .HasColumnType("double precision");
-
-                    b.Property<int>("RecipeId")
-                        .HasColumnType("integer");
-
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("RecipeId");
-
-                    b.HasIndex("UserId", "RecipeId")
-                        .IsUnique();
-
-                    b.ToTable("RecipeRatings");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.Restaurant", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<string>("Description")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<string>("ImageUrl")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("Restaurants");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.RestaurantFollowing", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<int>("RestaurantId")
-                        .HasColumnType("integer");
-
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("RestaurantId");
-
-                    b.HasIndex("UserId", "RestaurantId")
-                        .IsUnique();
-
-                    b.ToTable("RestaurantFollowings");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.RestaurantMeal", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<float>("Calories")
-                        .HasColumnType("real");
-
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real");
-
-                    b.Property<float>("Fat")
-                        .HasColumnType("real");
-
-                    b.Property<string>("ItemDescription")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<string>("ItemName")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<float>("Protein")
-                        .HasColumnType("real");
-
-                    b.Property<int?>("RestaurantId")
-                        .HasColumnType("integer");
-
-                    b.Property<string>("RestaurantName")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.PrimitiveCollection<List<string>>("Type")
-                        .IsRequired()
-                        .HasColumnType("text[]");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("RestaurantId");
-
-                    b.ToTable("RestaurantMeals");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.User", b =>
-                {
-                    b.Property<string>("Id")
-                        .HasColumnType("text");
-
-                    b.Property<int>("AccessFailedCount")
-                        .HasColumnType("integer");
-
-                    b.Property<string>("ConcurrencyStamp")
-                        .IsConcurrencyToken()
-                        .HasColumnType("text");
-
-                    b.Property<string>("Email")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-
-                    b.Property<bool>("EmailConfirmed")
-                        .HasColumnType("boolean");
-
-                    b.Property<bool>("LockoutEnabled")
-                        .HasColumnType("boolean");
-
-                    b.Property<DateTimeOffset?>("LockoutEnd")
-                        .HasColumnType("timestamp with time zone");
-
-                    b.Property<string>("NormalizedEmail")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-
-                    b.Property<string>("NormalizedUserName")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-
-                    b.Property<string>("PasswordHash")
-                        .HasColumnType("text");
-
-                    b.Property<string>("PhoneNumber")
-                        .HasColumnType("text");
-
-                    b.Property<bool>("PhoneNumberConfirmed")
-                        .HasColumnType("boolean");
-
-                    b.Property<string>("ProfilePictureUrl")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<string>("SecurityStamp")
-                        .HasColumnType("text");
-
-                    b.Property<bool>("TwoFactorEnabled")
-                        .HasColumnType("boolean");
-
-                    b.Property<string>("UserName")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("NormalizedEmail")
-                        .HasDatabaseName("EmailIndex");
-
-                    b.HasIndex("NormalizedUserName")
-                        .IsUnique()
-                        .HasDatabaseName("UserNameIndex");
-
-                    b.ToTable("AspNetUsers", (string)null);
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.UserMealPreference", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<string>("Tag")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<int?>("ThresholdValue")
-                        .HasColumnType("integer");
-
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("UserId", "Tag")
-                        .IsUnique();
-
-                    b.ToTable("UserMealPreferences");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.WeeklyMealPlan", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<DateTime>("GeneratedAt")
-                        .HasColumnType("timestamp with time zone");
-
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("WeeklyMealPlans");
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim<string>", b =>
-                {
-                    b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null)
-                        .WithMany()
-                        .HasForeignKey("RoleId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim<string>", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", null)
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin<string>", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", null)
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole<string>", b =>
-                {
-                    b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null)
-                        .WithMany()
-                        .HasForeignKey("RoleId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.HasOne("NutriMatch.Models.User", null)
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken<string>", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", null)
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.FavoriteRecipe", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Recipe", "Recipe")
-                        .WithMany("FavoritedBy")
-                        .HasForeignKey("RecipeId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.HasOne("NutriMatch.Models.User", "User")
-                        .WithMany("FavoriteRecipes")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("Recipe");
-
-                    b.Navigation("User");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.MealSlot", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Recipe", "Recipe")
-                        .WithMany()
-                        .HasForeignKey("RecipeId");
-
-                    b.HasOne("NutriMatch.Models.RestaurantMeal", "RestaurantMeal")
-                        .WithMany()
-                        .HasForeignKey("RestaurantMealId");
-
-                    b.HasOne("NutriMatch.Models.WeeklyMealPlan", null)
-                        .WithMany("MealSlots")
-                        .HasForeignKey("WeeklyMealPlanId");
-
-                    b.Navigation("Recipe");
-
-                    b.Navigation("RestaurantMeal");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", "User")
-                        .WithMany("Recipes")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("User");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.RecipeIngredient", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Ingredient", "Ingredient")
-                        .WithMany()
-                        .HasForeignKey("IngredientId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.HasOne("NutriMatch.Models.Recipe", null)
-                        .WithMany("RecipeIngredients")
-                        .HasForeignKey("RecipeId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("Ingredient");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.RecipeRating", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Recipe", "Recipe")
-                        .WithMany("Ratings")
-                        .HasForeignKey("RecipeId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.HasOne("NutriMatch.Models.User", "User")
-                        .WithMany("Ratings")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("Recipe");
-
-                    b.Navigation("User");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.RestaurantFollowing", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Restaurant", "Restaurant")
-                        .WithMany("Followers")
-                        .HasForeignKey("RestaurantId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.HasOne("NutriMatch.Models.User", "User")
-                        .WithMany("FollowedRestaurants")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("Restaurant");
-
-                    b.Navigation("User");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.RestaurantMeal", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Restaurant", "Restaurant")
-                        .WithMany("RestaurantMeals")
-                        .HasForeignKey("RestaurantId");
-
-                    b.Navigation("Restaurant");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.UserMealPreference", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", "User")
-                        .WithMany("MealTagPreferences")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("User");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.Navigation("FavoritedBy");
-
-                    b.Navigation("Ratings");
-
-                    b.Navigation("RecipeIngredients");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.Restaurant", b =>
-                {
-                    b.Navigation("Followers");
-
-                    b.Navigation("RestaurantMeals");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.User", b =>
-                {
-                    b.Navigation("FavoriteRecipes");
-
-                    b.Navigation("FollowedRestaurants");
-
-                    b.Navigation("MealTagPreferences");
-
-                    b.Navigation("Ratings");
-
-                    b.Navigation("Recipes");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.WeeklyMealPlan", b =>
-                {
-                    b.Navigation("MealSlots");
-                });
-#pragma warning restore 612, 618
-        }
-    }
-}
Index: triMatch/Migrations/20251004144331_AddThresholdValuesForPreferences.cs
===================================================================
--- NutriMatch/Migrations/20251004144331_AddThresholdValuesForPreferences.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,28 +1,0 @@
-﻿using Microsoft.EntityFrameworkCore.Migrations;
-
-#nullable disable
-
-namespace NutriMatch.Migrations
-{
-    /// <inheritdoc />
-    public partial class AddThresholdValuesForPreferences : Migration
-    {
-        /// <inheritdoc />
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.AddColumn<int>(
-                name: "ThresholdValue",
-                table: "UserMealPreferences",
-                type: "integer",
-                nullable: true);
-        }
-
-        /// <inheritdoc />
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropColumn(
-                name: "ThresholdValue",
-                table: "UserMealPreferences");
-        }
-    }
-}
Index: triMatch/Migrations/20251004145314_AddRegeneratedRecipeIndicator.Designer.cs
===================================================================
--- NutriMatch/Migrations/20251004145314_AddRegeneratedRecipeIndicator.Designer.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,856 +1,0 @@
-﻿// <auto-generated />
-using System;
-using System.Collections.Generic;
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Migrations;
-using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
-using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
-using NutriMatch.Data;
-
-#nullable disable
-
-namespace NutriMatch.Migrations
-{
-    [DbContext(typeof(AppDbContext))]
-    [Migration("20251004145314_AddRegeneratedRecipeIndicator")]
-    partial class AddRegeneratedRecipeIndicator
-    {
-        /// <inheritdoc />
-        protected override void BuildTargetModel(ModelBuilder modelBuilder)
-        {
-#pragma warning disable 612, 618
-            modelBuilder
-                .HasAnnotation("ProductVersion", "9.0.7")
-                .HasAnnotation("Relational:MaxIdentifierLength", 63);
-
-            NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b =>
-                {
-                    b.Property<string>("Id")
-                        .HasColumnType("text");
-
-                    b.Property<string>("ConcurrencyStamp")
-                        .IsConcurrencyToken()
-                        .HasColumnType("text");
-
-                    b.Property<string>("Name")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-
-                    b.Property<string>("NormalizedName")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("NormalizedName")
-                        .IsUnique()
-                        .HasDatabaseName("RoleNameIndex");
-
-                    b.ToTable("AspNetRoles", (string)null);
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim<string>", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<string>("ClaimType")
-                        .HasColumnType("text");
-
-                    b.Property<string>("ClaimValue")
-                        .HasColumnType("text");
-
-                    b.Property<string>("RoleId")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("RoleId");
-
-                    b.ToTable("AspNetRoleClaims", (string)null);
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim<string>", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<string>("ClaimType")
-                        .HasColumnType("text");
-
-                    b.Property<string>("ClaimValue")
-                        .HasColumnType("text");
-
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("UserId");
-
-                    b.ToTable("AspNetUserClaims", (string)null);
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin<string>", b =>
-                {
-                    b.Property<string>("LoginProvider")
-                        .HasMaxLength(128)
-                        .HasColumnType("character varying(128)");
-
-                    b.Property<string>("ProviderKey")
-                        .HasMaxLength(128)
-                        .HasColumnType("character varying(128)");
-
-                    b.Property<string>("ProviderDisplayName")
-                        .HasColumnType("text");
-
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("LoginProvider", "ProviderKey");
-
-                    b.HasIndex("UserId");
-
-                    b.ToTable("AspNetUserLogins", (string)null);
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole<string>", b =>
-                {
-                    b.Property<string>("UserId")
-                        .HasColumnType("text");
-
-                    b.Property<string>("RoleId")
-                        .HasColumnType("text");
-
-                    b.HasKey("UserId", "RoleId");
-
-                    b.HasIndex("RoleId");
-
-                    b.ToTable("AspNetUserRoles", (string)null);
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken<string>", b =>
-                {
-                    b.Property<string>("UserId")
-                        .HasColumnType("text");
-
-                    b.Property<string>("LoginProvider")
-                        .HasMaxLength(128)
-                        .HasColumnType("character varying(128)");
-
-                    b.Property<string>("Name")
-                        .HasMaxLength(128)
-                        .HasColumnType("character varying(128)");
-
-                    b.Property<string>("Value")
-                        .HasColumnType("text");
-
-                    b.HasKey("UserId", "LoginProvider", "Name");
-
-                    b.ToTable("AspNetUserTokens", (string)null);
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.FavoriteRecipe", b =>
-                {
-                    b.Property<string>("UserId")
-                        .HasColumnType("text");
-
-                    b.Property<int>("RecipeId")
-                        .HasColumnType("integer");
-
-                    b.HasKey("UserId", "RecipeId");
-
-                    b.HasIndex("RecipeId");
-
-                    b.ToTable("FavoriteRecipes");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.Ingredient", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<float>("Calories")
-                        .HasColumnType("real");
-
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real");
-
-                    b.Property<float>("Fat")
-                        .HasColumnType("real");
-
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<float>("Protein")
-                        .HasColumnType("real");
-
-                    b.Property<string>("Status")
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("Ingredients");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.MealKeyword", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<string>("Tag")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("MealKeywords");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.MealSlot", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<string>("Day")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<bool?>("IsRegenerated")
-                        .HasColumnType("boolean");
-
-                    b.Property<bool>("IsRestaurantMeal")
-                        .HasColumnType("boolean");
-
-                    b.Property<string>("MealType")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<int?>("RecipeId")
-                        .HasColumnType("integer");
-
-                    b.Property<int?>("RestaurantMealId")
-                        .HasColumnType("integer");
-
-                    b.Property<int?>("WeeklyMealPlanId")
-                        .HasColumnType("integer");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("RecipeId");
-
-                    b.HasIndex("RestaurantMealId");
-
-                    b.HasIndex("WeeklyMealPlanId");
-
-                    b.ToTable("MealSlots");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.Notification", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<DateTime>("CreatedAt")
-                        .HasColumnType("timestamp with time zone");
-
-                    b.Property<bool>("IsRead")
-                        .HasColumnType("boolean");
-
-                    b.Property<string>("Message")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<int?>("RecipeId")
-                        .HasColumnType("integer");
-
-                    b.Property<string>("RelatedUserId")
-                        .HasColumnType("text");
-
-                    b.Property<string>("Type")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("Notifications");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<string>("AdminComment")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<float>("Calories")
-                        .HasColumnType("real");
-
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real");
-
-                    b.Property<DateTime>("CreatedAt")
-                        .HasColumnType("timestamp with time zone");
-
-                    b.Property<string>("DeclineReason")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<float>("Fat")
-                        .HasColumnType("real");
-
-                    b.Property<bool?>("HasPendingIngredients")
-                        .HasColumnType("boolean");
-
-                    b.Property<string>("ImageUrl")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.PrimitiveCollection<string[]>("Instructions")
-                        .HasColumnType("text[]");
-
-                    b.Property<float>("Protein")
-                        .HasColumnType("real");
-
-                    b.Property<string>("RecipeStatus")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<string>("Title")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.PrimitiveCollection<List<string>>("Type")
-                        .IsRequired()
-                        .HasColumnType("text[]");
-
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("UserId");
-
-                    b.ToTable("Recipes");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.RecipeIngredient", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<int>("IngredientId")
-                        .HasColumnType("integer");
-
-                    b.Property<float>("Quantity")
-                        .HasColumnType("real");
-
-                    b.Property<int>("RecipeId")
-                        .HasColumnType("integer");
-
-                    b.Property<string>("Unit")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("IngredientId");
-
-                    b.HasIndex("RecipeId");
-
-                    b.ToTable("RecipeIngredients");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.RecipeRating", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<double>("Rating")
-                        .HasColumnType("double precision");
-
-                    b.Property<int>("RecipeId")
-                        .HasColumnType("integer");
-
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("RecipeId");
-
-                    b.HasIndex("UserId", "RecipeId")
-                        .IsUnique();
-
-                    b.ToTable("RecipeRatings");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.Restaurant", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<string>("Description")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<string>("ImageUrl")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("Restaurants");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.RestaurantFollowing", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<int>("RestaurantId")
-                        .HasColumnType("integer");
-
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("RestaurantId");
-
-                    b.HasIndex("UserId", "RestaurantId")
-                        .IsUnique();
-
-                    b.ToTable("RestaurantFollowings");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.RestaurantMeal", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<float>("Calories")
-                        .HasColumnType("real");
-
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real");
-
-                    b.Property<float>("Fat")
-                        .HasColumnType("real");
-
-                    b.Property<string>("ItemDescription")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<string>("ItemName")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<float>("Protein")
-                        .HasColumnType("real");
-
-                    b.Property<int?>("RestaurantId")
-                        .HasColumnType("integer");
-
-                    b.Property<string>("RestaurantName")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.PrimitiveCollection<List<string>>("Type")
-                        .IsRequired()
-                        .HasColumnType("text[]");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("RestaurantId");
-
-                    b.ToTable("RestaurantMeals");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.User", b =>
-                {
-                    b.Property<string>("Id")
-                        .HasColumnType("text");
-
-                    b.Property<int>("AccessFailedCount")
-                        .HasColumnType("integer");
-
-                    b.Property<string>("ConcurrencyStamp")
-                        .IsConcurrencyToken()
-                        .HasColumnType("text");
-
-                    b.Property<string>("Email")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-
-                    b.Property<bool>("EmailConfirmed")
-                        .HasColumnType("boolean");
-
-                    b.Property<bool>("LockoutEnabled")
-                        .HasColumnType("boolean");
-
-                    b.Property<DateTimeOffset?>("LockoutEnd")
-                        .HasColumnType("timestamp with time zone");
-
-                    b.Property<string>("NormalizedEmail")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-
-                    b.Property<string>("NormalizedUserName")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-
-                    b.Property<string>("PasswordHash")
-                        .HasColumnType("text");
-
-                    b.Property<string>("PhoneNumber")
-                        .HasColumnType("text");
-
-                    b.Property<bool>("PhoneNumberConfirmed")
-                        .HasColumnType("boolean");
-
-                    b.Property<string>("ProfilePictureUrl")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<string>("SecurityStamp")
-                        .HasColumnType("text");
-
-                    b.Property<bool>("TwoFactorEnabled")
-                        .HasColumnType("boolean");
-
-                    b.Property<string>("UserName")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("NormalizedEmail")
-                        .HasDatabaseName("EmailIndex");
-
-                    b.HasIndex("NormalizedUserName")
-                        .IsUnique()
-                        .HasDatabaseName("UserNameIndex");
-
-                    b.ToTable("AspNetUsers", (string)null);
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.UserMealPreference", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<string>("Tag")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<int?>("ThresholdValue")
-                        .HasColumnType("integer");
-
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("UserId", "Tag")
-                        .IsUnique();
-
-                    b.ToTable("UserMealPreferences");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.WeeklyMealPlan", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<DateTime>("GeneratedAt")
-                        .HasColumnType("timestamp with time zone");
-
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("WeeklyMealPlans");
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim<string>", b =>
-                {
-                    b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null)
-                        .WithMany()
-                        .HasForeignKey("RoleId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim<string>", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", null)
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin<string>", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", null)
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole<string>", b =>
-                {
-                    b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null)
-                        .WithMany()
-                        .HasForeignKey("RoleId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.HasOne("NutriMatch.Models.User", null)
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken<string>", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", null)
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.FavoriteRecipe", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Recipe", "Recipe")
-                        .WithMany("FavoritedBy")
-                        .HasForeignKey("RecipeId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.HasOne("NutriMatch.Models.User", "User")
-                        .WithMany("FavoriteRecipes")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("Recipe");
-
-                    b.Navigation("User");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.MealSlot", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Recipe", "Recipe")
-                        .WithMany()
-                        .HasForeignKey("RecipeId");
-
-                    b.HasOne("NutriMatch.Models.RestaurantMeal", "RestaurantMeal")
-                        .WithMany()
-                        .HasForeignKey("RestaurantMealId");
-
-                    b.HasOne("NutriMatch.Models.WeeklyMealPlan", null)
-                        .WithMany("MealSlots")
-                        .HasForeignKey("WeeklyMealPlanId");
-
-                    b.Navigation("Recipe");
-
-                    b.Navigation("RestaurantMeal");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", "User")
-                        .WithMany("Recipes")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("User");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.RecipeIngredient", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Ingredient", "Ingredient")
-                        .WithMany()
-                        .HasForeignKey("IngredientId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.HasOne("NutriMatch.Models.Recipe", null)
-                        .WithMany("RecipeIngredients")
-                        .HasForeignKey("RecipeId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("Ingredient");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.RecipeRating", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Recipe", "Recipe")
-                        .WithMany("Ratings")
-                        .HasForeignKey("RecipeId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.HasOne("NutriMatch.Models.User", "User")
-                        .WithMany("Ratings")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("Recipe");
-
-                    b.Navigation("User");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.RestaurantFollowing", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Restaurant", "Restaurant")
-                        .WithMany("Followers")
-                        .HasForeignKey("RestaurantId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.HasOne("NutriMatch.Models.User", "User")
-                        .WithMany("FollowedRestaurants")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("Restaurant");
-
-                    b.Navigation("User");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.RestaurantMeal", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Restaurant", "Restaurant")
-                        .WithMany("RestaurantMeals")
-                        .HasForeignKey("RestaurantId");
-
-                    b.Navigation("Restaurant");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.UserMealPreference", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", "User")
-                        .WithMany("MealTagPreferences")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("User");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.Navigation("FavoritedBy");
-
-                    b.Navigation("Ratings");
-
-                    b.Navigation("RecipeIngredients");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.Restaurant", b =>
-                {
-                    b.Navigation("Followers");
-
-                    b.Navigation("RestaurantMeals");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.User", b =>
-                {
-                    b.Navigation("FavoriteRecipes");
-
-                    b.Navigation("FollowedRestaurants");
-
-                    b.Navigation("MealTagPreferences");
-
-                    b.Navigation("Ratings");
-
-                    b.Navigation("Recipes");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.WeeklyMealPlan", b =>
-                {
-                    b.Navigation("MealSlots");
-                });
-#pragma warning restore 612, 618
-        }
-    }
-}
Index: triMatch/Migrations/20251004145314_AddRegeneratedRecipeIndicator.cs
===================================================================
--- NutriMatch/Migrations/20251004145314_AddRegeneratedRecipeIndicator.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,28 +1,0 @@
-﻿using Microsoft.EntityFrameworkCore.Migrations;
-
-#nullable disable
-
-namespace NutriMatch.Migrations
-{
-    /// <inheritdoc />
-    public partial class AddRegeneratedRecipeIndicator : Migration
-    {
-        /// <inheritdoc />
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.AddColumn<bool>(
-                name: "IsRegenerated",
-                table: "MealSlots",
-                type: "boolean",
-                nullable: true);
-        }
-
-        /// <inheritdoc />
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropColumn(
-                name: "IsRegenerated",
-                table: "MealSlots");
-        }
-    }
-}
Index: triMatch/Migrations/20251004145939_AddRegeneratedRecipeIndicator2.Designer.cs
===================================================================
--- NutriMatch/Migrations/20251004145939_AddRegeneratedRecipeIndicator2.Designer.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,859 +1,0 @@
-﻿// <auto-generated />
-using System;
-using System.Collections.Generic;
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Migrations;
-using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
-using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
-using NutriMatch.Data;
-
-#nullable disable
-
-namespace NutriMatch.Migrations
-{
-    [DbContext(typeof(AppDbContext))]
-    [Migration("20251004145939_AddRegeneratedRecipeIndicator2")]
-    partial class AddRegeneratedRecipeIndicator2
-    {
-        /// <inheritdoc />
-        protected override void BuildTargetModel(ModelBuilder modelBuilder)
-        {
-#pragma warning disable 612, 618
-            modelBuilder
-                .HasAnnotation("ProductVersion", "9.0.7")
-                .HasAnnotation("Relational:MaxIdentifierLength", 63);
-
-            NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b =>
-                {
-                    b.Property<string>("Id")
-                        .HasColumnType("text");
-
-                    b.Property<string>("ConcurrencyStamp")
-                        .IsConcurrencyToken()
-                        .HasColumnType("text");
-
-                    b.Property<string>("Name")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-
-                    b.Property<string>("NormalizedName")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("NormalizedName")
-                        .IsUnique()
-                        .HasDatabaseName("RoleNameIndex");
-
-                    b.ToTable("AspNetRoles", (string)null);
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim<string>", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<string>("ClaimType")
-                        .HasColumnType("text");
-
-                    b.Property<string>("ClaimValue")
-                        .HasColumnType("text");
-
-                    b.Property<string>("RoleId")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("RoleId");
-
-                    b.ToTable("AspNetRoleClaims", (string)null);
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim<string>", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<string>("ClaimType")
-                        .HasColumnType("text");
-
-                    b.Property<string>("ClaimValue")
-                        .HasColumnType("text");
-
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("UserId");
-
-                    b.ToTable("AspNetUserClaims", (string)null);
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin<string>", b =>
-                {
-                    b.Property<string>("LoginProvider")
-                        .HasMaxLength(128)
-                        .HasColumnType("character varying(128)");
-
-                    b.Property<string>("ProviderKey")
-                        .HasMaxLength(128)
-                        .HasColumnType("character varying(128)");
-
-                    b.Property<string>("ProviderDisplayName")
-                        .HasColumnType("text");
-
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("LoginProvider", "ProviderKey");
-
-                    b.HasIndex("UserId");
-
-                    b.ToTable("AspNetUserLogins", (string)null);
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole<string>", b =>
-                {
-                    b.Property<string>("UserId")
-                        .HasColumnType("text");
-
-                    b.Property<string>("RoleId")
-                        .HasColumnType("text");
-
-                    b.HasKey("UserId", "RoleId");
-
-                    b.HasIndex("RoleId");
-
-                    b.ToTable("AspNetUserRoles", (string)null);
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken<string>", b =>
-                {
-                    b.Property<string>("UserId")
-                        .HasColumnType("text");
-
-                    b.Property<string>("LoginProvider")
-                        .HasMaxLength(128)
-                        .HasColumnType("character varying(128)");
-
-                    b.Property<string>("Name")
-                        .HasMaxLength(128)
-                        .HasColumnType("character varying(128)");
-
-                    b.Property<string>("Value")
-                        .HasColumnType("text");
-
-                    b.HasKey("UserId", "LoginProvider", "Name");
-
-                    b.ToTable("AspNetUserTokens", (string)null);
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.FavoriteRecipe", b =>
-                {
-                    b.Property<string>("UserId")
-                        .HasColumnType("text");
-
-                    b.Property<int>("RecipeId")
-                        .HasColumnType("integer");
-
-                    b.HasKey("UserId", "RecipeId");
-
-                    b.HasIndex("RecipeId");
-
-                    b.ToTable("FavoriteRecipes");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.Ingredient", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<float>("Calories")
-                        .HasColumnType("real");
-
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real");
-
-                    b.Property<float>("Fat")
-                        .HasColumnType("real");
-
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<float>("Protein")
-                        .HasColumnType("real");
-
-                    b.Property<string>("Status")
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("Ingredients");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.MealKeyword", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<string>("Tag")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("MealKeywords");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.MealSlot", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<string>("Day")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<bool?>("IsRegenerated")
-                        .HasColumnType("boolean");
-
-                    b.Property<bool>("IsRestaurantMeal")
-                        .HasColumnType("boolean");
-
-                    b.Property<string>("MealType")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<int?>("RecipeId")
-                        .HasColumnType("integer");
-
-                    b.Property<int?>("RestaurantMealId")
-                        .HasColumnType("integer");
-
-                    b.Property<int?>("WeeklyMealPlanId")
-                        .HasColumnType("integer");
-
-                    b.Property<bool?>("isViewed")
-                        .HasColumnType("boolean");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("RecipeId");
-
-                    b.HasIndex("RestaurantMealId");
-
-                    b.HasIndex("WeeklyMealPlanId");
-
-                    b.ToTable("MealSlots");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.Notification", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<DateTime>("CreatedAt")
-                        .HasColumnType("timestamp with time zone");
-
-                    b.Property<bool>("IsRead")
-                        .HasColumnType("boolean");
-
-                    b.Property<string>("Message")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<int?>("RecipeId")
-                        .HasColumnType("integer");
-
-                    b.Property<string>("RelatedUserId")
-                        .HasColumnType("text");
-
-                    b.Property<string>("Type")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("Notifications");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<string>("AdminComment")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<float>("Calories")
-                        .HasColumnType("real");
-
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real");
-
-                    b.Property<DateTime>("CreatedAt")
-                        .HasColumnType("timestamp with time zone");
-
-                    b.Property<string>("DeclineReason")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<float>("Fat")
-                        .HasColumnType("real");
-
-                    b.Property<bool?>("HasPendingIngredients")
-                        .HasColumnType("boolean");
-
-                    b.Property<string>("ImageUrl")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.PrimitiveCollection<string[]>("Instructions")
-                        .HasColumnType("text[]");
-
-                    b.Property<float>("Protein")
-                        .HasColumnType("real");
-
-                    b.Property<string>("RecipeStatus")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<string>("Title")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.PrimitiveCollection<List<string>>("Type")
-                        .IsRequired()
-                        .HasColumnType("text[]");
-
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("UserId");
-
-                    b.ToTable("Recipes");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.RecipeIngredient", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<int>("IngredientId")
-                        .HasColumnType("integer");
-
-                    b.Property<float>("Quantity")
-                        .HasColumnType("real");
-
-                    b.Property<int>("RecipeId")
-                        .HasColumnType("integer");
-
-                    b.Property<string>("Unit")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("IngredientId");
-
-                    b.HasIndex("RecipeId");
-
-                    b.ToTable("RecipeIngredients");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.RecipeRating", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<double>("Rating")
-                        .HasColumnType("double precision");
-
-                    b.Property<int>("RecipeId")
-                        .HasColumnType("integer");
-
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("RecipeId");
-
-                    b.HasIndex("UserId", "RecipeId")
-                        .IsUnique();
-
-                    b.ToTable("RecipeRatings");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.Restaurant", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<string>("Description")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<string>("ImageUrl")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("Restaurants");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.RestaurantFollowing", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<int>("RestaurantId")
-                        .HasColumnType("integer");
-
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("RestaurantId");
-
-                    b.HasIndex("UserId", "RestaurantId")
-                        .IsUnique();
-
-                    b.ToTable("RestaurantFollowings");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.RestaurantMeal", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<float>("Calories")
-                        .HasColumnType("real");
-
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real");
-
-                    b.Property<float>("Fat")
-                        .HasColumnType("real");
-
-                    b.Property<string>("ItemDescription")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<string>("ItemName")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<float>("Protein")
-                        .HasColumnType("real");
-
-                    b.Property<int?>("RestaurantId")
-                        .HasColumnType("integer");
-
-                    b.Property<string>("RestaurantName")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.PrimitiveCollection<List<string>>("Type")
-                        .IsRequired()
-                        .HasColumnType("text[]");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("RestaurantId");
-
-                    b.ToTable("RestaurantMeals");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.User", b =>
-                {
-                    b.Property<string>("Id")
-                        .HasColumnType("text");
-
-                    b.Property<int>("AccessFailedCount")
-                        .HasColumnType("integer");
-
-                    b.Property<string>("ConcurrencyStamp")
-                        .IsConcurrencyToken()
-                        .HasColumnType("text");
-
-                    b.Property<string>("Email")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-
-                    b.Property<bool>("EmailConfirmed")
-                        .HasColumnType("boolean");
-
-                    b.Property<bool>("LockoutEnabled")
-                        .HasColumnType("boolean");
-
-                    b.Property<DateTimeOffset?>("LockoutEnd")
-                        .HasColumnType("timestamp with time zone");
-
-                    b.Property<string>("NormalizedEmail")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-
-                    b.Property<string>("NormalizedUserName")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-
-                    b.Property<string>("PasswordHash")
-                        .HasColumnType("text");
-
-                    b.Property<string>("PhoneNumber")
-                        .HasColumnType("text");
-
-                    b.Property<bool>("PhoneNumberConfirmed")
-                        .HasColumnType("boolean");
-
-                    b.Property<string>("ProfilePictureUrl")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<string>("SecurityStamp")
-                        .HasColumnType("text");
-
-                    b.Property<bool>("TwoFactorEnabled")
-                        .HasColumnType("boolean");
-
-                    b.Property<string>("UserName")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("NormalizedEmail")
-                        .HasDatabaseName("EmailIndex");
-
-                    b.HasIndex("NormalizedUserName")
-                        .IsUnique()
-                        .HasDatabaseName("UserNameIndex");
-
-                    b.ToTable("AspNetUsers", (string)null);
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.UserMealPreference", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<string>("Tag")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<int?>("ThresholdValue")
-                        .HasColumnType("integer");
-
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("UserId", "Tag")
-                        .IsUnique();
-
-                    b.ToTable("UserMealPreferences");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.WeeklyMealPlan", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<DateTime>("GeneratedAt")
-                        .HasColumnType("timestamp with time zone");
-
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("WeeklyMealPlans");
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim<string>", b =>
-                {
-                    b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null)
-                        .WithMany()
-                        .HasForeignKey("RoleId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim<string>", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", null)
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin<string>", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", null)
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole<string>", b =>
-                {
-                    b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null)
-                        .WithMany()
-                        .HasForeignKey("RoleId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.HasOne("NutriMatch.Models.User", null)
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken<string>", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", null)
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.FavoriteRecipe", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Recipe", "Recipe")
-                        .WithMany("FavoritedBy")
-                        .HasForeignKey("RecipeId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.HasOne("NutriMatch.Models.User", "User")
-                        .WithMany("FavoriteRecipes")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("Recipe");
-
-                    b.Navigation("User");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.MealSlot", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Recipe", "Recipe")
-                        .WithMany()
-                        .HasForeignKey("RecipeId");
-
-                    b.HasOne("NutriMatch.Models.RestaurantMeal", "RestaurantMeal")
-                        .WithMany()
-                        .HasForeignKey("RestaurantMealId");
-
-                    b.HasOne("NutriMatch.Models.WeeklyMealPlan", null)
-                        .WithMany("MealSlots")
-                        .HasForeignKey("WeeklyMealPlanId");
-
-                    b.Navigation("Recipe");
-
-                    b.Navigation("RestaurantMeal");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", "User")
-                        .WithMany("Recipes")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("User");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.RecipeIngredient", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Ingredient", "Ingredient")
-                        .WithMany()
-                        .HasForeignKey("IngredientId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.HasOne("NutriMatch.Models.Recipe", null)
-                        .WithMany("RecipeIngredients")
-                        .HasForeignKey("RecipeId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("Ingredient");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.RecipeRating", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Recipe", "Recipe")
-                        .WithMany("Ratings")
-                        .HasForeignKey("RecipeId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.HasOne("NutriMatch.Models.User", "User")
-                        .WithMany("Ratings")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("Recipe");
-
-                    b.Navigation("User");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.RestaurantFollowing", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Restaurant", "Restaurant")
-                        .WithMany("Followers")
-                        .HasForeignKey("RestaurantId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.HasOne("NutriMatch.Models.User", "User")
-                        .WithMany("FollowedRestaurants")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("Restaurant");
-
-                    b.Navigation("User");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.RestaurantMeal", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Restaurant", "Restaurant")
-                        .WithMany("RestaurantMeals")
-                        .HasForeignKey("RestaurantId");
-
-                    b.Navigation("Restaurant");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.UserMealPreference", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", "User")
-                        .WithMany("MealTagPreferences")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("User");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.Navigation("FavoritedBy");
-
-                    b.Navigation("Ratings");
-
-                    b.Navigation("RecipeIngredients");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.Restaurant", b =>
-                {
-                    b.Navigation("Followers");
-
-                    b.Navigation("RestaurantMeals");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.User", b =>
-                {
-                    b.Navigation("FavoriteRecipes");
-
-                    b.Navigation("FollowedRestaurants");
-
-                    b.Navigation("MealTagPreferences");
-
-                    b.Navigation("Ratings");
-
-                    b.Navigation("Recipes");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.WeeklyMealPlan", b =>
-                {
-                    b.Navigation("MealSlots");
-                });
-#pragma warning restore 612, 618
-        }
-    }
-}
Index: triMatch/Migrations/20251004145939_AddRegeneratedRecipeIndicator2.cs
===================================================================
--- NutriMatch/Migrations/20251004145939_AddRegeneratedRecipeIndicator2.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,28 +1,0 @@
-﻿using Microsoft.EntityFrameworkCore.Migrations;
-
-#nullable disable
-
-namespace NutriMatch.Migrations
-{
-    /// <inheritdoc />
-    public partial class AddRegeneratedRecipeIndicator2 : Migration
-    {
-        /// <inheritdoc />
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.AddColumn<bool>(
-                name: "isViewed",
-                table: "MealSlots",
-                type: "boolean",
-                nullable: true);
-        }
-
-        /// <inheritdoc />
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropColumn(
-                name: "isViewed",
-                table: "MealSlots");
-        }
-    }
-}
Index: triMatch/Migrations/20251006204552_AddNotificationPreferences.Designer.cs
===================================================================
--- NutriMatch/Migrations/20251006204552_AddNotificationPreferences.Designer.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,883 +1,0 @@
-﻿// <auto-generated />
-using System;
-using System.Collections.Generic;
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Migrations;
-using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
-using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
-using NutriMatch.Data;
-
-#nullable disable
-
-namespace NutriMatch.Migrations
-{
-    [DbContext(typeof(AppDbContext))]
-    [Migration("20251006204552_AddNotificationPreferences")]
-    partial class AddNotificationPreferences
-    {
-        /// <inheritdoc />
-        protected override void BuildTargetModel(ModelBuilder modelBuilder)
-        {
-#pragma warning disable 612, 618
-            modelBuilder
-                .HasAnnotation("ProductVersion", "9.0.7")
-                .HasAnnotation("Relational:MaxIdentifierLength", 63);
-
-            NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b =>
-                {
-                    b.Property<string>("Id")
-                        .HasColumnType("text");
-
-                    b.Property<string>("ConcurrencyStamp")
-                        .IsConcurrencyToken()
-                        .HasColumnType("text");
-
-                    b.Property<string>("Name")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-
-                    b.Property<string>("NormalizedName")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("NormalizedName")
-                        .IsUnique()
-                        .HasDatabaseName("RoleNameIndex");
-
-                    b.ToTable("AspNetRoles", (string)null);
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim<string>", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<string>("ClaimType")
-                        .HasColumnType("text");
-
-                    b.Property<string>("ClaimValue")
-                        .HasColumnType("text");
-
-                    b.Property<string>("RoleId")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("RoleId");
-
-                    b.ToTable("AspNetRoleClaims", (string)null);
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim<string>", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<string>("ClaimType")
-                        .HasColumnType("text");
-
-                    b.Property<string>("ClaimValue")
-                        .HasColumnType("text");
-
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("UserId");
-
-                    b.ToTable("AspNetUserClaims", (string)null);
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin<string>", b =>
-                {
-                    b.Property<string>("LoginProvider")
-                        .HasMaxLength(128)
-                        .HasColumnType("character varying(128)");
-
-                    b.Property<string>("ProviderKey")
-                        .HasMaxLength(128)
-                        .HasColumnType("character varying(128)");
-
-                    b.Property<string>("ProviderDisplayName")
-                        .HasColumnType("text");
-
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("LoginProvider", "ProviderKey");
-
-                    b.HasIndex("UserId");
-
-                    b.ToTable("AspNetUserLogins", (string)null);
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole<string>", b =>
-                {
-                    b.Property<string>("UserId")
-                        .HasColumnType("text");
-
-                    b.Property<string>("RoleId")
-                        .HasColumnType("text");
-
-                    b.HasKey("UserId", "RoleId");
-
-                    b.HasIndex("RoleId");
-
-                    b.ToTable("AspNetUserRoles", (string)null);
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken<string>", b =>
-                {
-                    b.Property<string>("UserId")
-                        .HasColumnType("text");
-
-                    b.Property<string>("LoginProvider")
-                        .HasMaxLength(128)
-                        .HasColumnType("character varying(128)");
-
-                    b.Property<string>("Name")
-                        .HasMaxLength(128)
-                        .HasColumnType("character varying(128)");
-
-                    b.Property<string>("Value")
-                        .HasColumnType("text");
-
-                    b.HasKey("UserId", "LoginProvider", "Name");
-
-                    b.ToTable("AspNetUserTokens", (string)null);
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.FavoriteRecipe", b =>
-                {
-                    b.Property<string>("UserId")
-                        .HasColumnType("text");
-
-                    b.Property<int>("RecipeId")
-                        .HasColumnType("integer");
-
-                    b.HasKey("UserId", "RecipeId");
-
-                    b.HasIndex("RecipeId");
-
-                    b.ToTable("FavoriteRecipes");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.Ingredient", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<float>("Calories")
-                        .HasColumnType("real");
-
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real");
-
-                    b.Property<float>("Fat")
-                        .HasColumnType("real");
-
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<float>("Protein")
-                        .HasColumnType("real");
-
-                    b.Property<string>("Status")
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("Ingredients");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.MealKeyword", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<string>("Tag")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("MealKeywords");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.MealSlot", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<string>("Day")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<bool?>("IsRegenerated")
-                        .HasColumnType("boolean");
-
-                    b.Property<bool>("IsRestaurantMeal")
-                        .HasColumnType("boolean");
-
-                    b.Property<string>("MealType")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<int?>("RecipeId")
-                        .HasColumnType("integer");
-
-                    b.Property<int?>("RestaurantMealId")
-                        .HasColumnType("integer");
-
-                    b.Property<int?>("WeeklyMealPlanId")
-                        .HasColumnType("integer");
-
-                    b.Property<bool?>("isViewed")
-                        .HasColumnType("boolean");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("RecipeId");
-
-                    b.HasIndex("RestaurantMealId");
-
-                    b.HasIndex("WeeklyMealPlanId");
-
-                    b.ToTable("MealSlots");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.Notification", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<DateTime>("CreatedAt")
-                        .HasColumnType("timestamp with time zone");
-
-                    b.Property<bool>("IsRead")
-                        .HasColumnType("boolean");
-
-                    b.Property<string>("Message")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<int?>("RecipeId")
-                        .HasColumnType("integer");
-
-                    b.Property<string>("RelatedUserId")
-                        .HasColumnType("text");
-
-                    b.Property<string>("Type")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("Notifications");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<string>("AdminComment")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<float>("Calories")
-                        .HasColumnType("real");
-
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real");
-
-                    b.Property<DateTime>("CreatedAt")
-                        .HasColumnType("timestamp with time zone");
-
-                    b.Property<string>("DeclineReason")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<float>("Fat")
-                        .HasColumnType("real");
-
-                    b.Property<bool?>("HasPendingIngredients")
-                        .HasColumnType("boolean");
-
-                    b.Property<string>("ImageUrl")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.PrimitiveCollection<string[]>("Instructions")
-                        .HasColumnType("text[]");
-
-                    b.Property<float>("Protein")
-                        .HasColumnType("real");
-
-                    b.Property<string>("RecipeStatus")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<string>("Title")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.PrimitiveCollection<List<string>>("Type")
-                        .IsRequired()
-                        .HasColumnType("text[]");
-
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("UserId");
-
-                    b.ToTable("Recipes");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.RecipeIngredient", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<int>("IngredientId")
-                        .HasColumnType("integer");
-
-                    b.Property<float>("Quantity")
-                        .HasColumnType("real");
-
-                    b.Property<int>("RecipeId")
-                        .HasColumnType("integer");
-
-                    b.Property<string>("Unit")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("IngredientId");
-
-                    b.HasIndex("RecipeId");
-
-                    b.ToTable("RecipeIngredients");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.RecipeRating", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<double>("Rating")
-                        .HasColumnType("double precision");
-
-                    b.Property<int>("RecipeId")
-                        .HasColumnType("integer");
-
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("RecipeId");
-
-                    b.HasIndex("UserId", "RecipeId")
-                        .IsUnique();
-
-                    b.ToTable("RecipeRatings");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.Restaurant", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<string>("Description")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<string>("ImageUrl")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("Restaurants");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.RestaurantFollowing", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<int>("RestaurantId")
-                        .HasColumnType("integer");
-
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("RestaurantId");
-
-                    b.HasIndex("UserId", "RestaurantId")
-                        .IsUnique();
-
-                    b.ToTable("RestaurantFollowings");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.RestaurantMeal", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<float>("Calories")
-                        .HasColumnType("real");
-
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real");
-
-                    b.Property<float>("Fat")
-                        .HasColumnType("real");
-
-                    b.Property<string>("ItemDescription")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<string>("ItemName")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<float>("Protein")
-                        .HasColumnType("real");
-
-                    b.Property<int?>("RestaurantId")
-                        .HasColumnType("integer");
-
-                    b.Property<string>("RestaurantName")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.PrimitiveCollection<List<string>>("Type")
-                        .IsRequired()
-                        .HasColumnType("text[]");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("RestaurantId");
-
-                    b.ToTable("RestaurantMeals");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.User", b =>
-                {
-                    b.Property<string>("Id")
-                        .HasColumnType("text");
-
-                    b.Property<int>("AccessFailedCount")
-                        .HasColumnType("integer");
-
-                    b.Property<string>("ConcurrencyStamp")
-                        .IsConcurrencyToken()
-                        .HasColumnType("text");
-
-                    b.Property<string>("Email")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-
-                    b.Property<bool>("EmailConfirmed")
-                        .HasColumnType("boolean");
-
-                    b.Property<bool>("LockoutEnabled")
-                        .HasColumnType("boolean");
-
-                    b.Property<DateTimeOffset?>("LockoutEnd")
-                        .HasColumnType("timestamp with time zone");
-
-                    b.Property<string>("NormalizedEmail")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-
-                    b.Property<string>("NormalizedUserName")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-
-                    b.Property<bool>("NotifyMealMatchesTags")
-                        .HasColumnType("boolean");
-
-                    b.Property<bool>("NotifyMealPlanUpdated")
-                        .HasColumnType("boolean");
-
-                    b.Property<bool>("NotifyNewRestaurant")
-                        .HasColumnType("boolean");
-
-                    b.Property<bool>("NotifyRecipeAccepted")
-                        .HasColumnType("boolean");
-
-                    b.Property<bool>("NotifyRecipeDeclined")
-                        .HasColumnType("boolean");
-
-                    b.Property<bool>("NotifyRecipeMatchesTags")
-                        .HasColumnType("boolean");
-
-                    b.Property<bool>("NotifyRecipeRated")
-                        .HasColumnType("boolean");
-
-                    b.Property<bool>("NotifyRestaurantNewMeal")
-                        .HasColumnType("boolean");
-
-                    b.Property<string>("PasswordHash")
-                        .HasColumnType("text");
-
-                    b.Property<string>("PhoneNumber")
-                        .HasColumnType("text");
-
-                    b.Property<bool>("PhoneNumberConfirmed")
-                        .HasColumnType("boolean");
-
-                    b.Property<string>("ProfilePictureUrl")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<string>("SecurityStamp")
-                        .HasColumnType("text");
-
-                    b.Property<bool>("TwoFactorEnabled")
-                        .HasColumnType("boolean");
-
-                    b.Property<string>("UserName")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("NormalizedEmail")
-                        .HasDatabaseName("EmailIndex");
-
-                    b.HasIndex("NormalizedUserName")
-                        .IsUnique()
-                        .HasDatabaseName("UserNameIndex");
-
-                    b.ToTable("AspNetUsers", (string)null);
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.UserMealPreference", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<string>("Tag")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<int?>("ThresholdValue")
-                        .HasColumnType("integer");
-
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("UserId", "Tag")
-                        .IsUnique();
-
-                    b.ToTable("UserMealPreferences");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.WeeklyMealPlan", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<DateTime>("GeneratedAt")
-                        .HasColumnType("timestamp with time zone");
-
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("WeeklyMealPlans");
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim<string>", b =>
-                {
-                    b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null)
-                        .WithMany()
-                        .HasForeignKey("RoleId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim<string>", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", null)
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin<string>", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", null)
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole<string>", b =>
-                {
-                    b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null)
-                        .WithMany()
-                        .HasForeignKey("RoleId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.HasOne("NutriMatch.Models.User", null)
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken<string>", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", null)
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.FavoriteRecipe", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Recipe", "Recipe")
-                        .WithMany("FavoritedBy")
-                        .HasForeignKey("RecipeId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.HasOne("NutriMatch.Models.User", "User")
-                        .WithMany("FavoriteRecipes")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("Recipe");
-
-                    b.Navigation("User");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.MealSlot", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Recipe", "Recipe")
-                        .WithMany()
-                        .HasForeignKey("RecipeId");
-
-                    b.HasOne("NutriMatch.Models.RestaurantMeal", "RestaurantMeal")
-                        .WithMany()
-                        .HasForeignKey("RestaurantMealId");
-
-                    b.HasOne("NutriMatch.Models.WeeklyMealPlan", null)
-                        .WithMany("MealSlots")
-                        .HasForeignKey("WeeklyMealPlanId");
-
-                    b.Navigation("Recipe");
-
-                    b.Navigation("RestaurantMeal");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", "User")
-                        .WithMany("Recipes")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("User");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.RecipeIngredient", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Ingredient", "Ingredient")
-                        .WithMany()
-                        .HasForeignKey("IngredientId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.HasOne("NutriMatch.Models.Recipe", null)
-                        .WithMany("RecipeIngredients")
-                        .HasForeignKey("RecipeId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("Ingredient");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.RecipeRating", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Recipe", "Recipe")
-                        .WithMany("Ratings")
-                        .HasForeignKey("RecipeId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.HasOne("NutriMatch.Models.User", "User")
-                        .WithMany("Ratings")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("Recipe");
-
-                    b.Navigation("User");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.RestaurantFollowing", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Restaurant", "Restaurant")
-                        .WithMany("Followers")
-                        .HasForeignKey("RestaurantId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.HasOne("NutriMatch.Models.User", "User")
-                        .WithMany("FollowedRestaurants")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("Restaurant");
-
-                    b.Navigation("User");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.RestaurantMeal", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Restaurant", "Restaurant")
-                        .WithMany("RestaurantMeals")
-                        .HasForeignKey("RestaurantId");
-
-                    b.Navigation("Restaurant");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.UserMealPreference", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", "User")
-                        .WithMany("MealTagPreferences")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("User");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.Navigation("FavoritedBy");
-
-                    b.Navigation("Ratings");
-
-                    b.Navigation("RecipeIngredients");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.Restaurant", b =>
-                {
-                    b.Navigation("Followers");
-
-                    b.Navigation("RestaurantMeals");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.User", b =>
-                {
-                    b.Navigation("FavoriteRecipes");
-
-                    b.Navigation("FollowedRestaurants");
-
-                    b.Navigation("MealTagPreferences");
-
-                    b.Navigation("Ratings");
-
-                    b.Navigation("Recipes");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.WeeklyMealPlan", b =>
-                {
-                    b.Navigation("MealSlots");
-                });
-#pragma warning restore 612, 618
-        }
-    }
-}
Index: triMatch/Migrations/20251006204552_AddNotificationPreferences.cs
===================================================================
--- NutriMatch/Migrations/20251006204552_AddNotificationPreferences.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,106 +1,0 @@
-﻿using Microsoft.EntityFrameworkCore.Migrations;
-
-#nullable disable
-
-namespace NutriMatch.Migrations
-{
-    /// <inheritdoc />
-    public partial class AddNotificationPreferences : Migration
-    {
-        /// <inheritdoc />
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.AddColumn<bool>(
-                name: "NotifyMealMatchesTags",
-                table: "AspNetUsers",
-                type: "boolean",
-                nullable: false,
-                defaultValue: false);
-
-            migrationBuilder.AddColumn<bool>(
-                name: "NotifyMealPlanUpdated",
-                table: "AspNetUsers",
-                type: "boolean",
-                nullable: false,
-                defaultValue: false);
-
-            migrationBuilder.AddColumn<bool>(
-                name: "NotifyNewRestaurant",
-                table: "AspNetUsers",
-                type: "boolean",
-                nullable: false,
-                defaultValue: false);
-
-            migrationBuilder.AddColumn<bool>(
-                name: "NotifyRecipeAccepted",
-                table: "AspNetUsers",
-                type: "boolean",
-                nullable: false,
-                defaultValue: false);
-
-            migrationBuilder.AddColumn<bool>(
-                name: "NotifyRecipeDeclined",
-                table: "AspNetUsers",
-                type: "boolean",
-                nullable: false,
-                defaultValue: false);
-
-            migrationBuilder.AddColumn<bool>(
-                name: "NotifyRecipeMatchesTags",
-                table: "AspNetUsers",
-                type: "boolean",
-                nullable: false,
-                defaultValue: false);
-
-            migrationBuilder.AddColumn<bool>(
-                name: "NotifyRecipeRated",
-                table: "AspNetUsers",
-                type: "boolean",
-                nullable: false,
-                defaultValue: false);
-
-            migrationBuilder.AddColumn<bool>(
-                name: "NotifyRestaurantNewMeal",
-                table: "AspNetUsers",
-                type: "boolean",
-                nullable: false,
-                defaultValue: false);
-        }
-
-        /// <inheritdoc />
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropColumn(
-                name: "NotifyMealMatchesTags",
-                table: "AspNetUsers");
-
-            migrationBuilder.DropColumn(
-                name: "NotifyMealPlanUpdated",
-                table: "AspNetUsers");
-
-            migrationBuilder.DropColumn(
-                name: "NotifyNewRestaurant",
-                table: "AspNetUsers");
-
-            migrationBuilder.DropColumn(
-                name: "NotifyRecipeAccepted",
-                table: "AspNetUsers");
-
-            migrationBuilder.DropColumn(
-                name: "NotifyRecipeDeclined",
-                table: "AspNetUsers");
-
-            migrationBuilder.DropColumn(
-                name: "NotifyRecipeMatchesTags",
-                table: "AspNetUsers");
-
-            migrationBuilder.DropColumn(
-                name: "NotifyRecipeRated",
-                table: "AspNetUsers");
-
-            migrationBuilder.DropColumn(
-                name: "NotifyRestaurantNewMeal",
-                table: "AspNetUsers");
-        }
-    }
-}
Index: triMatch/Migrations/AppDbContextModelSnapshot.cs
===================================================================
--- NutriMatch/Migrations/AppDbContextModelSnapshot.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,880 +1,0 @@
-﻿// <auto-generated />
-using System;
-using System.Collections.Generic;
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
-using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
-using NutriMatch.Data;
-
-#nullable disable
-
-namespace NutriMatch.Migrations
-{
-    [DbContext(typeof(AppDbContext))]
-    partial class AppDbContextModelSnapshot : ModelSnapshot
-    {
-        protected override void BuildModel(ModelBuilder modelBuilder)
-        {
-#pragma warning disable 612, 618
-            modelBuilder
-                .HasAnnotation("ProductVersion", "9.0.7")
-                .HasAnnotation("Relational:MaxIdentifierLength", 63);
-
-            NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b =>
-                {
-                    b.Property<string>("Id")
-                        .HasColumnType("text");
-
-                    b.Property<string>("ConcurrencyStamp")
-                        .IsConcurrencyToken()
-                        .HasColumnType("text");
-
-                    b.Property<string>("Name")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-
-                    b.Property<string>("NormalizedName")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("NormalizedName")
-                        .IsUnique()
-                        .HasDatabaseName("RoleNameIndex");
-
-                    b.ToTable("AspNetRoles", (string)null);
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim<string>", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<string>("ClaimType")
-                        .HasColumnType("text");
-
-                    b.Property<string>("ClaimValue")
-                        .HasColumnType("text");
-
-                    b.Property<string>("RoleId")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("RoleId");
-
-                    b.ToTable("AspNetRoleClaims", (string)null);
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim<string>", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<string>("ClaimType")
-                        .HasColumnType("text");
-
-                    b.Property<string>("ClaimValue")
-                        .HasColumnType("text");
-
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("UserId");
-
-                    b.ToTable("AspNetUserClaims", (string)null);
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin<string>", b =>
-                {
-                    b.Property<string>("LoginProvider")
-                        .HasMaxLength(128)
-                        .HasColumnType("character varying(128)");
-
-                    b.Property<string>("ProviderKey")
-                        .HasMaxLength(128)
-                        .HasColumnType("character varying(128)");
-
-                    b.Property<string>("ProviderDisplayName")
-                        .HasColumnType("text");
-
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("LoginProvider", "ProviderKey");
-
-                    b.HasIndex("UserId");
-
-                    b.ToTable("AspNetUserLogins", (string)null);
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole<string>", b =>
-                {
-                    b.Property<string>("UserId")
-                        .HasColumnType("text");
-
-                    b.Property<string>("RoleId")
-                        .HasColumnType("text");
-
-                    b.HasKey("UserId", "RoleId");
-
-                    b.HasIndex("RoleId");
-
-                    b.ToTable("AspNetUserRoles", (string)null);
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken<string>", b =>
-                {
-                    b.Property<string>("UserId")
-                        .HasColumnType("text");
-
-                    b.Property<string>("LoginProvider")
-                        .HasMaxLength(128)
-                        .HasColumnType("character varying(128)");
-
-                    b.Property<string>("Name")
-                        .HasMaxLength(128)
-                        .HasColumnType("character varying(128)");
-
-                    b.Property<string>("Value")
-                        .HasColumnType("text");
-
-                    b.HasKey("UserId", "LoginProvider", "Name");
-
-                    b.ToTable("AspNetUserTokens", (string)null);
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.FavoriteRecipe", b =>
-                {
-                    b.Property<string>("UserId")
-                        .HasColumnType("text");
-
-                    b.Property<int>("RecipeId")
-                        .HasColumnType("integer");
-
-                    b.HasKey("UserId", "RecipeId");
-
-                    b.HasIndex("RecipeId");
-
-                    b.ToTable("FavoriteRecipes");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.Ingredient", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<float>("Calories")
-                        .HasColumnType("real");
-
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real");
-
-                    b.Property<float>("Fat")
-                        .HasColumnType("real");
-
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<float>("Protein")
-                        .HasColumnType("real");
-
-                    b.Property<string>("Status")
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("Ingredients");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.MealKeyword", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<string>("Tag")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("MealKeywords");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.MealSlot", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<string>("Day")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<bool?>("IsRegenerated")
-                        .HasColumnType("boolean");
-
-                    b.Property<bool>("IsRestaurantMeal")
-                        .HasColumnType("boolean");
-
-                    b.Property<string>("MealType")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<int?>("RecipeId")
-                        .HasColumnType("integer");
-
-                    b.Property<int?>("RestaurantMealId")
-                        .HasColumnType("integer");
-
-                    b.Property<int?>("WeeklyMealPlanId")
-                        .HasColumnType("integer");
-
-                    b.Property<bool?>("isViewed")
-                        .HasColumnType("boolean");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("RecipeId");
-
-                    b.HasIndex("RestaurantMealId");
-
-                    b.HasIndex("WeeklyMealPlanId");
-
-                    b.ToTable("MealSlots");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.Notification", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<DateTime>("CreatedAt")
-                        .HasColumnType("timestamp with time zone");
-
-                    b.Property<bool>("IsRead")
-                        .HasColumnType("boolean");
-
-                    b.Property<string>("Message")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<int?>("RecipeId")
-                        .HasColumnType("integer");
-
-                    b.Property<string>("RelatedUserId")
-                        .HasColumnType("text");
-
-                    b.Property<string>("Type")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("Notifications");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<string>("AdminComment")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<float>("Calories")
-                        .HasColumnType("real");
-
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real");
-
-                    b.Property<DateTime>("CreatedAt")
-                        .HasColumnType("timestamp with time zone");
-
-                    b.Property<string>("DeclineReason")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<float>("Fat")
-                        .HasColumnType("real");
-
-                    b.Property<bool?>("HasPendingIngredients")
-                        .HasColumnType("boolean");
-
-                    b.Property<string>("ImageUrl")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.PrimitiveCollection<string[]>("Instructions")
-                        .HasColumnType("text[]");
-
-                    b.Property<float>("Protein")
-                        .HasColumnType("real");
-
-                    b.Property<string>("RecipeStatus")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<string>("Title")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.PrimitiveCollection<List<string>>("Type")
-                        .IsRequired()
-                        .HasColumnType("text[]");
-
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("UserId");
-
-                    b.ToTable("Recipes");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.RecipeIngredient", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<int>("IngredientId")
-                        .HasColumnType("integer");
-
-                    b.Property<float>("Quantity")
-                        .HasColumnType("real");
-
-                    b.Property<int>("RecipeId")
-                        .HasColumnType("integer");
-
-                    b.Property<string>("Unit")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("IngredientId");
-
-                    b.HasIndex("RecipeId");
-
-                    b.ToTable("RecipeIngredients");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.RecipeRating", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<double>("Rating")
-                        .HasColumnType("double precision");
-
-                    b.Property<int>("RecipeId")
-                        .HasColumnType("integer");
-
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("RecipeId");
-
-                    b.HasIndex("UserId", "RecipeId")
-                        .IsUnique();
-
-                    b.ToTable("RecipeRatings");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.Restaurant", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<string>("Description")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<string>("ImageUrl")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("Restaurants");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.RestaurantFollowing", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<int>("RestaurantId")
-                        .HasColumnType("integer");
-
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("RestaurantId");
-
-                    b.HasIndex("UserId", "RestaurantId")
-                        .IsUnique();
-
-                    b.ToTable("RestaurantFollowings");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.RestaurantMeal", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<float>("Calories")
-                        .HasColumnType("real");
-
-                    b.Property<float>("Carbs")
-                        .HasColumnType("real");
-
-                    b.Property<float>("Fat")
-                        .HasColumnType("real");
-
-                    b.Property<string>("ItemDescription")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<string>("ItemName")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<float>("Protein")
-                        .HasColumnType("real");
-
-                    b.Property<int?>("RestaurantId")
-                        .HasColumnType("integer");
-
-                    b.Property<string>("RestaurantName")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.PrimitiveCollection<List<string>>("Type")
-                        .IsRequired()
-                        .HasColumnType("text[]");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("RestaurantId");
-
-                    b.ToTable("RestaurantMeals");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.User", b =>
-                {
-                    b.Property<string>("Id")
-                        .HasColumnType("text");
-
-                    b.Property<int>("AccessFailedCount")
-                        .HasColumnType("integer");
-
-                    b.Property<string>("ConcurrencyStamp")
-                        .IsConcurrencyToken()
-                        .HasColumnType("text");
-
-                    b.Property<string>("Email")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-
-                    b.Property<bool>("EmailConfirmed")
-                        .HasColumnType("boolean");
-
-                    b.Property<bool>("LockoutEnabled")
-                        .HasColumnType("boolean");
-
-                    b.Property<DateTimeOffset?>("LockoutEnd")
-                        .HasColumnType("timestamp with time zone");
-
-                    b.Property<string>("NormalizedEmail")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-
-                    b.Property<string>("NormalizedUserName")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-
-                    b.Property<bool>("NotifyMealMatchesTags")
-                        .HasColumnType("boolean");
-
-                    b.Property<bool>("NotifyMealPlanUpdated")
-                        .HasColumnType("boolean");
-
-                    b.Property<bool>("NotifyNewRestaurant")
-                        .HasColumnType("boolean");
-
-                    b.Property<bool>("NotifyRecipeAccepted")
-                        .HasColumnType("boolean");
-
-                    b.Property<bool>("NotifyRecipeDeclined")
-                        .HasColumnType("boolean");
-
-                    b.Property<bool>("NotifyRecipeMatchesTags")
-                        .HasColumnType("boolean");
-
-                    b.Property<bool>("NotifyRecipeRated")
-                        .HasColumnType("boolean");
-
-                    b.Property<bool>("NotifyRestaurantNewMeal")
-                        .HasColumnType("boolean");
-
-                    b.Property<string>("PasswordHash")
-                        .HasColumnType("text");
-
-                    b.Property<string>("PhoneNumber")
-                        .HasColumnType("text");
-
-                    b.Property<bool>("PhoneNumberConfirmed")
-                        .HasColumnType("boolean");
-
-                    b.Property<string>("ProfilePictureUrl")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<string>("SecurityStamp")
-                        .HasColumnType("text");
-
-                    b.Property<bool>("TwoFactorEnabled")
-                        .HasColumnType("boolean");
-
-                    b.Property<string>("UserName")
-                        .HasMaxLength(256)
-                        .HasColumnType("character varying(256)");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("NormalizedEmail")
-                        .HasDatabaseName("EmailIndex");
-
-                    b.HasIndex("NormalizedUserName")
-                        .IsUnique()
-                        .HasDatabaseName("UserNameIndex");
-
-                    b.ToTable("AspNetUsers", (string)null);
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.UserMealPreference", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<string>("Tag")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<int?>("ThresholdValue")
-                        .HasColumnType("integer");
-
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("UserId", "Tag")
-                        .IsUnique();
-
-                    b.ToTable("UserMealPreferences");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.WeeklyMealPlan", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer");
-
-                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                    b.Property<DateTime>("GeneratedAt")
-                        .HasColumnType("timestamp with time zone");
-
-                    b.Property<string>("UserId")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("WeeklyMealPlans");
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim<string>", b =>
-                {
-                    b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null)
-                        .WithMany()
-                        .HasForeignKey("RoleId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim<string>", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", null)
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin<string>", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", null)
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole<string>", b =>
-                {
-                    b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null)
-                        .WithMany()
-                        .HasForeignKey("RoleId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.HasOne("NutriMatch.Models.User", null)
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-
-            modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken<string>", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", null)
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.FavoriteRecipe", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Recipe", "Recipe")
-                        .WithMany("FavoritedBy")
-                        .HasForeignKey("RecipeId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.HasOne("NutriMatch.Models.User", "User")
-                        .WithMany("FavoriteRecipes")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("Recipe");
-
-                    b.Navigation("User");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.MealSlot", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Recipe", "Recipe")
-                        .WithMany()
-                        .HasForeignKey("RecipeId");
-
-                    b.HasOne("NutriMatch.Models.RestaurantMeal", "RestaurantMeal")
-                        .WithMany()
-                        .HasForeignKey("RestaurantMealId");
-
-                    b.HasOne("NutriMatch.Models.WeeklyMealPlan", null)
-                        .WithMany("MealSlots")
-                        .HasForeignKey("WeeklyMealPlanId");
-
-                    b.Navigation("Recipe");
-
-                    b.Navigation("RestaurantMeal");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", "User")
-                        .WithMany("Recipes")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("User");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.RecipeIngredient", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Ingredient", "Ingredient")
-                        .WithMany()
-                        .HasForeignKey("IngredientId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.HasOne("NutriMatch.Models.Recipe", null)
-                        .WithMany("RecipeIngredients")
-                        .HasForeignKey("RecipeId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("Ingredient");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.RecipeRating", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Recipe", "Recipe")
-                        .WithMany("Ratings")
-                        .HasForeignKey("RecipeId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.HasOne("NutriMatch.Models.User", "User")
-                        .WithMany("Ratings")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("Recipe");
-
-                    b.Navigation("User");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.RestaurantFollowing", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Restaurant", "Restaurant")
-                        .WithMany("Followers")
-                        .HasForeignKey("RestaurantId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.HasOne("NutriMatch.Models.User", "User")
-                        .WithMany("FollowedRestaurants")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("Restaurant");
-
-                    b.Navigation("User");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.RestaurantMeal", b =>
-                {
-                    b.HasOne("NutriMatch.Models.Restaurant", "Restaurant")
-                        .WithMany("RestaurantMeals")
-                        .HasForeignKey("RestaurantId");
-
-                    b.Navigation("Restaurant");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.UserMealPreference", b =>
-                {
-                    b.HasOne("NutriMatch.Models.User", "User")
-                        .WithMany("MealTagPreferences")
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("User");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.Recipe", b =>
-                {
-                    b.Navigation("FavoritedBy");
-
-                    b.Navigation("Ratings");
-
-                    b.Navigation("RecipeIngredients");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.Restaurant", b =>
-                {
-                    b.Navigation("Followers");
-
-                    b.Navigation("RestaurantMeals");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.User", b =>
-                {
-                    b.Navigation("FavoriteRecipes");
-
-                    b.Navigation("FollowedRestaurants");
-
-                    b.Navigation("MealTagPreferences");
-
-                    b.Navigation("Ratings");
-
-                    b.Navigation("Recipes");
-                });
-
-            modelBuilder.Entity("NutriMatch.Models.WeeklyMealPlan", b =>
-                {
-                    b.Navigation("MealSlots");
-                });
-#pragma warning restore 612, 618
-        }
-    }
-}
Index: triMatch/Models/DailyMacros.cs
===================================================================
--- NutriMatch/Models/DailyMacros.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,11 +1,0 @@
-
-namespace NutriMatch.Models
-{
-        public class DailyMacros
-        {
-            public float Calories { get; set; }
-            public float Protein { get; set; }
-            public float Carbs { get; set; }
-            public float Fat { get; set; }
-        }
-}
Index: NutriMatch/Models/ErrorViewModel.cs
===================================================================
--- NutriMatch/Models/ErrorViewModel.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ NutriMatch/Models/ErrorViewModel.cs	(revision 5d48bf93fdd26aa14b8ae7ac68b61e5d60e3e2a8)
@@ -1,9 +1,8 @@
-namespace NutriMatch.Models
+namespace NutriMatch.Models;
+
+public class ErrorViewModel
 {
-    public class ErrorViewModel
-    {
-        public string? RequestId { get; set; }
+    public string? RequestId { get; set; }
 
-        public bool ShowRequestId => !string.IsNullOrEmpty(RequestId);
-    }
+    public bool ShowRequestId => !string.IsNullOrEmpty(RequestId);
 }
Index: triMatch/Models/FavoriteRecipe.cs
===================================================================
--- NutriMatch/Models/FavoriteRecipe.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,10 +1,0 @@
-namespace NutriMatch.Models
-{
-    public class FavoriteRecipe
-    {
-        public string UserId { get; set; }
-        public User User { get; set; }
-         public int RecipeId { get; set; }
-        public Recipe Recipe { get; set; }
-    }
-}
Index: triMatch/Models/HomeViewModel.cs
===================================================================
--- NutriMatch/Models/HomeViewModel.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,10 +1,0 @@
-using NutriMatch.Models;
-
-namespace NutriMatch.Models
-{
-    public class HomeViewModel
-    {
-        public List<Recipe> Recipes { get; set; }
-        public List<Restaurant> Restaurants { get; set; }
-    }
-}
Index: triMatch/Models/Ingredient.cs
===================================================================
--- NutriMatch/Models/Ingredient.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,24 +1,0 @@
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.ComponentModel.DataAnnotations;
-using System.ComponentModel.DataAnnotations.Schema;
-using System.Linq;
-using System.Threading.Tasks;
-
-namespace NutriMatch.Models
-{
-    public class Ingredient
-    {
-        [Key]
-        public int Id { get; set; }
-        public String Name { get; set; }
-        public float Calories { get; set; }
-        public float Protein { get; set; }
-        public float Carbs { get; set; }
-        public float Fat { get; set; }
-
-        public String? Status { get; set; }
-
-    }
-}
Index: triMatch/Models/MealKeyword.cs
===================================================================
--- NutriMatch/Models/MealKeyword.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,9 +1,0 @@
-namespace NutriMatch.Models
-{
-    public class MealKeyword
-    {
-        public int Id { get; set; }
-        public string Name { get; set; } = string.Empty;
-        public string Tag { get; set; } = string.Empty;
-    }
-}
Index: triMatch/Models/MealPlanRequest.cs
===================================================================
--- NutriMatch/Models/MealPlanRequest.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,30 +1,0 @@
-using System.ComponentModel.DataAnnotations;
-
-namespace NutriMatch.Models
-{
-public class MealPlanRequest
-    {
-        [Required]
-        [Range(1200, 5000, ErrorMessage = "Daily calories must be between 1200 and 5000")]
-        public float DailyCalories { get; set; }
-
-        [Required]
-        [Range(50, 300, ErrorMessage = "Daily protein must be between 50g and 300g")]
-        public float DailyProtein { get; set; }
-
-        [Required]
-        [Range(100, 600, ErrorMessage = "Daily carbs must be between 100g and 600g")]
-        public float DailyCarbs { get; set; }
-
-        [Required]
-        [Range(30, 200, ErrorMessage = "Daily fat must be between 30g and 200g")]
-        public float DailyFat { get; set; }
-
-        [Required]
-        [Range(0, 21, ErrorMessage = "Restaurant meals per week must be between 0 and 21")]
-        public int RestaurantMealsPerWeek { get; set; }
-
-        public List<string> PreferredMealTypes { get; set; } = new List<string>();
-        public List<string> DietaryRestrictions { get; set; } = new List<string>();
-    }
-}
Index: triMatch/Models/MealPlanResult.cs
===================================================================
--- NutriMatch/Models/MealPlanResult.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,13 +1,0 @@
-
-using NutriMatch.Models;
-
-namespace NutriMatch.Models
-{
-    public class MealPlanResult
-    {
-        public WeeklyMealPlan WeeklyMealPlan { get; set; }
-        public Dictionary<string, DailyMacros> DailyMacroTotals { get; set; } = new Dictionary<string, DailyMacros>();
-        public bool Success { get; set; }
-        public string ErrorMessage { get; set; }
-    }
-}
Index: triMatch/Models/MealSlot.cs
===================================================================
--- NutriMatch/Models/MealSlot.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,19 +1,0 @@
-using System.ComponentModel.DataAnnotations;
-
-namespace NutriMatch.Models
-{
-    public class MealSlot
-    {
-        [Key]
-        public int Id { get; set; }
-        public string Day { get; set; }
-        public string MealType { get; set; }
-        public Recipe? Recipe { get; set; }
-        public RestaurantMeal? RestaurantMeal { get; set; }
-        public bool IsRestaurantMeal { get; set; }
-
-        public bool? IsRegenerated { get; set; } = false;
-        
-        public bool? isViewed { get; set; } = false;
-    }
-}
Index: triMatch/Models/Notification.cs
===================================================================
--- NutriMatch/Models/Notification.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,14 +1,0 @@
-namespace NutriMatch.Models
-{
-    public class Notification
-    {
-        public int Id { get; set; }
-        public string UserId { get; set; }
-        public string Type { get; set; }
-        public string Message { get; set; }
-        public int? RecipeId { get; set; }
-        public string? RelatedUserId { get; set; }
-        public bool IsRead { get; set; }
-        public DateTime CreatedAt { get; set; }
-    }
-}
Index: triMatch/Models/Recipe.cs
===================================================================
--- NutriMatch/Models/Recipe.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,52 +1,0 @@
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.DataAnnotations;
-using System.ComponentModel.DataAnnotations.Schema;
-using System.Linq;
-using System.Text.Json.Serialization;
-using System.Threading.Tasks;
-using Microsoft.AspNetCore.Mvc.ModelBinding.Validation;
-
-namespace NutriMatch.Models
-{
-    public class Recipe
-    {
-        [Key]
-        public int Id { get; set; }
-        public String Title { get; set; }
-        public String[]? Instructions { get; set; }
-        [ValidateNever]
-        [NotMapped]
-        public double Rating { get; set; }
-        [ValidateNever]
-        public virtual List<RecipeIngredient> RecipeIngredients { get; set; }
-        [ValidateNever]
-        public float Calories { get; set; }
-        [ValidateNever]
-        public float Protein { get; set; }
-        [ValidateNever]
-        public float Carbs { get; set; }
-        [ValidateNever]
-        public float Fat { get; set; }
-        [ValidateNever]
-        public String ImageUrl { get; set; }
-        public DateTime CreatedAt { get; set; } = DateTime.Now.ToUniversalTime();
-        public String RecipeStatus { get; set; } = "Pending";
-        public String AdminComment { get; set; } = String.Empty;
-        public String DeclineReason { get; set; } = String.Empty;
-
-        public bool? HasPendingIngredients { get; set; }
-
-        [ValidateNever]
-        public String UserId { get; set; }
-        [ValidateNever]
-        [JsonIgnore]
-        public virtual User User { get; set; }
-        [ValidateNever]
-        public ICollection<FavoriteRecipe> FavoritedBy { get; set; }
-        [ValidateNever]
-        public ICollection<RecipeRating> Ratings { get; set; }
-        [ValidateNever]
-        public List<String> Type { get; set; }
-    }
-}
Index: triMatch/Models/RecipeIngredients.cs
===================================================================
--- NutriMatch/Models/RecipeIngredients.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,26 +1,0 @@
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.ComponentModel.DataAnnotations;
-using System.ComponentModel.DataAnnotations.Schema;
-using System.Linq;
-using System.Threading.Tasks;
-
-namespace NutriMatch.Models
-{
-    public class RecipeIngredient
-    {
-        [Key]
-        public int Id { get; set; }
-
-        public int RecipeId { get; set; }
-        public int IngredientId { get; set; }
-
-        public virtual Ingredient Ingredient {get;set;}
-
-        public String Unit { get; set; }
-
-        public float Quantity { get; set; }
-
-    }
-}
Index: triMatch/Models/RecipeRating.cs
===================================================================
--- NutriMatch/Models/RecipeRating.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,19 +1,0 @@
-using System.ComponentModel.DataAnnotations;
-
-namespace NutriMatch.Models
-{
-    public class RecipeRating
-    {
-        public int Id { get; set; }
-
-        public string UserId { get; set; }
-        public User User { get; set; }
-
-        public int RecipeId { get; set; }
-        public Recipe Recipe { get; set; }
-
-        [Range(1.0, 5.0)]
-        public double Rating { get; set; }
-    }
-
-}
Index: triMatch/Models/Restaurant.cs
===================================================================
--- NutriMatch/Models/Restaurant.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,20 +1,0 @@
-using System.ComponentModel.DataAnnotations;
-
-namespace NutriMatch.Models
-{
-    public class Restaurant
-    {
-        [Key]
-        public int Id { get; set; }
-
-        public String Name { get; set; }
-
-        public String ImageUrl { get; set; }
-
-        public String Description {get; set; }
-
-        virtual public List<RestaurantMeal> RestaurantMeals { get; set; }
-
-        public virtual ICollection<RestaurantFollowing> Followers { get; set; }
-    }
-}
Index: triMatch/Models/RestaurantFollowing.cs
===================================================================
--- NutriMatch/Models/RestaurantFollowing.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,12 +1,0 @@
-
-namespace NutriMatch.Models
-{
-    public class RestaurantFollowing
-    {
-        public int Id { get; set; }
-        public string UserId { get; set; }
-        public virtual User User { get; set; }
-        public int RestaurantId { get; set; }
-        public virtual Restaurant Restaurant { get; set; }
-    }
-}
Index: triMatch/Models/RestaurantMeal.cs
===================================================================
--- NutriMatch/Models/RestaurantMeal.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,31 +1,0 @@
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.DataAnnotations;
-using System.Linq;
-using System.Threading.Tasks;
-
-namespace NutriMatch.Models
-{
-    public class RestaurantMeal
-    {
-        [Key]
-        public int Id { get; set; }
-
-        virtual public int? RestaurantId { get; set; }
-        virtual public Restaurant Restaurant { get; set; } = null!;
-        public String RestaurantName { get; set; }
-
-        public String ItemName { get; set; }
-
-        public String ItemDescription { get; set; }
-
-        public List<String> Type { get; set; } = new List<String>(){""};
-        
-        public float Calories { get; set; }
-        public float Protein { get; set; }
-        public float Carbs { get; set; }
-        public float Fat { get; set; }
-
-
-    }
-}
Index: triMatch/Models/SelectedIngredient.cs
===================================================================
--- NutriMatch/Models/SelectedIngredient.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,19 +1,0 @@
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.ComponentModel.DataAnnotations;
-using System.ComponentModel.DataAnnotations.Schema;
-using System.Linq;
-using System.Threading.Tasks;
-
-namespace NutriMatch.Models
-{
-    public class SelectedIngredient
-    {
-        public int Id { get; set; }
-        public String Name { get; set; }
-        
-        public String Unit {get;set;}
-        public float Quantity {get;set;}
-    }
-}
Index: triMatch/Models/User.cs
===================================================================
--- NutriMatch/Models/User.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,28 +1,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Threading.Tasks;
-using Microsoft.AspNetCore.Identity;
-
-namespace NutriMatch.Models
-{
-    public class User : IdentityUser
-    {
-        public virtual ICollection<Recipe> Recipes { get; set; }
-
-        public String ProfilePictureUrl { get; set; }
-        public ICollection<FavoriteRecipe> FavoriteRecipes { get; set; }
-        public ICollection<RecipeRating> Ratings { get; set; }
-        public ICollection<UserMealPreference> MealTagPreferences { get; set; }
-        public ICollection<RestaurantFollowing> FollowedRestaurants { get; set; }
-
-        public bool NotifyRecipeRated { get; set; } = true;
-        public bool NotifyRecipeAccepted { get; set; } = true;
-        public bool NotifyRecipeDeclined { get; set; } = true;
-        public bool NotifyRestaurantNewMeal { get; set; } = true;
-        public bool NotifyMealMatchesTags { get; set; } = true;
-        public bool NotifyRecipeMatchesTags { get; set; } = true;
-        public bool NotifyNewRestaurant { get; set; } = true;
-        public bool NotifyMealPlanUpdated { get; set; } = true;
-    }
-}
Index: triMatch/Models/UserMealPreference.cs
===================================================================
--- NutriMatch/Models/UserMealPreference.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,12 +1,0 @@
-
-namespace NutriMatch.Models
-{
-    public class UserMealPreference
-    {
-        public int Id { get; set; }
-        public string UserId { get; set; }
-        public virtual User User { get; set; }
-        public string Tag { get; set; }
-        public int? ThresholdValue { get; set; }
-    }
-}
Index: triMatch/Models/WeeklyMealPlan.cs
===================================================================
--- NutriMatch/Models/WeeklyMealPlan.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,13 +1,0 @@
-using System.ComponentModel.DataAnnotations;
-
-namespace NutriMatch.Models
-{
-    public class WeeklyMealPlan
-    {
-        [Key]
-        public int Id { get; set; }
-        public string UserId { get; set; }
-        public List<MealSlot> MealSlots { get; set; } = new List<MealSlot>();
-        public DateTime GeneratedAt { get; set; } = DateTime.Now.ToUniversalTime();
-    }
-}
Index: NutriMatch/NutriMatch.csproj
===================================================================
--- NutriMatch/NutriMatch.csproj	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ NutriMatch/NutriMatch.csproj	(revision 5d48bf93fdd26aa14b8ae7ac68b61e5d60e3e2a8)
@@ -7,22 +7,3 @@
   </PropertyGroup>
 
-  <ItemGroup>
-    <PackageReference Include="Microsoft.AspNet.Identity.EntityFramework" Version="2.2.4" />
-    <PackageReference Include="Microsoft.AspNetCore.Authentication.Facebook" Version="9.0.9" />
-    <PackageReference Include="Microsoft.AspNetCore.Authentication.Google" Version="9.0.9" />
-    <PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="9.0.7" />
-    <PackageReference Include="Microsoft.AspNetCore.Identity.UI" Version="9.0.7" />
-    <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="9.0.5">
-      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
-      <PrivateAssets>all</PrivateAssets>
-    </PackageReference>
-    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="9.0.5" />
-    <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="9.0.5">
-      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
-      <PrivateAssets>all</PrivateAssets>
-    </PackageReference>
-    <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="9.0.0" />
-    <PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="9.0.4" />
-  </ItemGroup>
-
 </Project>
Index: triMatch/NutriMatch.sln
===================================================================
--- NutriMatch/NutriMatch.sln	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,24 +1,0 @@
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Version 17
-VisualStudioVersion = 17.5.2.0
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NutriMatch", "NutriMatch.csproj", "{BCDBC5D8-0466-9E63-3805-AAF56D69E850}"
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|Any CPU = Debug|Any CPU
-		Release|Any CPU = Release|Any CPU
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{BCDBC5D8-0466-9E63-3805-AAF56D69E850}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{BCDBC5D8-0466-9E63-3805-AAF56D69E850}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{BCDBC5D8-0466-9E63-3805-AAF56D69E850}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{BCDBC5D8-0466-9E63-3805-AAF56D69E850}.Release|Any CPU.Build.0 = Release|Any CPU
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-	GlobalSection(ExtensibilityGlobals) = postSolution
-		SolutionGuid = {48DCBB8C-AF2C-48AD-B575-1B304D424C79}
-	EndGlobalSection
-EndGlobal
Index: NutriMatch/Program.cs
===================================================================
--- NutriMatch/Program.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ NutriMatch/Program.cs	(revision 5d48bf93fdd26aa14b8ae7ac68b61e5d60e3e2a8)
@@ -1,58 +1,5 @@
-using Microsoft.EntityFrameworkCore;
-using NutriMatch.Data;
-using NutriMatch.Models;
-using Microsoft.AspNetCore.Identity;
-using NutriMatch.Services;
-
-
 var builder = WebApplication.CreateBuilder(args);
-
-
 builder.Services.AddControllersWithViews();
-builder.Services.AddRazorPages();
-builder.Services.AddScoped<IMealPlanService, MealPlanService>();
-builder.Services.AddScoped<IRestaurantService, RestaurantService>();
-builder.Services.AddScoped<IMealClassificationService, MealClassificationService>();
-builder.Services.AddScoped<IUserPreferenceService, UserPreferenceService>();
-builder.Services.AddScoped<INotificationService, NotificationService>();
-builder.Services.AddScoped<IRecipeService, RecipeService>();
-builder.Services.AddScoped<IRecipeTagService, RecipeTagService>();
-builder.Services.AddScoped<IRatingService, RatingService>();
-builder.Services.AddScoped<IIngredientService, IngredientService>();
-builder.Services.AddScoped<IFileUploadService, FileUploadService>();
-builder.Services.AddScoped<IRecipeApprovalService, RecipeApprovalService>();
-builder.Services.AddScoped<IMealKeywordService, MealKeywordService>();
-
-
-
-
-
-builder.Services.AddDbContext<AppDbContext>(options =>
-    options.UseNpgsql(builder.Configuration.GetConnectionString("DefaultConnection")));
-
-builder.Services.AddAuthentication()
-    .AddGoogle(options =>
-    {
-        options.ClientId = builder.Configuration["Authentication:Google:ClientId"];
-        options.ClientSecret = builder.Configuration["Authentication:Google:ClientSecret"];
-        options.SaveTokens = true;
-    })
-    .AddFacebook(options =>
-    {
-        options.AppId = builder.Configuration["Authentication:Facebook:AppId"];
-        options.AppSecret = builder.Configuration["Authentication:Facebook:AppSecret"];
-        options.SaveTokens = true;
-    });
-
-builder.Services.AddDefaultIdentity<User>(options =>
-{
-    options.SignIn.RequireConfirmedAccount = false;
-})
-.AddRoles<IdentityRole>()
-.AddEntityFrameworkStores<AppDbContext>();
-
 var app = builder.Build();
-
-
 if (!app.Environment.IsDevelopment())
 {
@@ -60,32 +7,11 @@
     app.UseHsts();
 }
-
 app.UseHttpsRedirection();
 app.UseRouting();
-app.UseAuthentication();
 app.UseAuthorization();
-
-app.MapRazorPages();
-
 app.MapStaticAssets();
-
 app.MapControllerRoute(
     name: "default",
     pattern: "{controller=Home}/{action=Index}/{id?}")
     .WithStaticAssets();
-
-
-using (var scope = app.Services.CreateScope())
-{
-    var services = scope.ServiceProvider;
-    try
-    {
-        await DbInitializer.SeedRolesAsync(services);
-    }
-    catch (Exception ex)
-    {
-        Console.WriteLine("Error during seeding: " + ex.Message);
-    }
-}
-
 app.Run();
Index: triMatch/Services/FileUploadService.cs
===================================================================
--- NutriMatch/Services/FileUploadService.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,69 +1,0 @@
-    using System;
-using System.IO;
-using System.Threading.Tasks;
-using Microsoft.AspNetCore.Http;
-using Microsoft.Extensions.Logging;
-
-namespace NutriMatch.Services
-{
-    public class FileUploadService : IFileUploadService
-    {
-        private readonly ILogger<FileUploadService> _logger;
-
-        public FileUploadService(ILogger<FileUploadService> logger)
-        {
-            _logger = logger;
-        }
-
-        public async Task<string> UploadImageAsync(IFormFile file)
-        {
-            if (file == null || file.Length == 0)
-            {
-                return null;
-            }
-
-            var uploadsFolder = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot", "images");
-            
-            // Ensure directory exists
-            if (!Directory.Exists(uploadsFolder))
-            {
-                Directory.CreateDirectory(uploadsFolder);
-            }
-
-            var uniqueFileName = Guid.NewGuid().ToString() + Path.GetExtension(file.FileName);
-            var filePath = Path.Combine(uploadsFolder, uniqueFileName);
-
-            using (var stream = new FileStream(filePath, FileMode.Create))
-            {
-                await file.CopyToAsync(stream);
-            }
-
-            return "/images/" + uniqueFileName;
-        }
-
-        public async Task DeleteImageAsync(string imageUrl)
-        {
-            if (string.IsNullOrEmpty(imageUrl))
-            {
-                return;
-            }
-
-            var imagePath = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot", imageUrl.TrimStart('/'));
-            
-            if (File.Exists(imagePath))
-            {
-                try
-                {
-                    await Task.Run(() => File.Delete(imagePath));
-                }
-                catch (Exception ex)
-                {
-                    _logger.LogError(ex, $"Failed to delete image file: {imagePath}");
-                }
-            }
-        }
-
-
-
-    }
-}
Index: triMatch/Services/IngredientService.cs
===================================================================
--- NutriMatch/Services/IngredientService.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,59 +1,0 @@
-using System.Collections.Generic;
-using System.Linq;
-using System.Threading.Tasks;
-using Microsoft.EntityFrameworkCore;
-using NutriMatch.Data;
-using NutriMatch.Models;
-
-namespace NutriMatch.Services
-{
-    public class IngredientService : IIngredientService
-    {
-        private readonly AppDbContext _context;
-
-        public IngredientService(AppDbContext context)
-        {
-            _context = context;
-        }
-
-        public async Task<List<Ingredient>> GetIngredientSuggestionsAsync(string query)
-        {
-            return await _context.Ingredients
-                .Where(i => EF.Functions.ILike(i.Name, $"%{query}%") && i.Status == null)
-                .OrderBy(i => i.Name)
-                .Take(5)
-                .ToListAsync();
-        }
-
-        public async Task<(bool success, string message, Ingredient ingredient)> AddIngredientAsync(string name, float calories, float protein, float carbs, float fat)
-        {
-            if (string.IsNullOrWhiteSpace(name))
-            {
-                return (false, "Ingredient name is required.", null);
-            }
-
-            var existingIngredient = await _context.Ingredients
-                .FirstOrDefaultAsync(i => i.Name.ToLower() == name.ToLower());
-
-            if (existingIngredient != null)
-            {
-                return (false, "An ingredient with this name already exists.", null);
-            }
-
-            var ingredient = new Ingredient
-            {
-                Name = name.Trim(),
-                Calories = calories,
-                Protein = protein,
-                Carbs = carbs,
-                Fat = fat,
-                Status = "Pending"
-            };
-
-            _context.Ingredients.Add(ingredient);
-            await _context.SaveChangesAsync();
-
-            return (true, "Ingredient added successfully", ingredient);
-        }
-    }
-}
Index: triMatch/Services/Interfaces/IFileUploadService.cs
===================================================================
--- NutriMatch/Services/Interfaces/IFileUploadService.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,11 +1,0 @@
-using System.Threading.Tasks;
-using Microsoft.AspNetCore.Http;
-
-namespace NutriMatch.Services
-{
-    public interface IFileUploadService
-    {
-        Task<string> UploadImageAsync(IFormFile file);
-        Task DeleteImageAsync(string imageUrl);
-    }
-}
Index: triMatch/Services/Interfaces/IIngredientService.cs
===================================================================
--- NutriMatch/Services/Interfaces/IIngredientService.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,12 +1,0 @@
-using System.Collections.Generic;
-using System.Threading.Tasks;
-using NutriMatch.Models;
-
-namespace NutriMatch.Services
-{
-    public interface IIngredientService
-    {
-        Task<List<Ingredient>> GetIngredientSuggestionsAsync(string query);
-        Task<(bool success, string message, Ingredient ingredient)> AddIngredientAsync(string name, float calories, float protein, float carbs, float fat);
-    }
-}
Index: triMatch/Services/Interfaces/IMealClassificationService.cs
===================================================================
--- NutriMatch/Services/Interfaces/IMealClassificationService.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,12 +1,0 @@
-using System.Collections.Generic;
-using System.Threading.Tasks;
-using NutriMatch.Models;
-
-namespace NutriMatch.Services
-{
-    public interface IMealClassificationService
-    {
-        
-        Task<List<string>> GenerateMealTypes(RestaurantMeal meal);
-    }
-}
Index: triMatch/Services/Interfaces/IMealKeywordService.cs
===================================================================
--- NutriMatch/Services/Interfaces/IMealKeywordService.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,12 +1,0 @@
-using NutriMatch.Models;
-
-namespace NutriMatch.Services
-{
-    public interface IMealKeywordService
-    {
-        Task<List<MealKeyword>> GetMealKeywordsAsync();
-        Task<Dictionary<string, List<string>>> GetKeywordsByTagAsync();
-        Task<(bool success, string message)> AddMealKeywordAsync(MealKeyword keyword);
-        Task<(bool success, string message)> DeleteMealKeywordAsync(int id);
-    }
-}
Index: triMatch/Services/Interfaces/IMealPlanService.cs
===================================================================
--- NutriMatch/Services/Interfaces/IMealPlanService.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,16 +1,0 @@
-using NutriMatch.Models;
-
-namespace NutriMatch.Services
-{
-    public interface IMealPlanService
-    {
-        Task<MealPlanResult> GenerateWeeklyMealPlanAsync(string userId, MealPlanRequest request);
-        Task<WeeklyMealPlan> GetMealPlanByIdAsync(int id, string userId);
-        Task<List<WeeklyMealPlan>> GetUserMealPlansAsync(string userId);
-        Task<bool> DeleteMealPlanAsync(int id, string userId);
-
-         Task<bool> RegenerateMealSlotAsync(int mealSlotId, string userId);
-        Task HandleDeletedRecipeAsync(int recipeId);
-        Task HandleDeletedRestaurantMealAsync(int restaurantMealId);
-    }
-}
Index: triMatch/Services/Interfaces/INotificationService.cs
===================================================================
--- NutriMatch/Services/Interfaces/INotificationService.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,17 +1,0 @@
-using NutriMatch.Models;
-
-namespace NutriMatch.Services
-{
-    public interface INotificationService
-    {
-        Task<(List<Notification> notifications, int unreadCount)> GetNotificationsAsync(string userId);
-        Task<List<Notification>> GetAllNotificationsAsync(string userId);
-        Task<(bool success, int unreadCount)> MarkAsReadAsync(int notificationId, string userId);
-        Task<bool> MarkAllAsReadAsync(string userId);
-        Task<(bool success, int unreadCount)> DeleteAsync(int notificationId, string userId);
-        Task<(bool success, string message)> DeleteAllAsync(string userId);
-        Task<int> GetUnreadCountAsync(string userId);
-        Task<Notification?> GetLatestNotificationAsync(string userId);
-        Task SendEmailAsync(string toEmail, string subject, string message);
-    }
-}
Index: triMatch/Services/Interfaces/IRatingService.cs
===================================================================
--- NutriMatch/Services/Interfaces/IRatingService.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,10 +1,0 @@
-using System.Threading.Tasks;
-
-namespace NutriMatch.Services
-{
-    public interface IRatingService
-    {
-        Task<(bool success, string message, double averageRating, int totalRatings)> AddOrUpdateRatingAsync(string userId, int recipeId, double rating);
-        Task<(bool success, string message, double averageRating, int totalRatings)> RemoveRatingAsync(string userId, int recipeId);
-    }
-}
Index: triMatch/Services/Interfaces/IRecipeApprovalService.cs
===================================================================
--- NutriMatch/Services/Interfaces/IRecipeApprovalService.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,13 +1,0 @@
-using NutriMatch.Models;
-
-namespace NutriMatch.Services
-{
-    public interface IRecipeApprovalService
-    {
-        Task<List<Recipe>> GetPendingRecipesAsync();
-        Task<(bool success, string message)> ApproveRecipeAsync(int recipeId);
-        Task<(bool success, string message)> DeclineRecipeAsync(int recipeId, string reason, string notes);
-        Task<(bool success, string message, int approvedCount)> BulkApproveRecipesAsync(List<int> recipeIds);
-        Task<Recipe?> GetRecipeForDeclineAsync(int recipeId);
-    }
-}
Index: triMatch/Services/Interfaces/IRecipeService.cs
===================================================================
--- NutriMatch/Services/Interfaces/IRecipeService.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,23 +1,0 @@
-using System.Collections.Generic;
-using System.Threading.Tasks;
-using NutriMatch.Models;
-
-namespace NutriMatch.Services
-{
-    public interface IRecipeService
-    {
-        Task<(List<Recipe> recipes, int totalRecipes)> GetPaginatedRecipesAsync(int page, int pageSize);
-        Task<List<int>> GetUserFavoriteRecipeIdsAsync(string userId);
-        Task<Recipe> GetRecipeByIdAsync(int id);
-        Task<(double averageRating, int totalRatings, double userRating, bool hasUserRated)> GetRatingDataAsync(int recipeId, string userId = null);
-        Task<bool> IsRecipeFavoritedAsync(string userId, int recipeId);
-        Task<List<Recipe>> GetUserRecipesAsync(string userId);
-        Task<double> GetUserAverageRatingAsync(string userId);
-        Task<(Recipe recipe, float totalCalories, float totalProtein, float totalCarbs, float totalFat, bool hasPendingIngredients)> CalculateRecipeNutritionAsync(Recipe recipe, List<SelectedIngredient> ingredients);
-        Task<Recipe> CreateRecipeAsync(Recipe recipe, List<SelectedIngredient> ingredients, string imageUrl);
-        Task<Recipe> UpdateRecipeAsync(Recipe recipe, List<SelectedIngredient> ingredients, string imageUrl);
-        Task DeleteRecipeAsync(int recipeId);
-        float ConvertUnit(float number, string unit);
-        Task<(bool success, string message, bool isFavorited)> ToggleFavoriteAsync(string userId, int recipeId);
-    }
-}
Index: triMatch/Services/Interfaces/IRecipeTagService.cs
===================================================================
--- NutriMatch/Services/Interfaces/IRecipeTagService.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,10 +1,0 @@
-using System.Collections.Generic;
-using NutriMatch.Models;
-
-namespace NutriMatch.Services
-{
-    public interface IRecipeTagService
-    {
-        List<string> GenerateRecipeTags(Recipe recipe, List<SelectedIngredient> ingredients);
-    }
-}
Index: triMatch/Services/Interfaces/IRestaurantService.cs
===================================================================
--- NutriMatch/Services/Interfaces/IRestaurantService.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,30 +1,0 @@
-using System.Collections.Generic;
-using System.Threading.Tasks;
-using NutriMatch.Models;
-
-namespace NutriMatch.Services
-{
-    public interface IRestaurantService
-    {
-        Task<List<Restaurant>> GetAllRestaurantsAsync();
-        Task<(Restaurant restaurant, List<RestaurantMeal> filteredMeals)> GetRestaurantWithFilteredMealsAsync(
-            int id, 
-            int? minCalories, 
-            int? maxCalories, 
-            int? minProtein, 
-            int? maxProtein, 
-            int? minCarbs, 
-            int? maxCarbs, 
-            int? minFat, 
-            int? maxFat);
-        Task<List<object>> GetRestaurantsAsync();
-        Task<object?> GetRestaurantAsync(int id);
-        Task<List<RestaurantMeal>> GetRestaurantMealsAsync(int restaurantId);
-        Task<(bool success, string message, int? restaurantId)> AddRestaurantAsync(string name, string description, string imagePath);
-        Task<(bool success, string message)> EditRestaurantAsync(int id, string name, string description, string? imagePath);
-        Task<(bool success, string message)> DeleteRestaurantAsync(int id);
-        Task<(bool success, string message)> AddRestaurantMealAsync(RestaurantMeal meal);
-        Task<(bool success, string message)> EditRestaurantMealAsync(RestaurantMeal meal);
-        Task<(bool success, string message)> DeleteRestaurantMealAsync(int id);
-    }
-}
Index: triMatch/Services/Interfaces/IUserPreferenceService.cs
===================================================================
--- NutriMatch/Services/Interfaces/IUserPreferenceService.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,13 +1,0 @@
-using System.Collections.Generic;
-using System.Threading.Tasks;
-using NutriMatch.Models;
-
-namespace NutriMatch.Services
-{
-    public interface IUserPreferenceService
-    {
-        Task<(List<object> preferences, List<int> followedRestaurants)> GetUserPreferencesAsync(string userId);
-        Task UpdateTagPreferencesAsync(string userId, List<UserMealPreference> preferences);
-        Task<(bool success, bool following)> ToggleFollowRestaurantAsync(string userId, int restaurantId);
-    }
-}
Index: triMatch/Services/MealClassificationService.cs
===================================================================
--- NutriMatch/Services/MealClassificationService.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,176 +1,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text.Json;
-using System.Threading.Tasks;
-using Microsoft.EntityFrameworkCore;
-using NutriMatch.Controllers;
-using NutriMatch.Data;
-using NutriMatch.Models;
-
-namespace NutriMatch.Services
-{
-    public class MealClassificationService : IMealClassificationService
-    {
-
-        private readonly IMealKeywordService _mealKeywordService;
-        private readonly AppDbContext _context;
-
-        public MealClassificationService(AppDbContext context, IMealKeywordService mealKeywordService)
-        {
-            _context = context;
-            _mealKeywordService = mealKeywordService;
-        }
-
-       
-
-        public async Task<List<string>> GenerateMealTypes(RestaurantMeal meal)
-        {
-            if (meal.Calories == 0 ||
-                (!string.IsNullOrEmpty(meal.ItemDescription) &&
-                (meal.ItemDescription.ToLower().Contains("wine") ||
-                meal.ItemDescription.ToLower().Contains("beer") ||
-                meal.ItemDescription.ToLower().Contains("spirits") ||
-                meal.ItemDescription.ToLower().Contains("beverages"))))
-            {
-                return new List<string> { "drink" };
-            }
-
-            var keywords = await _mealKeywordService.GetKeywordsByTagAsync();
-            var tags = new HashSet<string>();
-
-            var breakfastKeywords = new HashSet<string>(
-                keywords.ContainsKey("breakfast") ? keywords["breakfast"] : new List<string>(), 
-                StringComparer.OrdinalIgnoreCase);
-            var mainKeywords = new HashSet<string>(
-                keywords.ContainsKey("main") ? keywords["main"] : new List<string>(), 
-                StringComparer.OrdinalIgnoreCase);
-            var snackKeywords = new HashSet<string>(
-                keywords.ContainsKey("snack") ? keywords["snack"] : new List<string>(), 
-                StringComparer.OrdinalIgnoreCase);
-
-            var titleWords = meal.ItemName.ToLower()
-                .Split(new char[] { ' ', '-', '_', ',', '.', '(', ')' }, StringSplitOptions.RemoveEmptyEntries);
-
-            var descriptionWords = new HashSet<string>();
-            if (!string.IsNullOrEmpty(meal.ItemDescription))
-            {
-                var words = meal.ItemDescription.ToLower()
-                    .Split(new char[] { ' ', '-', '_', ',', '.', '(', ')', ';', ':' }, StringSplitOptions.RemoveEmptyEntries);
-                foreach (var w in words) descriptionWords.Add(w);
-            }
-
-            int breakfastScore = CountKeywordMatches(titleWords, breakfastKeywords, true) +
-                                CountKeywordMatches(descriptionWords, breakfastKeywords, false);
-
-            int mainScore = CountKeywordMatches(titleWords, mainKeywords, true) +
-                            CountKeywordMatches(descriptionWords, mainKeywords, false);
-
-            int snackScore = CountKeywordMatches(titleWords, snackKeywords, true) +
-                            CountKeywordMatches(descriptionWords, snackKeywords, false);
-
-            int lunchScore = mainScore;
-            int dinnerScore = mainScore;
-
-            float calories = meal.Calories;
-            float proteinRatio = (meal.Protein * 4) / calories * 100;
-            float carbRatio = (meal.Carbs * 4) / calories * 100;
-            float fatRatio = (meal.Fat * 9) / calories * 100;
-
-            if (calories < 250)
-            {
-                snackScore += 2;
-                breakfastScore += 1;
-                dinnerScore -= 2;
-                lunchScore -= 2;
-            }
-            else if (calories <= 500)
-            {
-                lunchScore += 1;
-                dinnerScore += 1;
-                breakfastScore += 2;
-            }
-            else
-            {
-                dinnerScore += 2;
-                lunchScore += 2;
-                breakfastScore -= 1;
-                snackScore -= 2;
-            }
-
-            if (proteinRatio >= 25)
-            {
-                dinnerScore += 2;
-                lunchScore += 2;
-            }
-            else if (carbRatio >= 50)
-            {
-                breakfastScore += 1;
-                snackScore += 1;
-            }
-
-            if (fatRatio > 30)
-            {
-                dinnerScore += 1;
-                snackScore += 1;
-            }
-
-            var results = new List<(string tag, int score)>
-            {
-                ("breakfast", breakfastScore),
-                ("lunch", lunchScore),
-                ("dinner", dinnerScore),
-                ("snack", snackScore)
-            }.OrderByDescending(x => x.score).ToList();
-
-            tags.Add(results[0].tag);
-
-            for (int i = 1; i < results.Count; i++)
-            {
-                if (results[i].score > 0 && results[i].score >= results[0].score * 0.6)
-                    tags.Add(results[i].tag);
-            }
-
-            return tags.ToList();
-        }
-
-        private string NormalizeWord(string word)
-        {
-            word = word.ToLower().Trim();
-            if (word.EndsWith("ies") && word.Length > 4)
-                return word.Substring(0, word.Length - 3) + "y";
-            if (word.EndsWith("es") && word.Length > 3)
-                return word.Substring(0, word.Length - 2);
-            if (word.EndsWith("s") && word.Length > 3 && !word.EndsWith("ss"))
-                return word.Substring(0, word.Length - 1);
-            return word;
-        }
-
-        private int CountKeywordMatches(IEnumerable<string> words, HashSet<string> keywords, bool isTitle = false)
-        {
-            int count = 0;
-            foreach (var word in words)
-            {
-                bool matches = keywords.Contains(word) || keywords.Contains(NormalizeWord(word));
-                if (matches)
-                    count += isTitle ? 3 : 1;
-            }
-            return count;
-        }
-
-        private async Task<List<RestaurantMeal>> GetUnclassifiedMealsFromDatabaseAsync()
-        {
-            return await _context.RestaurantMeals.ToListAsync();
-        }
-
-        private async Task UpdateMealTypesInDatabaseAsync(int mealId, List<string> mealTypes)
-        {
-            var meal = await _context.RestaurantMeals.FindAsync(mealId);
-            if (meal != null)
-            {
-                meal.Type = mealTypes;
-                await _context.SaveChangesAsync();
-            }
-        }
-    }
-}
Index: triMatch/Services/MealKeywordService.cs
===================================================================
--- NutriMatch/Services/MealKeywordService.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,71 +1,0 @@
-using NutriMatch.Data;
-using NutriMatch.Models;
-using Microsoft.EntityFrameworkCore;
-
-namespace NutriMatch.Services
-{
-    public class MealKeywordService : IMealKeywordService
-    {
-        private readonly AppDbContext _context;
-
-        public MealKeywordService(AppDbContext context)
-        {
-            _context = context;
-        }
-
-        public async Task<List<MealKeyword>> GetMealKeywordsAsync()
-        {
-            return await _context.MealKeywords
-                .OrderBy(k => k.Tag)
-                .ThenBy(k => k.Name)
-                .ToListAsync();
-        }
-
-        public async Task<Dictionary<string, List<string>>> GetKeywordsByTagAsync()
-        {
-            var keywords = await _context.MealKeywords.ToListAsync();
-            
-            return keywords
-                .GroupBy(k => k.Tag.ToLower())
-                .ToDictionary(
-                    g => g.Key,
-                    g => g.Select(k => k.Name).ToList()
-                );
-        }
-
-        public async Task<(bool success, string message)> AddMealKeywordAsync(MealKeyword keyword)
-        {
-            if (string.IsNullOrWhiteSpace(keyword.Name))
-            {
-                return (false, "Keyword name is required");
-            }
-
-            var exists = await _context.MealKeywords
-                .AnyAsync(k => k.Name.ToLower() == keyword.Name.ToLower() && k.Tag == keyword.Tag);
-
-            if (exists)
-            {
-                return (false, "This keyword already exists for this meal type");
-            }
-
-            _context.MealKeywords.Add(keyword);
-            await _context.SaveChangesAsync();
-
-            return (true, "Keyword added successfully");
-        }
-
-        public async Task<(bool success, string message)> DeleteMealKeywordAsync(int id)
-        {
-            var keyword = await _context.MealKeywords.FindAsync(id);
-            if (keyword == null)
-            {
-                return (false, "Keyword not found");
-            }
-
-            _context.MealKeywords.Remove(keyword);
-            await _context.SaveChangesAsync();
-
-            return (true, "Keyword deleted successfully");
-        }
-    }
-}
Index: triMatch/Services/MealPlanService.cs
===================================================================
--- NutriMatch/Services/MealPlanService.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,635 +1,0 @@
-using Microsoft.EntityFrameworkCore;
-using NutriMatch.Data;
-using NutriMatch.Models;
-
-namespace NutriMatch.Services
-{
-    public class MealPlanService : IMealPlanService
-    {
-        private readonly AppDbContext _context;
-        private readonly Random _random;
-        private readonly Dictionary<string, float> _mealTypeDistribution;
-
-        public MealPlanService(AppDbContext context)
-        {
-            _context = context;
-            _random = new Random();
-
-            _mealTypeDistribution = new Dictionary<string, float>
-            {
-                { "breakfast", 0.25f },
-                { "lunch", 0.35f },
-                { "dinner", 0.35f },
-                { "snack", 0.05f }
-            };
-        }
-
-        public async Task<MealPlanResult> GenerateWeeklyMealPlanAsync(string userId, MealPlanRequest request)
-        {
-            var result = new MealPlanResult { Success = false };
-
-            try
-            {
-                var weeklyPlan = new WeeklyMealPlan
-                {
-                    UserId = userId,
-                    GeneratedAt = DateTime.UtcNow
-                };
-
-                var days = new[] { "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday" };
-                var mealTypes = new[] { "breakfast", "lunch", "dinner" };
-
-                var restaurantMealSlots = DistributeRestaurantMeals(request.RestaurantMealsPerWeek, days, mealTypes);
-
-                foreach (var day in days)
-                {
-                    var usedRecipeIds = new HashSet<int>();
-                    var usedRestaurantMealIds = new HashSet<int>();
-
-                    var dailyMacros = new DailyMacros
-                    {
-                        Calories = request.DailyCalories,
-                        Protein = request.DailyProtein,
-                        Carbs = request.DailyCarbs,
-                        Fat = request.DailyFat
-                    };
-
-                    foreach (var mealType in mealTypes)
-                    {
-                        var mealSlot = new MealSlot
-                        {
-                            Day = day,
-                            MealType = mealType
-                        };
-
-                        var targetMacros = CalculateMealMacros(dailyMacros, mealType);
-                        var isRestaurantMeal = restaurantMealSlots.Contains($"{day}_{mealType}");
-
-                        if (isRestaurantMeal)
-                        {
-                            var restaurantMeal = await SelectRestaurantMealAsync(mealType, targetMacros, usedRestaurantMealIds);
-                            if (restaurantMeal != null)
-                            {
-                                mealSlot.RestaurantMeal = restaurantMeal;
-                                mealSlot.IsRestaurantMeal = true;
-                                usedRestaurantMealIds.Add(restaurantMeal.Id);
-                            }
-                            else
-                            {
-                                var recipe = await SelectRecipeAsync(mealType, targetMacros, usedRecipeIds);
-                                if (recipe != null)
-                                {
-                                    mealSlot.Recipe = recipe;
-                                    mealSlot.IsRestaurantMeal = false;
-                                    usedRecipeIds.Add(recipe.Id);
-                                }
-                            }
-                        }
-                        else
-                        {
-                            var recipe = await SelectRecipeAsync(mealType, targetMacros, usedRecipeIds);
-                            if (recipe != null)
-                            {
-                                mealSlot.Recipe = recipe;
-                                mealSlot.IsRestaurantMeal = false;
-                                usedRecipeIds.Add(recipe.Id);
-                            }
-                        }
-
-                        weeklyPlan.MealSlots.Add(mealSlot);
-                    }
-
-                    var remainingCalories = CalculateRemainingCalories(weeklyPlan.MealSlots.Where(ms => ms.Day == day).ToList(), dailyMacros.Calories);
-                    if (remainingCalories > 100)
-                    {
-                        var snackMacros = new DailyMacros
-                        {
-                            Calories = remainingCalories,
-                            Protein = remainingCalories * 0.15f / 4,
-                            Carbs = remainingCalories * 0.50f / 4,
-                            Fat = remainingCalories * 0.35f / 9
-                        };
-
-                        var snackSlot = new MealSlot
-                        {
-                            Day = day,
-                            MealType = "snack"
-                        };
-
-                        var snackRecipe = await SelectRecipeAsync("snack", snackMacros, usedRecipeIds);
-                        if (snackRecipe != null)
-                        {
-                            snackSlot.Recipe = snackRecipe;
-                            snackSlot.IsRestaurantMeal = false;
-                            weeklyPlan.MealSlots.Add(snackSlot);
-                        }
-                    }
-                }
-
-                _context.WeeklyMealPlans.Add(weeklyPlan);
-                await _context.SaveChangesAsync();
-
-                result.WeeklyMealPlan = weeklyPlan;
-                result.DailyMacroTotals = CalculateDailyMacroTotals(weeklyPlan);
-                result.Success = true;
-            }
-            catch (Exception ex)
-            {
-                result.ErrorMessage = $"Failed to generate meal plan: {ex.Message}";
-            }
-
-            return result;
-        }
-
-        public async Task<bool> DeleteMealPlanAsync(int id, string userId)
-        {
-            try
-            {
-                var mealPlan = await _context.WeeklyMealPlans
-                    .Include(wmp => wmp.MealSlots)
-                    .FirstOrDefaultAsync(wmp => wmp.Id == id && wmp.UserId == userId);
-
-                if (mealPlan == null)
-                {
-                    return false;
-                }
-
-                _context.MealSlots.RemoveRange(mealPlan.MealSlots);
-                _context.WeeklyMealPlans.Remove(mealPlan);
-
-                await _context.SaveChangesAsync();
-                return true;
-            }
-            catch (Exception ex)
-            {
-                return false;
-            }
-        }
-
-        private HashSet<string> DistributeRestaurantMeals(int totalRestaurantMeals, string[] days, string[] mealTypes)
-        {
-            var restaurantSlots = new HashSet<string>();
-            var availableSlots = new List<string>();
-
-            foreach (var day in days)
-            {
-                foreach (var mealType in mealTypes)
-                {
-                    availableSlots.Add($"{day}_{mealType}");
-                }
-            }
-
-            for (int i = 0; i < Math.Min(totalRestaurantMeals, availableSlots.Count); i++)
-            {
-                if (availableSlots.Count > 0)
-                {
-                    var randomIndex = _random.Next(availableSlots.Count);
-                    var selectedSlot = availableSlots[randomIndex];
-                    restaurantSlots.Add(selectedSlot);
-                    availableSlots.RemoveAt(randomIndex);
-                }
-            }
-
-            return restaurantSlots;
-        }
-
-        private DailyMacros CalculateMealMacros(DailyMacros dailyMacros, string mealType)
-        {
-            var distribution = _mealTypeDistribution.GetValueOrDefault(mealType, 0.25f);
-
-            return new DailyMacros
-            {
-                Calories = dailyMacros.Calories * distribution,
-                Protein = dailyMacros.Protein * distribution,
-                Carbs = dailyMacros.Carbs * distribution,
-                Fat = dailyMacros.Fat * distribution
-            };
-        }
-
-        private async Task<Recipe> SelectRecipeAsync(string mealType, DailyMacros targetMacros, HashSet<int> excludeRecipeIds = null)
-        {
-            var query = _context.Recipes
-                .Include(r => r.RecipeIngredients)
-                .Where(r => r.RecipeStatus == "Accepted");
-
-            if (excludeRecipeIds != null && excludeRecipeIds.Any())
-            {
-                query = query.Where(r => !excludeRecipeIds.Contains(r.Id));
-            }
-
-            if (!string.IsNullOrEmpty(mealType))
-            {
-                query = query.Where(r => r.Type.Contains(mealType));
-            }
-
-            var recipes = await query.ToListAsync();
-
-            if (!recipes.Any())
-            {
-                recipes = await _context.Recipes
-                    .Where(r => r.RecipeStatus == "Accepted")
-                    .ToListAsync();
-
-                if (excludeRecipeIds != null && excludeRecipeIds.Any())
-                {
-                    recipes = recipes.Where(r => !excludeRecipeIds.Contains(r.Id)).ToList();
-                }
-            }
-
-            if (!recipes.Any()) return null;
-
-            var scoredRecipes = recipes.Select(recipe => new
-            {
-                Recipe = recipe,
-                Score = CalculateMacroMatchScore(recipe, targetMacros)
-            })
-            .OrderByDescending(x => x.Score)
-            .Take(10)
-            .ToList();
-
-            var selectedRecipe = scoredRecipes[_random.Next(Math.Min(3, scoredRecipes.Count))].Recipe;
-
-            return selectedRecipe;
-        }
-
-        private async Task<RestaurantMeal> SelectRestaurantMealAsync(string mealType, DailyMacros targetMacros, HashSet<int> excludeMealIds = null)
-        {
-            var query = _context.RestaurantMeals.AsQueryable();
-
-            if (excludeMealIds != null && excludeMealIds.Any())
-            {
-                query = query.Where(rm => !excludeMealIds.Contains(rm.Id));
-            }
-
-            if (!string.IsNullOrEmpty(mealType))
-            {
-                query = query.Where(rm => rm.Type.Contains(mealType));
-            }
-
-            var restaurantMeals = await query.ToListAsync();
-
-            if (!restaurantMeals.Any()) return null;
-
-            var scoredMeals = restaurantMeals.Select(meal => new
-            {
-                Meal = meal,
-                Score = CalculateMacroMatchScore(meal, targetMacros)
-            })
-            .OrderByDescending(x => x.Score)
-            .Take(5)
-            .ToList();
-
-            return scoredMeals[_random.Next(scoredMeals.Count)].Meal;
-        }
-
-        private double CalculateMacroMatchScore(Recipe recipe, DailyMacros targetMacros)
-        {
-            var calorieMatch = 1.0 - Math.Abs(recipe.Calories - targetMacros.Calories) / targetMacros.Calories;
-            var proteinMatch = 1.0 - Math.Abs(recipe.Protein - targetMacros.Protein) / Math.Max(targetMacros.Protein, 1);
-            var carbMatch = 1.0 - Math.Abs(recipe.Carbs - targetMacros.Carbs) / Math.Max(targetMacros.Carbs, 1);
-            var fatMatch = 1.0 - Math.Abs(recipe.Fat - targetMacros.Fat) / Math.Max(targetMacros.Fat, 1);
-
-            return (calorieMatch * 0.4 + proteinMatch * 0.2 + carbMatch * 0.2 + fatMatch * 0.2) * 100;
-        }
-
-        private double CalculateMacroMatchScore(RestaurantMeal meal, DailyMacros targetMacros)
-        {
-            var calorieMatch = 1.0 - Math.Abs(meal.Calories - targetMacros.Calories) / targetMacros.Calories;
-            var proteinMatch = 1.0 - Math.Abs(meal.Protein - targetMacros.Protein) / Math.Max(targetMacros.Protein, 1);
-            var carbMatch = 1.0 - Math.Abs(meal.Carbs - targetMacros.Carbs) / Math.Max(targetMacros.Carbs, 1);
-            var fatMatch = 1.0 - Math.Abs(meal.Fat - targetMacros.Fat) / Math.Max(targetMacros.Fat, 1);
-
-            return (calorieMatch * 0.4 + proteinMatch * 0.2 + carbMatch * 0.2 + fatMatch * 0.2) * 100;
-        }
-
-        private float CalculateRemainingCalories(List<MealSlot> dayMeals, float targetCalories)
-        {
-            var totalCalories = dayMeals.Sum(ms =>
-                ms.IsRestaurantMeal ? (ms.RestaurantMeal?.Calories ?? 0) : (ms.Recipe?.Calories ?? 0));
-
-            return Math.Max(0, targetCalories - totalCalories);
-        }
-
-        private Dictionary<string, DailyMacros> CalculateDailyMacroTotals(WeeklyMealPlan weeklyPlan)
-        {
-            var dailyTotals = new Dictionary<string, DailyMacros>();
-            var days = new[] { "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday" };
-
-            foreach (var day in days)
-            {
-                var dayMeals = weeklyPlan.MealSlots.Where(ms => ms.Day == day).ToList();
-
-                dailyTotals[day] = new DailyMacros
-                {
-                    Calories = dayMeals.Sum(ms => ms.IsRestaurantMeal ? (ms.RestaurantMeal?.Calories ?? 0) : (ms.Recipe?.Calories ?? 0)),
-                    Protein = dayMeals.Sum(ms => ms.IsRestaurantMeal ? (ms.RestaurantMeal?.Protein ?? 0) : (ms.Recipe?.Protein ?? 0)),
-                    Carbs = dayMeals.Sum(ms => ms.IsRestaurantMeal ? (ms.RestaurantMeal?.Carbs ?? 0) : (ms.Recipe?.Carbs ?? 0)),
-                    Fat = dayMeals.Sum(ms => ms.IsRestaurantMeal ? (ms.RestaurantMeal?.Fat ?? 0) : (ms.Recipe?.Fat ?? 0))
-                };
-            }
-
-            return dailyTotals;
-        }
-
-        public async Task<WeeklyMealPlan> GetMealPlanByIdAsync(int id, string userId)
-        {
-#pragma warning disable CS8603
-            return await _context.WeeklyMealPlans
-                .Include(wmp => wmp.MealSlots)
-                    .ThenInclude(ms => ms.Recipe)
-                        .ThenInclude(r => r.RecipeIngredients)
-                .Include(wmp => wmp.MealSlots)
-                    .ThenInclude(ms => ms.RestaurantMeal)
-                        .ThenInclude(rm => rm.Restaurant)
-                .FirstOrDefaultAsync(wmp => wmp.Id == id && wmp.UserId == userId);
-        }
-
-        public async Task<List<WeeklyMealPlan>> GetUserMealPlansAsync(string userId)
-        {
-            return await _context.WeeklyMealPlans
-                .Where(wmp => wmp.UserId == userId)
-                .Include(wmp => wmp.MealSlots)
-                .OrderByDescending(wmp => wmp.GeneratedAt)
-                .ToListAsync();
-        }
-
-        public async Task<bool> RegenerateMealSlotAsync(int mealSlotId, string userId)
-        {
-            try
-            {
-                var mealSlot = await _context.MealSlots
-                    .Include(ms => ms.Recipe)
-                    .Include(ms => ms.RestaurantMeal)
-                    .FirstOrDefaultAsync(ms => ms.Id == mealSlotId);
-
-                if (mealSlot == null)
-                    return false;
-
-                var weeklyPlan = await _context.WeeklyMealPlans
-                    .FirstOrDefaultAsync(wmp => wmp.UserId == userId && wmp.MealSlots.Any(ms => ms.Id == mealSlotId));
-
-                if (weeklyPlan == null)
-                    return false;
-
-                var currentRecipeId = mealSlot.Recipe?.Id;
-                var currentRestaurantMealId = mealSlot.RestaurantMeal?.Id;
-
-                var targetMacros = new DailyMacros
-                {
-                    Calories = mealSlot.IsRestaurantMeal ? (mealSlot.RestaurantMeal?.Calories ?? 500) : (mealSlot.Recipe?.Calories ?? 500),
-                    Protein = mealSlot.IsRestaurantMeal ? (mealSlot.RestaurantMeal?.Protein ?? 30) : (mealSlot.Recipe?.Protein ?? 30),
-                    Carbs = mealSlot.IsRestaurantMeal ? (mealSlot.RestaurantMeal?.Carbs ?? 50) : (mealSlot.Recipe?.Carbs ?? 50),
-                    Fat = mealSlot.IsRestaurantMeal ? (mealSlot.RestaurantMeal?.Fat ?? 15) : (mealSlot.Recipe?.Fat ?? 15)
-                };
-
-                if (mealSlot.IsRestaurantMeal)
-                {
-                    var newRestaurantMeal = await SelectBestRestaurantMealAsync(mealSlot.MealType, targetMacros, currentRestaurantMealId);
-                    if (newRestaurantMeal != null)
-                    {
-                        mealSlot.RestaurantMeal = newRestaurantMeal;
-                        mealSlot.Recipe = null;
-                    }
-                    else
-                    {
-                        return false;
-                    }
-                }
-                else
-                {
-                    var newRecipe = await SelectBestRecipeAsync(mealSlot.MealType, targetMacros, currentRecipeId);
-                    if (newRecipe != null)
-                    {
-                        mealSlot.Recipe = newRecipe;
-                        mealSlot.RestaurantMeal = null;
-                    }
-                    else
-                    {
-                        return false;
-                    }
-                }
-
-                await _context.SaveChangesAsync();
-                return true;
-            }
-            catch (Exception ex)
-            {
-                return false;
-            }
-        }
-
-        private async Task<Recipe> SelectBestRecipeAsync(string mealType, DailyMacros targetMacros, int? excludeRecipeId = null)
-        {
-            var query = _context.Recipes
-                .Include(r => r.RecipeIngredients)
-                .Where(r => r.RecipeStatus == "Accepted");
-
-            if (excludeRecipeId.HasValue)
-            {
-                query = query.Where(r => r.Id != excludeRecipeId.Value);
-            }
-
-            if (!string.IsNullOrEmpty(mealType))
-            {
-                query = query.Where(r => r.Type.Contains(mealType));
-            }
-
-            var recipes = await query.ToListAsync();
-
-            if (!recipes.Any())
-            {
-                recipes = await _context.Recipes
-                    .Where(r => r.RecipeStatus == "Accepted" && r.Id != excludeRecipeId)
-                    .ToListAsync();
-            }
-
-            if (!recipes.Any()) return null;
-
-            var closestRecipe = recipes
-                .Select(recipe => new
-                {
-                    Recipe = recipe,
-                    Score = CalculateMacroMatchScore(recipe, targetMacros)
-                })
-                .OrderByDescending(x => x.Score)
-                .First()
-                .Recipe;
-
-            return closestRecipe;
-        }
-
-        private async Task<RestaurantMeal> SelectBestRestaurantMealAsync(string mealType, DailyMacros targetMacros, int? excludeMealId = null)
-        {
-            var query = _context.RestaurantMeals.AsQueryable();
-
-            if (excludeMealId.HasValue)
-            {
-                query = query.Where(rm => rm.Id != excludeMealId.Value);
-            }
-
-            if (!string.IsNullOrEmpty(mealType))
-            {
-                query = query.Where(rm => rm.Type.Contains(mealType));
-            }
-
-            var restaurantMeals = await query.ToListAsync();
-
-            if (!restaurantMeals.Any())
-            {
-                restaurantMeals = await _context.RestaurantMeals
-                    .Where(rm => rm.Id != excludeMealId)
-                    .ToListAsync();
-            }
-
-            if (!restaurantMeals.Any()) return null;
-
-            var closestMeal = restaurantMeals
-                .Select(meal => new
-                {
-                    Meal = meal,
-                    Score = CalculateMacroMatchScore(meal, targetMacros)
-                })
-                .OrderByDescending(x => x.Score)
-                .First()
-                .Meal;
-
-            return closestMeal;
-        }
-
-        public async Task HandleDeletedRecipeAsync(int recipeId)
-        {
-            try
-            {
-                var affectedMealSlots = await _context.MealSlots
-                    .Include(ms => ms.Recipe)
-                    .Where(ms => ms.Recipe != null && ms.Recipe.Id == recipeId && !ms.IsRestaurantMeal)
-                    .ToListAsync();
-
-                if (!affectedMealSlots.Any())
-                    return;
-
-                var affectedUserIds = await _context.WeeklyMealPlans
-                    .Where(wmp => wmp.MealSlots.Any(ms => affectedMealSlots.Select(ams => ams.Id).Contains(ms.Id)))
-                    .Select(wmp => wmp.UserId)
-                    .Distinct()
-                    .ToListAsync();
-
-                foreach (var mealSlot in affectedMealSlots)
-                {
-                    var targetMacros = new DailyMacros
-                    {
-                        Calories = mealSlot.Recipe?.Calories ?? 500,
-                        Protein = mealSlot.Recipe?.Protein ?? 30,
-                        Carbs = mealSlot.Recipe?.Carbs ?? 50,
-                        Fat = mealSlot.Recipe?.Fat ?? 15
-                    };
-
-                    var replacementRecipe = await SelectBestRecipeAsync(mealSlot.MealType, targetMacros, recipeId);
-
-                    if (replacementRecipe != null)
-                    {
-                        mealSlot.Recipe = replacementRecipe;
-                        mealSlot.IsRegenerated = true;
-                        mealSlot.isViewed = false;
-                    }
-                    else
-                    {
-                        mealSlot.Recipe = null;
-                    }
-                }
-
-                await _context.SaveChangesAsync();
-
-                foreach (var userId in affectedUserIds)
-                {
-                    var UserNotification = await _context.Users.FindAsync(userId);
-                    if (UserNotification.NotifyMealPlanUpdated)
-                    {
-
-                        var notification = new Notification
-                        {
-                            UserId = userId,
-                            Type = "MealPlanUpdated",
-                            Message = $"A recipe in your meal plan was removed and has been automatically replaced with a similar recipe.",
-                            CreatedAt = DateTime.Now.ToUniversalTime(),
-
-                            IsRead = false
-                        };
-
-                        _context.Notifications.Add(notification);
-                    }
-                }
-
-                await _context.SaveChangesAsync();
-            }
-            catch (Exception ex)
-            {
-            }
-        }
-
-        public async Task HandleDeletedRestaurantMealAsync(int restaurantMealId)
-        {
-            try
-            {
-                var affectedMealSlots = await _context.MealSlots
-                    .Include(ms => ms.RestaurantMeal)
-                    .Where(ms => ms.RestaurantMeal != null && ms.RestaurantMeal.Id == restaurantMealId && ms.IsRestaurantMeal)
-                    .ToListAsync();
-
-                if (!affectedMealSlots.Any())
-                    return;
-
-                var affectedUserIds = await _context.WeeklyMealPlans
-                    .Where(wmp => wmp.MealSlots.Any(ms => affectedMealSlots.Select(ams => ams.Id).Contains(ms.Id)))
-                    .Select(wmp => wmp.UserId)
-                    .Distinct()
-                    .ToListAsync();
-
-                foreach (var mealSlot in affectedMealSlots)
-                {
-                    var targetMacros = new DailyMacros
-                    {
-                        Calories = mealSlot.RestaurantMeal?.Calories ?? 500,
-                        Protein = mealSlot.RestaurantMeal?.Protein ?? 30,
-                        Carbs = mealSlot.RestaurantMeal?.Carbs ?? 50,
-                        Fat = mealSlot.RestaurantMeal?.Fat ?? 15
-                    };
-
-                    var replacementMeal = await SelectBestRestaurantMealAsync(mealSlot.MealType, targetMacros, restaurantMealId);
-
-                    if (replacementMeal != null)
-                    {
-                        mealSlot.RestaurantMeal = replacementMeal;
-                        mealSlot.IsRegenerated = true;
-                        mealSlot.isViewed = false;
-                    }
-                    else
-                    {
-                        mealSlot.RestaurantMeal = null;
-                    }
-                }
-
-                await _context.SaveChangesAsync();
-
-                foreach (var userId in affectedUserIds)
-                {
-                    var notification = new Notification
-                    {
-                        UserId = userId,
-                        Type = "MealPlanUpdated",
-                        Message = $"A restaurant meal in your meal plan was removed and has been automatically replaced with a similar restaurant meal.",
-                        CreatedAt = DateTime.Now.ToUniversalTime(),
-                        IsRead = false
-                    };
-
-                    _context.Notifications.Add(notification);
-                }
-
-                await _context.SaveChangesAsync();
-            }
-            catch (Exception ex)
-            {
-            }
-        }
-    }
-}
Index: triMatch/Services/NotificationService.cs
===================================================================
--- NutriMatch/Services/NotificationService.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,157 +1,0 @@
-
-using NutriMatch.Data;
-using NutriMatch.Models;
-using Microsoft.EntityFrameworkCore;
-using System.Net.Mail;
-using System.Net;
-
-namespace NutriMatch.Services
-{
-    public class NotificationService : INotificationService
-    {
-        private readonly AppDbContext _context;
-        
-        private readonly IConfiguration _config;
-
-        public NotificationService(AppDbContext context, IConfiguration config)
-        {
-            _context = context;
-            _config = config;
-        }
-
-        public async Task<(List<Notification> notifications, int unreadCount)> GetNotificationsAsync(string userId)
-        {
-            var notifications = await _context.Notifications
-                .Where(n => n.UserId == userId)
-                .OrderByDescending(n => n.CreatedAt)
-                .Take(10)
-                .ToListAsync();
-
-            var unreadCount = await _context.Notifications
-                .CountAsync(n => n.UserId == userId && !n.IsRead);
-
-            return (notifications, unreadCount);
-        }
-
-        public async Task<List<Notification>> GetAllNotificationsAsync(string userId)
-        {
-            return await _context.Notifications
-                .Where(n => n.UserId == userId)
-                .OrderByDescending(n => n.CreatedAt)
-                .ToListAsync();
-        }
-
-        public async Task<(bool success, int unreadCount)> MarkAsReadAsync(int notificationId, string userId)
-        {
-            var notification = await _context.Notifications
-                .FirstOrDefaultAsync(n => n.Id == notificationId && n.UserId == userId);
-
-            if (notification == null)
-            {
-                return (false, 0);
-            }
-
-            notification.IsRead = true;
-            await _context.SaveChangesAsync();
-
-            var unreadCount = await _context.Notifications
-                .CountAsync(n => n.UserId == userId && !n.IsRead);
-
-            return (true, unreadCount);
-        }
-
-        public async Task<bool> MarkAllAsReadAsync(string userId)
-        {
-            var notifications = await _context.Notifications
-                .Where(n => n.UserId == userId && !n.IsRead)
-                .ToListAsync();
-
-            foreach (var notification in notifications)
-            {
-                notification.IsRead = true;
-            }
-
-            await _context.SaveChangesAsync();
-            return true;
-        }
-
-        public async Task<(bool success, int unreadCount)> DeleteAsync(int notificationId, string userId)
-        {
-            var notification = await _context.Notifications
-                .FirstOrDefaultAsync(n => n.Id == notificationId && n.UserId == userId);
-
-            if (notification == null)
-            {
-                return (false, 0);
-            }
-
-            _context.Notifications.Remove(notification);
-            await _context.SaveChangesAsync();
-
-            var unreadCount = await _context.Notifications
-                .CountAsync(n => n.UserId == userId && !n.IsRead);
-
-            return (true, unreadCount);
-        }
-
-        public async Task<(bool success, string message)> DeleteAllAsync(string userId)
-        {
-            try
-            {
-                if (string.IsNullOrEmpty(userId))
-                {
-                    return (false, "User not found");
-                }
-
-                var userNotifications = await _context.Notifications
-                    .Where(n => n.UserId == userId)
-                    .ToListAsync();
-
-                _context.Notifications.RemoveRange(userNotifications);
-                await _context.SaveChangesAsync();
-
-                return (true, "All notifications deleted");
-            }
-            catch (Exception)
-            {
-                return (false, "Error deleting notifications");
-            }
-        }
-
-        public async Task<int> GetUnreadCountAsync(string userId)
-        {
-            return await _context.Notifications
-                .CountAsync(n => n.UserId == userId && !n.IsRead);
-        }
-
-        public async Task<Notification?> GetLatestNotificationAsync(string userId)
-        {
-            return await _context.Notifications
-                .Where(n => n.UserId == userId)
-                .OrderByDescending(n => n.CreatedAt)
-                .FirstOrDefaultAsync();
-        }
-
-        public async Task SendEmailAsync(string toEmail, string subject, string message)
-        {
-            var fromEmail = _config["EmailSettings:FromEmail"];
-            var password = _config["EmailSettings:Password"];
-            var smtpServer = _config["EmailSettings:SmtpServer"];
-            var port = int.Parse(_config["EmailSettings:Port"]);
-
-            using (var client = new SmtpClient(smtpServer, port))
-            {
-                client.EnableSsl = true;
-                client.Credentials = new NetworkCredential(fromEmail, password);
-
-                var mailMessage = new MailMessage(fromEmail, toEmail, subject, message)
-                {
-                    IsBodyHtml = true
-                };
-
-                await client.SendMailAsync(mailMessage);
-            }
-        }
-
-    }
-}
Index: triMatch/Services/RatingService.cs
===================================================================
--- NutriMatch/Services/RatingService.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,126 +1,0 @@
-using System;
-using System.Linq;
-using System.Threading.Tasks;
-using Microsoft.EntityFrameworkCore;
-using NutriMatch.Data;
-using NutriMatch.Models;
-
-namespace NutriMatch.Services
-{
-    public class RatingService : IRatingService
-    {
-        private readonly AppDbContext _context;
-        private readonly INotificationService _notificationService;
-
-        public RatingService(AppDbContext context, INotificationService notificationService)
-        {
-            _context = context;
-            _notificationService = notificationService;
-        }
-
-        public async Task<(bool success, string message, double averageRating, int totalRatings)> AddOrUpdateRatingAsync(string userId, int recipeId, double rating)
-        {
-            if (string.IsNullOrEmpty(userId))
-            {
-                return (false, "User not authenticated", 0, 0);
-            }
-
-            if (rating < 1 || rating > 5)
-            {
-                return (false, "Rating must be between 1 and 5", 0, 0);
-            }
-
-            var recipe = await _context.Recipes.FindAsync(recipeId);
-            if (recipe == null)
-            {
-                return (false, "Recipe not found", 0, 0);
-            }
-
-            var existingRating = await _context.RecipeRatings
-                .FirstOrDefaultAsync(r => r.UserId == userId && r.RecipeId == recipeId);
-
-            if (existingRating != null)
-            {
-                existingRating.Rating = rating;
-                _context.RecipeRatings.Update(existingRating);
-            }
-            else
-            {
-                var newRating = new RecipeRating
-                {
-                    UserId = userId,
-                    RecipeId = recipeId,
-                    Rating = rating
-                };
-                _context.RecipeRatings.Add(newRating);
-            }
-
-            // Send notification
-            var userNotification = await _context.Users.FindAsync(recipe.UserId);
-            if (userNotification?.NotifyRecipeRated == true)
-            {
-                var notification = new Notification
-                {
-                    UserId = recipe.UserId,
-                    Type = "RecipeRated",
-                    Message = $"Your recipe '{recipe.Title}' received a new rating of {rating} stars.",
-                    RecipeId = recipe.Id,
-                    RelatedUserId = userId,
-                    CreatedAt = DateTime.UtcNow,
-                    IsRead = false
-                };
-
-                _context.Notifications.Add(notification);
-
-                await _notificationService.SendEmailAsync(
-                    userNotification.Email,
-                    "Your recipe was rated!",
-                    $"<p>Hi {userNotification.UserName},</p><p>{notification.Message}</p>"
-                );
-            }
-
-            await _context.SaveChangesAsync();
-
-            var ratings = await _context.RecipeRatings
-                .Where(r => r.RecipeId == recipeId)
-                .Select(r => r.Rating)
-                .ToListAsync();
-
-            var averageRating = ratings.Any() ? Math.Round(ratings.Average(), 1) : 0;
-            var totalRatings = ratings.Count;
-
-            return (true, "Rating submitted successfully", averageRating, totalRatings);
-        }
-
-        public async Task<(bool success, string message, double averageRating, int totalRatings)> RemoveRatingAsync(string userId, int recipeId)
-        {
-            if (string.IsNullOrEmpty(userId))
-            {
-                return (false, "User not authenticated", 0, 0);
-            }
-
-            var existingRating = await _context.RecipeRatings
-                .FirstOrDefaultAsync(r => r.UserId == userId && r.RecipeId == recipeId);
-
-            if (existingRating == null)
-            {
-                return (false, "No rating found to remove", 0, 0);
-            }
-
-            _context.RecipeRatings.Remove(existingRating);
-            await _context.SaveChangesAsync();
-
-            var ratings = await _context.RecipeRatings
-                .Where(r => r.RecipeId == recipeId)
-                .Select(r => r.Rating)
-                .ToListAsync();
-
-            var averageRating = ratings.Any() ? Math.Round(ratings.Average(), 1) : 0;
-            var totalRatings = ratings.Count;
-
-            return (true, "Rating removed successfully", averageRating, totalRatings);
-        }
-    }
-
-    
-}
Index: triMatch/Services/RecipeApprovalService.cs
===================================================================
--- NutriMatch/Services/RecipeApprovalService.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,303 +1,0 @@
-
-using NutriMatch.Data;
-using NutriMatch.Models;
-using Microsoft.EntityFrameworkCore;
-
-namespace NutriMatch.Services
-{
-    public class RecipeApprovalService : IRecipeApprovalService
-    {
-        private readonly AppDbContext _context;
-        private readonly INotificationService _notificationService;
-
-        public RecipeApprovalService(
-            AppDbContext context,
-            INotificationService notificationService)
-        {
-            _context = context;
-            _notificationService = notificationService;
-        }
-
-        public async Task<List<Recipe>> GetPendingRecipesAsync()
-        {
-            return await _context.Recipes
-                .Where(r => r.RecipeStatus == "Pending")
-                .Include(r => r.User)
-                .ToListAsync();
-        }
-
-        public async Task<(bool success, string message)> ApproveRecipeAsync(int recipeId)
-        {
-            var recipe = await _context.Recipes
-                .Include(r => r.RecipeIngredients)
-                .ThenInclude(ri => ri.Ingredient)
-                .FirstOrDefaultAsync(r => r.Id == recipeId);
-
-            if (recipe == null)
-            {
-                return (false, "Recipe not found.");
-            }
-
-            recipe.RecipeStatus = "Accepted";
-
-            if (recipe.HasPendingIngredients == true)
-            {
-                var pendingIngredients = recipe.RecipeIngredients
-                    .Where(ri => ri.Ingredient.Status == "Pending")
-                    .Select(ri => ri.Ingredient);
-
-                foreach (var ingredient in pendingIngredients)
-                {
-                    ingredient.Status = null;
-                }
-
-                recipe.HasPendingIngredients = false;
-            }
-
-            var userNotification = await _context.Users.FindAsync(recipe.UserId);
-
-            if (userNotification?.NotifyRecipeAccepted == true)
-            {
-                var notification = new Notification
-                {
-                    UserId = recipe.UserId,
-                    Type = "RecipeAccepted",
-                    Message = $"Great news! Your recipe '{recipe.Title}' has been approved and is now live!",
-                    RecipeId = recipeId,
-                    CreatedAt = DateTime.UtcNow,
-                    IsRead = false
-                };
-
-                _context.Notifications.Add(notification);
-
-                await _notificationService.SendEmailAsync(
-                    userNotification.Email,
-                    "Your recipe has been approved!",
-                    $"<p>Hi {userNotification.UserName},</p><p>{notification.Message}</p>"
-                );
-            }
-
-            await _context.SaveChangesAsync();
-            await CreateRecipeNotificationsAsync(recipe);
-
-            return (true, "Recipe approved successfully.");
-        }
-
-        public async Task<(bool success, string message)> DeclineRecipeAsync(int recipeId, string reason, string notes)
-        {
-            var recipe = await _context.Recipes
-                .Include(r => r.RecipeIngredients)
-                .ThenInclude(ri => ri.Ingredient)
-                .FirstOrDefaultAsync(r => r.Id == recipeId);
-
-            if (recipe == null)
-            {
-                return (false, "Recipe not found.");
-            }
-
-            recipe.RecipeStatus = "Declined";
-            recipe.DeclineReason = reason ?? string.Empty;
-            recipe.AdminComment = notes ?? string.Empty;
-
-            string notificationMessage = string.IsNullOrEmpty(reason) || reason == "No reason provided."
-                ? $"Your recipe '{recipe.Title}' was declined."
-                : $"Your recipe '{recipe.Title}' was declined. Reason: {reason}";
-
-            var userNotification = await _context.Users.FindAsync(recipe.UserId);
-
-            if (userNotification?.NotifyRecipeDeclined == true)
-            {
-                var notification = new Notification
-                {
-                    UserId = recipe.UserId,
-                    Type = "RecipeDeclined",
-                    Message = notificationMessage,
-                    RecipeId = recipeId,
-                    CreatedAt = DateTime.UtcNow,
-                    IsRead = false
-                };
-
-                _context.Notifications.Add(notification);
-
-                await _notificationService.SendEmailAsync(
-                    userNotification.Email,
-                    "Your recipe was declined",
-                    $"<p>Hi {userNotification.UserName},</p><p>{notification.Message}</p>"
-                );
-            }
-
-            await _context.SaveChangesAsync();
-
-            return (true, "Recipe declined successfully.");
-        }
-
-        public async Task<(bool success, string message, int approvedCount)> BulkApproveRecipesAsync(List<int> recipeIds)
-        {
-            if (!recipeIds.Any())
-            {
-                return (false, "No recipe IDs provided.", 0);
-            }
-
-            var recipes = await _context.Recipes
-                .Include(r => r.RecipeIngredients)
-                .ThenInclude(ri => ri.Ingredient)
-                .Where(r => recipeIds.Contains(r.Id))
-                .ToListAsync();
-
-            if (!recipes.Any())
-            {
-                return (false, "No recipes found.", 0);
-            }
-
-            int approvedCount = 0;
-            foreach (var recipe in recipes)
-            {
-                recipe.RecipeStatus = "Accepted";
-
-                if (recipe.HasPendingIngredients == true)
-                {
-                    var pendingIngredients = recipe.RecipeIngredients
-                        .Where(ri => ri.Ingredient.Status == "Pending")
-                        .Select(ri => ri.Ingredient);
-
-                    foreach (var ingredient in pendingIngredients)
-                    {
-                        ingredient.Status = null;
-                    }
-
-                    recipe.HasPendingIngredients = false;
-                }
-
-                var userNotification = await _context.Users.FindAsync(recipe.UserId);
-                if (userNotification?.NotifyRecipeAccepted == true)
-                {
-                    var notification = new Notification
-                    {
-                        UserId = recipe.UserId,
-                        Type = "RecipeAccepted",
-                        Message = $"Great news! Your recipe '{recipe.Title}' has been approved and is now live!",
-                        RecipeId = recipe.Id,
-                        CreatedAt = DateTime.UtcNow,
-                        IsRead = false
-                    };
-
-                    _context.Notifications.Add(notification);
-
-                    await _notificationService.SendEmailAsync(
-                        userNotification.Email,
-                        "Your recipe has been approved!",
-                        $"<p>Hi {userNotification.UserName},</p><p>{notification.Message}</p>"
-                    );
-                }
-                approvedCount++;
-            }
-
-            await _context.SaveChangesAsync();
-
-            foreach (var recipe in recipes)
-            {
-                await CreateRecipeNotificationsAsync(recipe);
-            }
-
-            return (true, $"{approvedCount} recipe(s) approved successfully.", approvedCount);
-        }
-
-        public async Task<Recipe?> GetRecipeForDeclineAsync(int recipeId)
-        {
-            return await _context.Recipes
-                .Include(r => r.User)
-                .Include(r => r.RecipeIngredients)
-                .ThenInclude(ri => ri.Ingredient)
-                .FirstOrDefaultAsync(m => m.Id == recipeId);
-        }
-
-        private async Task CreateRecipeNotificationsAsync(Recipe recipe)
-        {
-            var allPrefs = await _context.UserMealPreferences
-                .Include(p => p.User)
-                .ToListAsync();
-
-            var userPreferences = allPrefs
-                .GroupBy(p => p.UserId)
-                .Select(g => new
-                {
-                    UserId = g.Key,
-                    Preferences = g.ToList(),
-                    User = g.First().User
-                })
-                .Where(u => u.UserId != recipe.UserId && u.User.NotifyRecipeMatchesTags)
-                .ToList();
-
-            foreach (var userPref in userPreferences)
-            {
-                var matchingTags = GetMatchingTags(userPref.Preferences, recipe.Protein, recipe.Carbs, recipe.Fat, recipe.Calories);
-
-                if (matchingTags.Any())
-                {
-                    var tagsText = string.Join(", ", matchingTags);
-
-                    var notification = new Notification
-                    {
-                        UserId = userPref.UserId,
-                        Type = "RecipeMatchesTags",
-                        Message = $"New recipe matches your preferences ({tagsText}): {recipe.Title}",
-                        RecipeId = recipe.Id,
-                        CreatedAt = DateTime.UtcNow,
-                        IsRead = false
-                    };
-
-                    _context.Notifications.Add(notification);
-
-                    await _notificationService.SendEmailAsync(
-                        userPref.User.Email,
-                        "New recipe matches your preferences",
-                        $"<p>Hi {userPref.User.UserName},</p><p>{notification.Message}</p>"
-                    );
-                }
-            }
-
-            await _context.SaveChangesAsync();
-        }
-
-        private List<string> GetMatchingTags(List<UserMealPreference> preferences, float protein, float carbs, float fat, float calories)
-        {
-            var matchingTags = new List<string>();
-
-            foreach (var pref in preferences)
-            {
-                bool matches = pref.Tag switch
-                {
-                    "high-protein" => pref.ThresholdValue.HasValue ? protein >= pref.ThresholdValue.Value : protein >= 30,
-                    "low-carb" => pref.ThresholdValue.HasValue ? carbs <= pref.ThresholdValue.Value : carbs <= 20,
-                    "high-carb" => pref.ThresholdValue.HasValue ? carbs >= pref.ThresholdValue.Value : carbs >= 50,
-                    "low-fat" => pref.ThresholdValue.HasValue ? fat <= pref.ThresholdValue.Value : fat <= 15,
-                    "high-fat" => pref.ThresholdValue.HasValue ? fat >= pref.ThresholdValue.Value : fat >= 30,
-                    "low-calorie" => pref.ThresholdValue.HasValue ? calories <= pref.ThresholdValue.Value : calories <= 300,
-                    "high-calorie" => pref.ThresholdValue.HasValue ? calories >= pref.ThresholdValue.Value : calories >= 600,
-                    "balanced" => IsBalanced(protein, carbs, fat, calories),
-                    _ => false
-                };
-
-                if (matches)
-                {
-                    matchingTags.Add(pref.Tag);
-                }
-            }
-
-            return matchingTags;
-        }
-
-        private bool IsBalanced(float protein, float carbs, float fat, float calories)
-        {
-            if (calories <= 0) return false;
-
-            float proteinRatio = (protein * 4) / calories * 100;
-            float carbRatio = (carbs * 4) / calories * 100;
-            float fatRatio = (fat * 9) / calories * 100;
-
-            return proteinRatio >= 20 && proteinRatio <= 35 &&
-                carbRatio >= 30 && carbRatio <= 50 &&
-                fatRatio >= 20 && fatRatio <= 35;
-        }
-    }
-}
Index: triMatch/Services/RecipeService.cs
===================================================================
--- NutriMatch/Services/RecipeService.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,319 +1,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Threading.Tasks;
-using Microsoft.EntityFrameworkCore;
-using NutriMatch.Data;
-using NutriMatch.Models;
-
-namespace NutriMatch.Services
-{
-    public class RecipeService : IRecipeService
-    {
-        private readonly AppDbContext _context;
-        private readonly IRecipeTagService _recipeTagService;
-
-        public RecipeService(AppDbContext context, IRecipeTagService recipeTagService)
-        {
-            _context = context;
-            _recipeTagService = recipeTagService;
-        }
-
-        public async Task<(List<Recipe> recipes, int totalRecipes)> GetPaginatedRecipesAsync(int page, int pageSize)
-        {
-            var totalRecipes = await _context.Recipes
-                .Where(r => r.RecipeStatus == "Accepted")
-                .CountAsync();
-
-            var recipes = await _context.Recipes
-                .Where(r => r.RecipeStatus == "Accepted")
-                .Include(r => r.User)
-                .Include(r => r.Ratings)
-                .OrderByDescending(r => r.CreatedAt)
-                .Skip((page - 1) * pageSize)
-                .Take(pageSize)
-                .ToListAsync();
-
-            foreach (var recipe in recipes)
-            {
-                recipe.Rating = recipe.Ratings.Any() ? recipe.Ratings.Average(r => r.Rating) : 0;
-            }
-
-            return (recipes, totalRecipes);
-        }
-
-        public async Task<List<int>> GetUserFavoriteRecipeIdsAsync(string userId)
-        {
-            if (string.IsNullOrEmpty(userId))
-            {
-                return new List<int>();
-            }
-
-            return await _context.FavoriteRecipes
-                .Where(fr => fr.UserId == userId)
-                .Select(fr => fr.RecipeId)
-                .ToListAsync();
-        }
-
-        public async Task<Recipe> GetRecipeByIdAsync(int id)
-        {
-            return await _context.Recipes
-                .Include(r => r.User)
-                .Include(r => r.RecipeIngredients)
-                .ThenInclude(ri => ri.Ingredient)
-                .FirstOrDefaultAsync(m => m.Id == id);
-        }
-
-        public async Task<(double averageRating, int totalRatings, double userRating, bool hasUserRated)> GetRatingDataAsync(int recipeId, string userId = null)
-        {
-            var ratings = await _context.RecipeRatings
-                .Where(r => r.RecipeId == recipeId)
-                .Select(r => new { r.Rating, r.UserId })
-                .ToListAsync();
-
-            var averageRating = ratings.Any() ? Math.Round(ratings.Average(r => r.Rating), 1) : 0;
-            var totalRatings = ratings.Count;
-
-            double userRating = 0;
-            bool hasUserRated = false;
-
-            if (!string.IsNullOrEmpty(userId))
-            {
-                var userRatingData = ratings.FirstOrDefault(r => r.UserId == userId);
-                if (userRatingData != null)
-                {
-                    userRating = userRatingData.Rating;
-                    hasUserRated = true;
-                }
-            }
-
-            return (averageRating, totalRatings, userRating, hasUserRated);
-        }
-
-        public async Task<bool> IsRecipeFavoritedAsync(string userId, int recipeId)
-        {
-            if (string.IsNullOrEmpty(userId))
-            {
-                return false;
-            }
-
-            return await _context.FavoriteRecipes
-                .AnyAsync(fr => fr.UserId == userId && fr.RecipeId == recipeId);
-        }
-
-        public async Task<List<Recipe>> GetUserRecipesAsync(string userId)
-        {
-            var userRecipes = await _context.Recipes
-                .Where(r => r.UserId == userId)
-                .Include(r => r.User)
-                .Include(r => r.Ratings)
-                .ToListAsync();
-
-            foreach (var recipe in userRecipes)
-            {
-                recipe.Rating = recipe.Ratings.Any() ? recipe.Ratings.Average(r => r.Rating) : 0;
-            }
-
-            return userRecipes;
-        }
-
-        public async Task<double> GetUserAverageRatingAsync(string userId)
-        {
-            var userRecipes = await _context.Recipes
-                .Where(r => r.UserId == userId)
-                .Select(r => r.Id)
-                .ToListAsync();
-
-            var ratings = await _context.RecipeRatings
-                .Where(r => userRecipes.Contains(r.RecipeId))
-                .GroupBy(r => r.RecipeId)
-                .Select(g => g.Average(r => r.Rating))
-                .ToListAsync();
-
-            if (ratings.Any())
-            {
-                return Math.Round(ratings.Average(), 1);
-            }
-
-            return 0;
-        }
-
-        public async Task<(Recipe recipe, float totalCalories, float totalProtein, float totalCarbs, float totalFat, bool hasPendingIngredients)> CalculateRecipeNutritionAsync(Recipe recipe, List<SelectedIngredient> ingredients)
-        {
-            float totalCalories = 0;
-            float totalProtein = 0;
-            float totalCarbs = 0;
-            float totalFat = 0;
-            bool hasPendingIngredients = false;
-
-            foreach (var i in ingredients)
-            {
-                var tempIngredient = await _context.Ingredients.FindAsync(i.Id);
-
-                if (tempIngredient != null)
-                {
-                    totalCalories += ConvertUnit(tempIngredient.Calories, i.Unit) * i.Quantity;
-                    totalProtein += ConvertUnit(tempIngredient.Protein, i.Unit) * i.Quantity;
-                    totalCarbs += ConvertUnit(tempIngredient.Carbs, i.Unit) * i.Quantity;
-                    totalFat += ConvertUnit(tempIngredient.Fat, i.Unit) * i.Quantity;
-
-                    if (tempIngredient.Status == "Pending")
-                    {
-                        hasPendingIngredients = true;
-                    }
-                }
-            }
-
-            return (recipe, totalCalories, totalProtein, totalCarbs, totalFat, hasPendingIngredients);
-        }
-
-        public async Task<Recipe> CreateRecipeAsync(Recipe recipe, List<SelectedIngredient> ingredients, string imageUrl)
-        {
-            recipe.ImageUrl = imageUrl;
-            recipe.Type = new List<string> { " " };
-            
-            _context.Add(recipe);
-            await _context.SaveChangesAsync();
-
-            var (_, totalCalories, totalProtein, totalCarbs, totalFat, hasPendingIngredients) = 
-                await CalculateRecipeNutritionAsync(recipe, ingredients);
-
-            foreach (var i in ingredients)
-            {
-                _context.RecipeIngredients.Add(new RecipeIngredient
-                {
-                    RecipeId = recipe.Id,
-                    IngredientId = i.Id,
-                    Unit = i.Unit,
-                    Quantity = i.Quantity
-                });
-            }
-
-            recipe.Calories = MathF.Round(totalCalories, MidpointRounding.AwayFromZero);
-            recipe.Protein = MathF.Round(totalProtein, MidpointRounding.AwayFromZero);
-            recipe.Carbs = MathF.Round(totalCarbs, MidpointRounding.AwayFromZero);
-            recipe.Fat = MathF.Round(totalFat, MidpointRounding.AwayFromZero);
-            recipe.HasPendingIngredients = hasPendingIngredients;
-            recipe.Type = _recipeTagService.GenerateRecipeTags(recipe, ingredients);
-
-            _context.Update(recipe);
-            await _context.SaveChangesAsync();
-
-            return recipe;
-        }
-
-        public async Task<Recipe> UpdateRecipeAsync(Recipe recipe, List<SelectedIngredient> ingredients, string imageUrl)
-        {
-            recipe.ImageUrl = imageUrl;
-
-            await _context.RecipeIngredients
-                .Where(ri => ri.RecipeId == recipe.Id)
-                .ExecuteDeleteAsync();
-
-            var (_, totalCalories, totalProtein, totalCarbs, totalFat, _) = 
-                await CalculateRecipeNutritionAsync(recipe, ingredients);
-
-            foreach (var i in ingredients)
-            {
-                _context.RecipeIngredients.Add(new RecipeIngredient
-                {
-                    RecipeId = recipe.Id,
-                    IngredientId = i.Id,
-                    Unit = i.Unit,
-                    Quantity = i.Quantity
-                });
-            }
-
-            recipe.Calories = MathF.Round(totalCalories, MidpointRounding.AwayFromZero);
-            recipe.Protein = MathF.Round(totalProtein, MidpointRounding.AwayFromZero);
-            recipe.Carbs = MathF.Round(totalCarbs, MidpointRounding.AwayFromZero);
-            recipe.Fat = MathF.Round(totalFat, MidpointRounding.AwayFromZero);
-            recipe.Type = _recipeTagService.GenerateRecipeTags(recipe, ingredients);
-
-            _context.Update(recipe);
-            await _context.SaveChangesAsync();
-
-            return recipe;
-        }
-
-        public async Task DeleteRecipeAsync(int recipeId)
-        {
-            var recipe = await _context.Recipes.FindAsync(recipeId);
-            if (recipe != null)
-            {
-                _context.Recipes.Remove(recipe);
-                await _context.SaveChangesAsync();
-            }
-        }
-
-        public float ConvertUnit(float number, string unit)
-        {
-            float result;
-            switch (unit.ToLower())
-            {
-                case "g":
-                case "ml":
-                    result = number / 100;
-                    break;
-                case "oz":
-                    result = (float)(number * 28.3495 / 100);
-                    break;
-                case "tbsp":
-                    result = (float)(number * 15 / 100);
-                    break;
-                case "tsp":
-                    result = (float)(number * 5 / 100);
-                    break;
-                case "cup":
-                    result = (float)(number * 240 / 100);
-                    break;
-                default:
-                    return 0;
-            }
-
-            return result;
-        }
-
-        public async Task<(bool success, string message, bool isFavorited)> ToggleFavoriteAsync(string userId, int recipeId)
-        {
-            if (string.IsNullOrEmpty(userId))
-            {
-                return (false, "User not authenticated", false);
-            }
-
-            var recipe = await _context.Recipes.FindAsync(recipeId);
-            if (recipe == null)
-            {
-                return (false, "Recipe not found", false);
-            }
-
-            var existingFavorite = await _context.FavoriteRecipes
-                .FirstOrDefaultAsync(fr => fr.UserId == userId && fr.RecipeId == recipeId);
-
-            bool isFavorited;
-            string message;
-
-            if (existingFavorite != null)
-            {
-                _context.FavoriteRecipes.Remove(existingFavorite);
-                isFavorited = false;
-                message = "Removed from favorites";
-            }
-            else
-            {
-                var favoriteRecipe = new FavoriteRecipe
-                {
-                    UserId = userId,
-                    RecipeId = recipeId
-                };
-                _context.FavoriteRecipes.Add(favoriteRecipe);
-                isFavorited = true;
-                message = "Added to favorites";
-            }
-
-            await _context.SaveChangesAsync();
-
-            return (true, message, isFavorited);
-        }
-    }
-}
Index: triMatch/Services/RecipeTagService.cs
===================================================================
--- NutriMatch/Services/RecipeTagService.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,185 +1,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using NutriMatch.Data;
-using NutriMatch.Models;
-
-namespace NutriMatch.Services
-{
-    public class RecipeTagService : IRecipeTagService
-    {
-        private readonly AppDbContext _context;
-
-        public RecipeTagService(AppDbContext context)
-        {
-            _context = context;
-        }
-
-        public List<string> GenerateRecipeTags(Recipe recipe, List<SelectedIngredient> ingredients)
-        {
-            var breakfastKeywords = new HashSet<string>(
-                _context.MealKeywords.Where(k => k.Tag == "breakfast").Select(k => k.Name),
-                StringComparer.OrdinalIgnoreCase
-            );
-
-            var mainKeywords = new HashSet<string>(
-                _context.MealKeywords.Where(k => k.Tag == "main").Select(k => k.Name),
-                StringComparer.OrdinalIgnoreCase
-            );
-
-            var snackKeywords = new HashSet<string>(
-                _context.MealKeywords.Where(k => k.Tag == "snack").Select(k => k.Name),
-                StringComparer.OrdinalIgnoreCase
-            );
-
-            var tags = new HashSet<string>();
-
-            var titleWords = recipe.Title.ToLower()
-                .Split(new char[] { ' ', '-', '_', ',', '.', '(', ')' }, StringSplitOptions.RemoveEmptyEntries);
-
-            var ingredientWords = new HashSet<string>();
-            foreach (var ing in ingredients)
-            {
-                var words = ing.Name.ToLower()
-                    .Split(new char[] { ' ', '-', '_', ',', '.', '(', ')' }, StringSplitOptions.RemoveEmptyEntries);
-                foreach (var w in words) ingredientWords.Add(w);
-            }
-
-            int breakfastScore = CountKeywordMatches(titleWords, breakfastKeywords, true) +
-                                CountKeywordMatches(ingredientWords, breakfastKeywords, false);
-
-            int mainScore = CountKeywordMatches(titleWords, mainKeywords, true) +
-                            CountKeywordMatches(ingredientWords, mainKeywords, false);
-
-            int snackScore = CountKeywordMatches(titleWords, snackKeywords, true) +
-                            CountKeywordMatches(ingredientWords, snackKeywords, false);
-
-            int lunchScore = mainScore;
-            int dinnerScore = mainScore;
-
-            float calories = Math.Max(recipe.Calories, 1);
-            float proteinRatio = (recipe.Protein * 4) / calories * 100;
-            float carbRatio = (recipe.Carbs * 4) / calories * 100;
-            float fatRatio = (recipe.Fat * 9) / calories * 100;
-
-            if (calories < 150)
-            {
-                snackScore += 5;
-                breakfastScore -= 2;
-                lunchScore -= 3;
-                dinnerScore -= 4;
-            }
-            else if (calories < 300)
-            {
-                snackScore += 3;
-                breakfastScore += 2;
-                lunchScore -= 1;
-                dinnerScore -= 2;
-            }
-            else if (calories < 450)
-            {
-                breakfastScore += 3;
-                lunchScore += 2;
-                snackScore -= 1;
-                dinnerScore -= 1;
-            }
-            else if (calories < 650)
-            {
-                lunchScore += 3;
-                dinnerScore += 2;
-                breakfastScore -= 1;
-                snackScore -= 3;
-            }
-            else
-            {
-                dinnerScore += 4;
-                lunchScore += 1;
-                breakfastScore -= 3;
-                snackScore -= 4;
-            }
-
-            // Protein ratio scoring
-            if (proteinRatio > 30)
-            {
-                dinnerScore += 3;
-                lunchScore += 2;
-                breakfastScore += 1;
-                snackScore -= 1;
-            }
-            else if (proteinRatio > 20)
-            {
-                dinnerScore += 2;
-                lunchScore += 1;
-            }
-            else if (proteinRatio < 10)
-            {
-                snackScore += 2;
-                dinnerScore -= 1;
-                lunchScore -= 1;
-            }
-
-            // Carb ratio scoring
-            if (carbRatio > 60)
-            {
-                breakfastScore += 2;
-                snackScore += 2;
-                dinnerScore -= 1;
-            }
-            else if (carbRatio < 20)
-            {
-                dinnerScore += 1;
-                lunchScore += 1;
-            }
-
-            // Fat ratio scoring
-            if (fatRatio > 40)
-            {
-                dinnerScore += 2;
-                snackScore += 1;
-                breakfastScore -= 1;
-            }
-
-            var results = new List<(string tag, int score)>
-            {
-                ("breakfast", breakfastScore),
-                ("lunch", lunchScore),
-                ("dinner", dinnerScore),
-                ("snack", snackScore)
-            }.OrderByDescending(x => x.score).ToList();
-
-            tags.Add(results[0].tag);
-
-            for (int i = 1; i < results.Count; i++)
-            {
-                if (results[i].score > 0 && results[i].score >= results[0].score * 0.6)
-                    tags.Add(results[i].tag);
-            }
-
-            return tags.ToList();
-        }
-
-        private string NormalizeWord(string word)
-        {
-            word = word.ToLower().Trim();
-            if (word.EndsWith("ies") && word.Length > 4)
-                return word.Substring(0, word.Length - 3) + "y";
-            if (word.EndsWith("es") && word.Length > 3)
-                return word.Substring(0, word.Length - 2);
-            if (word.EndsWith("s") && word.Length > 3 && !word.EndsWith("ss"))
-                return word.Substring(0, word.Length - 1);
-            return word;
-        }
-
-        private int CountKeywordMatches(IEnumerable<string> words, HashSet<string> keywords, bool isTitle = false)
-        {
-            int count = 0;
-            foreach (var word in words)
-            {
-                bool matches = keywords.Contains(word) || keywords.Contains(NormalizeWord(word));
-                if (matches)
-                    count += isTitle ? 3 : 1;
-            }
-            return count;
-        }
-    }
-}
Index: triMatch/Services/RestaurantService.cs
===================================================================
--- NutriMatch/Services/RestaurantService.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,436 +1,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Threading.Tasks;
-using Microsoft.EntityFrameworkCore;
-using NutriMatch.Data;
-using NutriMatch.Models;
-
-namespace NutriMatch.Services
-{
-    public class RestaurantService : IRestaurantService
-    {
-        private readonly AppDbContext _context;
-        private readonly IWebHostEnvironment _env;
-        private readonly IMealPlanService _mealPlanService;
-
-        private readonly IMealClassificationService _mealClassificationService;
-        private readonly INotificationService _notificationService;
-
-        public RestaurantService(
-            AppDbContext context,
-            IWebHostEnvironment env,
-            IMealPlanService mealPlanService,
-            INotificationService notificationService,
-            IMealClassificationService mealClassificationService
-          )
-        {
-            _context = context;
-            _env = env;
-            _mealPlanService = mealPlanService;
-            _notificationService = notificationService;
-          
-            _mealClassificationService = mealClassificationService;
-        }
-
-        public async Task<List<Restaurant>> GetAllRestaurantsAsync()
-        {
-            return await _context.Restaurants.ToListAsync();
-        }
-
-        public async Task<(Restaurant restaurant, List<RestaurantMeal> filteredMeals)> GetRestaurantWithFilteredMealsAsync(
-            int id,
-            int? minCalories,
-            int? maxCalories,
-            int? minProtein,
-            int? maxProtein,
-            int? minCarbs,
-            int? maxCarbs,
-            int? minFat,
-            int? maxFat)
-        {
-            var restaurant = await _context.Restaurants
-                .Include(r => r.RestaurantMeals)
-                .FirstOrDefaultAsync(m => m.Id == id);
-
-            if (restaurant == null)
-            {
-                return (null, null);
-            }
-
-            var filteredMeals = restaurant.RestaurantMeals
-                .Where(r =>
-                    (minCalories == null || r.Calories >= minCalories) &&
-                    (maxCalories == null || r.Calories <= maxCalories) &&
-                    (minProtein == null || r.Protein >= minProtein) &&
-                    (maxProtein == null || r.Protein <= maxProtein) &&
-                    (minFat == null || r.Fat >= minFat) &&
-                    (maxFat == null || r.Fat <= maxFat) &&
-                    (minCarbs == null || r.Carbs >= minCarbs) &&
-                    (maxCarbs == null || r.Carbs <= maxCarbs)
-                )
-                .ToList();
-
-            Console.WriteLine($"Total meals for restaurant {id}: {filteredMeals.Count}");
-
-            return (restaurant, filteredMeals);
-        }
-
-        public async Task<List<object>> GetRestaurantsAsync()
-        {
-            return await _context.Restaurants
-                .OrderBy(r => r.Name)
-                .Select(r => new { id = r.Id, name = r.Name })
-                .Cast<object>()
-                .ToListAsync();
-        }
-
-        public async Task<object?> GetRestaurantAsync(int id)
-        {
-            var restaurant = await _context.Restaurants.FindAsync(id);
-            if (restaurant == null)
-            {
-                return null;
-            }
-
-            return new
-            {
-                id = restaurant.Id,
-                name = restaurant.Name,
-                imageUrl = restaurant.ImageUrl,
-                description = restaurant.Description
-            };
-        }
-
-        public async Task<List<RestaurantMeal>> GetRestaurantMealsAsync(int restaurantId)
-        {
-            return await _context.RestaurantMeals
-                .Where(m => m.RestaurantId == restaurantId)
-                .OrderBy(m => m.ItemName)
-                .ToListAsync();
-        }
-
-        public async Task<(bool success, string message, int? restaurantId)> AddRestaurantAsync(string name, string description, string imagePath)
-        {
-            if (string.IsNullOrWhiteSpace(name))
-            {
-                return (false, "Restaurant name is required", null);
-            }
-
-            var restaurant = new Restaurant
-            {
-                Name = name,
-                Description = description,
-                ImageUrl = imagePath
-            };
-
-            _context.Restaurants.Add(restaurant);
-            await _context.SaveChangesAsync();
-
-            await CreateRestaurantNotificationsAsync(restaurant);
-
-            return (true, "Restaurant added successfully", restaurant.Id);
-        }
-
-        public async Task<(bool success, string message)> EditRestaurantAsync(int id, string name, string description, string? imagePath)
-        {
-            var restaurant = await _context.Restaurants.FindAsync(id);
-            if (restaurant == null)
-            {
-                return (false, "Restaurant not found");
-            }
-
-            if (string.IsNullOrWhiteSpace(name))
-            {
-                return (false, "Restaurant name is required");
-            }
-
-            restaurant.Name = name;
-            restaurant.Description = description;
-
-            if (!string.IsNullOrEmpty(imagePath))
-            {
-                if (!string.IsNullOrEmpty(restaurant.ImageUrl))
-                {
-                    var oldImagePath = Path.Combine(_env.WebRootPath, restaurant.ImageUrl.TrimStart('/'));
-                    if (File.Exists(oldImagePath))
-                    {
-                        File.Delete(oldImagePath);
-                    }
-                }
-
-                restaurant.ImageUrl = imagePath;
-            }
-
-            await _context.SaveChangesAsync();
-
-            return (true, "Restaurant updated successfully");
-        }
-
-        public async Task<(bool success, string message)> DeleteRestaurantAsync(int id)
-        {
-            if (id == 0)
-                return (false, "Invalid restaurant ID");
-
-            var restaurant = await _context.Restaurants
-                .Include(r => r.RestaurantMeals)
-                .Include(r => r.Followers)
-                .FirstOrDefaultAsync(r => r.Id == id);
-
-            if (restaurant == null)
-                return (false, "Restaurant not found");
-
-            if (restaurant.Followers != null && restaurant.Followers.Any())
-            {
-                _context.RestaurantFollowings.RemoveRange(restaurant.Followers);
-            }
-
-            if (restaurant.RestaurantMeals != null && restaurant.RestaurantMeals.Any())
-            {
-                foreach (var meal in restaurant.RestaurantMeals)
-                {
-                    await _mealPlanService.HandleDeletedRestaurantMealAsync(meal.Id);
-                }
-                _context.RestaurantMeals.RemoveRange(restaurant.RestaurantMeals);
-            }
-
-            if (!string.IsNullOrEmpty(restaurant.ImageUrl))
-            {
-                var imagePath = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot", restaurant.ImageUrl.TrimStart('/'));
-                if (File.Exists(imagePath))
-                {
-                    try
-                    {
-                        File.Delete(imagePath);
-                    }
-                    catch (Exception ex)
-                    {
-                        Console.WriteLine($"Failed to delete image file: {imagePath}. Error: {ex.Message}");
-                    }
-                }
-            }
-
-            _context.Restaurants.Remove(restaurant);
-            await _context.SaveChangesAsync();
-
-            return (true, $"Restaurant '{restaurant.Name}' and all related data deleted successfully");
-        }
-
-        public async Task<(bool success, string message)> AddRestaurantMealAsync(RestaurantMeal meal)
-        {
-            if (string.IsNullOrWhiteSpace(meal.ItemName))
-            {
-                return (false, "Meal name is required");
-            }
-
-            if (meal.RestaurantId == null || meal.RestaurantId == 0)
-            {
-                return (false, "Restaurant is required");
-            }
-
-            var restaurant = await _context.Restaurants.FindAsync(meal.RestaurantId);
-            if (restaurant == null)
-            {
-                return (false, "Restaurant not found");
-            }
-
-            meal.RestaurantName = restaurant.Name;
-
-            meal.Type = await _mealClassificationService.GenerateMealTypes(meal);
-
-            _context.RestaurantMeals.Add(meal);
-            await _context.SaveChangesAsync();
-
-            await CreateMealNotificationsAsync(meal, restaurant);
-
-            return (true, "Meal added successfully");
-        }
-
-        public async Task<(bool success, string message)> EditRestaurantMealAsync(RestaurantMeal meal)
-        {
-            if (meal == null || meal.Id == 0)
-                return (false, "Invalid meal");
-
-            var existing = await _context.RestaurantMeals.FindAsync(meal.Id);
-            if (existing == null)
-                return (false, "Meal not found");
-
-            existing.ItemName = meal.ItemName;
-            existing.ItemDescription = meal.ItemDescription;
-            existing.Type = await _mealClassificationService.GenerateMealTypes(meal);
-            existing.Calories = meal.Calories;
-            existing.Protein = meal.Protein;
-            existing.Carbs = meal.Carbs;
-            existing.Fat = meal.Fat;
-
-            await _context.SaveChangesAsync();
-
-            return (true, "Meal updated successfully");
-        }
-
-        public async Task<(bool success, string message)> DeleteRestaurantMealAsync(int id)
-        {
-            var meal = await _context.RestaurantMeals.FindAsync(id);
-            if (meal == null)
-            {
-                return (false, "Meal not found");
-            }
-
-            await _mealPlanService.HandleDeletedRestaurantMealAsync(id);
-
-            _context.RestaurantMeals.Remove(meal);
-            await _context.SaveChangesAsync();
-
-            return (true, "Meal deleted successfully");
-        }
-
-        private async Task CreateRestaurantNotificationsAsync(Restaurant restaurant)
-        {
-            var users = await _context.Users
-                .Where(u => u.NotifyNewRestaurant)
-                .ToListAsync();
-
-            foreach (var user in users)
-            {
-                var notification = new Notification
-                {
-                    UserId = user.Id,
-                    Type = "NewRestaurant",
-                    Message = "New restaurant added: " + restaurant.Name,
-                    RecipeId = restaurant.Id,
-                    CreatedAt = DateTime.UtcNow,
-                    IsRead = false
-                };
-
-                _context.Notifications.Add(notification);
-
-                await _notificationService.SendEmailAsync(
-                    user.Email,
-                    "New restaurant added!",
-                    $"<p>Hi {user.UserName},</p><p>New restaurant added: <b>{restaurant.Name}</b>.</p>"
-                );
-            }
-
-            await _context.SaveChangesAsync();
-        }
-
-        private async Task CreateMealNotificationsAsync(RestaurantMeal meal, Restaurant restaurant)
-        {
-            var followers = await _context.RestaurantFollowings
-                .Include(f => f.User)
-                .Where(f => f.RestaurantId == meal.RestaurantId && f.User.NotifyRestaurantNewMeal)
-                .Select(f => f.UserId)
-                .ToListAsync();
-
-            foreach (var userId in followers)
-            {
-                var notification = new Notification
-                {
-                    UserId = userId,
-                    Type = "RestaurantNewMeal",
-                    Message = $"{restaurant.Name} added a new meal: {meal.ItemName}",
-                    RecipeId = restaurant.Id,
-                    CreatedAt = DateTime.UtcNow,
-                    IsRead = false
-                };
-                _context.Notifications.Add(notification);
-
-                var follower = await _context.Users.FindAsync(userId);
-                if (follower != null)
-                {
-                    await _notificationService.SendEmailAsync(
-                        follower.Email,
-                        "New meal added",
-                        $"<p>Hi {follower.UserName},</p><p>{restaurant.Name} added a new meal: <b>{meal.ItemName}</b>.</p>"
-                    );
-                }
-            }
-
-            var allPrefs = await _context.UserMealPreferences
-                .Include(p => p.User)
-                .ToListAsync();
-
-            var userPreferences = allPrefs
-                .GroupBy(p => p.UserId)
-                .Select(g => new
-                {
-                    UserId = g.Key,
-                    Preferences = g.ToList(),
-                    User = g.First().User
-                })
-                .Where(u => !followers.Contains(u.UserId) && u.User.NotifyMealMatchesTags)
-                .ToList();
-
-            foreach (var userPref in userPreferences)
-            {
-                var matchingTags = GetMatchingTags(userPref.Preferences, meal.Protein, meal.Carbs, meal.Fat, meal.Calories);
-
-                if (matchingTags.Any())
-                {
-                    var tagsText = string.Join(", ", matchingTags);
-
-                    var notification = new Notification
-                    {
-                        UserId = userPref.UserId,
-                        Type = "MealMatchesTags",
-                        Message = $"New meal matches your preferences ({tagsText}): {meal.ItemName} at {restaurant.Name}",
-                        RecipeId = restaurant.Id,
-                        CreatedAt = DateTime.UtcNow,
-                        IsRead = false
-                    };
-                    _context.Notifications.Add(notification);
-
-                    await _notificationService.SendEmailAsync(
-                        userPref.User.Email,
-                        "New meal matches your preferences",
-                        $"<p>Hi {userPref.User.UserName},</p><p>{notification.Message}</p>"
-                    );
-                }
-            }
-
-            await _context.SaveChangesAsync();
-        }
-
-        private List<string> GetMatchingTags(List<UserMealPreference> preferences, float protein, float carbs, float fat, float calories)
-        {
-            var matchingTags = new List<string>();
-
-            foreach (var pref in preferences)
-            {
-                bool matches = pref.Tag switch
-                {
-                    "high-protein" => pref.ThresholdValue.HasValue ? protein >= pref.ThresholdValue.Value : protein >= 30,
-                    "low-carb" => pref.ThresholdValue.HasValue ? carbs <= pref.ThresholdValue.Value : carbs <= 20,
-                    "high-carb" => pref.ThresholdValue.HasValue ? carbs >= pref.ThresholdValue.Value : carbs >= 50,
-                    "low-fat" => pref.ThresholdValue.HasValue ? fat <= pref.ThresholdValue.Value : fat <= 15,
-                    "high-fat" => pref.ThresholdValue.HasValue ? fat >= pref.ThresholdValue.Value : fat >= 30,
-                    "low-calorie" => pref.ThresholdValue.HasValue ? calories <= pref.ThresholdValue.Value : calories <= 300,
-                    "high-calorie" => pref.ThresholdValue.HasValue ? calories >= pref.ThresholdValue.Value : calories >= 600,
-                    "balanced" => IsBalanced(protein, carbs, fat, calories),
-                    _ => false
-                };
-
-                if (matches)
-                {
-                    matchingTags.Add(pref.Tag);
-                }
-            }
-
-            return matchingTags;
-        }
-
-        private bool IsBalanced(float protein, float carbs, float fat, float calories)
-        {
-            if (calories <= 0) return false;
-
-            float proteinRatio = (protein * 4) / calories * 100;
-            float carbRatio = (carbs * 4) / calories * 100;
-            float fatRatio = (fat * 9) / calories * 100;
-
-            return proteinRatio >= 20 && proteinRatio <= 35 &&
-                   carbRatio >= 30 && carbRatio <= 50 &&
-                   fatRatio >= 20 && fatRatio <= 35;
-        }
-    }
-
-}
Index: triMatch/Services/UserPreferenceService.cs
===================================================================
--- NutriMatch/Services/UserPreferenceService.cs	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,82 +1,0 @@
-using System.Collections.Generic;
-using System.Linq;
-using System.Threading.Tasks;
-using Microsoft.EntityFrameworkCore;
-using NutriMatch.Data;
-using NutriMatch.Models;
-
-namespace NutriMatch.Services
-{
-    public class UserPreferenceService : IUserPreferenceService
-    {
-        private readonly AppDbContext _context;
-
-        public UserPreferenceService(AppDbContext context)
-        {
-            _context = context;
-        }
-
-        public async Task<(List<object> preferences, List<int> followedRestaurants)> GetUserPreferencesAsync(string userId)
-        {
-            var preferences = await _context.UserMealPreferences
-                .Where(p => p.UserId == userId)
-                .Select(p => new
-                {
-                    tag = p.Tag,
-                    thresholdValue = p.ThresholdValue
-                })
-                .ToListAsync<object>();
-
-            var followedRestaurants = await _context.RestaurantFollowings
-                .Where(f => f.UserId == userId)
-                .Select(f => f.RestaurantId)
-                .ToListAsync();
-
-            return (preferences, followedRestaurants);
-        }
-
-        public async Task UpdateTagPreferencesAsync(string userId, List<UserMealPreference> preferences)
-        {
-            var existing = await _context.UserMealPreferences
-                .Where(p => p.UserId == userId)
-                .ToListAsync();
-            
-            _context.UserMealPreferences.RemoveRange(existing);
-
-            foreach (var pref in preferences)
-            {
-                _context.UserMealPreferences.Add(new UserMealPreference
-                {
-                    UserId = userId,
-                    Tag = pref.Tag,
-                    ThresholdValue = pref.ThresholdValue
-                });
-            }
-
-            await _context.SaveChangesAsync();
-        }
-
-        public async Task<(bool success, bool following)> ToggleFollowRestaurantAsync(string userId, int restaurantId)
-        {
-            var existing = await _context.RestaurantFollowings
-                .FirstOrDefaultAsync(f => f.UserId == userId && f.RestaurantId == restaurantId);
-
-            if (existing != null)
-            {
-                _context.RestaurantFollowings.Remove(existing);
-                await _context.SaveChangesAsync();
-                return (true, false);
-            }
-            else
-            {
-                _context.RestaurantFollowings.Add(new RestaurantFollowing
-                {
-                    UserId = userId,
-                    RestaurantId = restaurantId,
-                });
-                await _context.SaveChangesAsync();
-                return (true, true);
-            }
-        }
-    }
-}
Index: triMatch/Views/Admin/Index.cshtml
===================================================================
--- NutriMatch/Views/Admin/Index.cshtml	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,261 +1,0 @@
-@model List<NutriMatch.Models.Recipe>
-@{
-    Layout = "_Layout";
-}
-<!DOCTYPE html>
-<html lang="en">
-<head>
-    <meta charset="UTF-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <link href="~/css/RecipeIndex.css" rel="stylesheet">
-    <link href="~/css/AdminIndex.css" rel="stylesheet">
-    <title>NutriMatch - Admin Panel</title>
-</head>
-
-<style>
-/* Admin Management Section Styles */
-
-.admin-management-section {
-    padding: 15px 0;
-}
-
-.admin-management-section .btn {
-    background: white;
-    border: 1px solid #e0e0e0;
-    border-radius: 8px;
-    padding: 20px 24px;
-    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
-    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.06);
-    position: relative;
-    overflow: hidden;
-}
-
-.admin-management-section .btn:hover {
-    transform: translateY(-1px);
-    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
-    border-color: #d0d0d0;
-}
-
-.admin-management-section .btn-outline-primary:hover {
-    background: #f8f9ff;
-    border-color: #4a6fa5;
-    color: #4a6fa5;
-}
-
-.admin-management-section .btn-outline-success:hover {
-    background: #f6fef9;
-    border-color: #198754;
-    color: #198754;
-}
-
-.admin-management-section .btn i {
-    font-size: 1.3rem;
-    display: inline-block;
-    vertical-align: middle;
-    margin-right: 8px;
-}
-
-.admin-management-section .btn strong {
-    font-size: 1rem;
-    font-weight: 600;
-    display: inline-block;
-    vertical-align: middle;
-}
-
-.admin-management-section .btn .small {
-    font-size: 0.8rem;
-    opacity: 0.65;
-    display: block;
-    margin-top: 4px;
-    font-weight: 400;
-}
-</style>
-<body>
-    @Html.AntiForgeryToken()
-    <div class="container mt-4">
-        <div class="admin-header mb-4">
-            <div class="row align-items-center">
-                <div class="col-md-8">
-                    <h2 class="admin-title">
-                        <i class="fas fa-shield-alt me-2" style="color: var(--nutri-green);"></i>
-                        Admin Panel
-                    </h2>
-                </div>
-                <div class="col-md-4 text-end">
-                    <div class="admin-stats">
-                        <span class="badge bg-warning fs-6 me-2">
-                            <i class="fas fa-clock me-1"></i>
-                            @Model.Count Pending
-                        </span>
-                    </div>
-                </div>
-            </div>
-        </div>
-
-        <!-- NEW ADMIN MANAGEMENT BUTTONS -->
-        <div class="admin-management-section mb-4">
-            <div class="row g-3">
-                <div class="col-md-6">
-                    <button class="btn btn-outline-primary w-100 py-3" onclick="openMealTagsModal()">
-                        <i class="fas fa-tags me-2"></i>
-                        <strong>Manage Meal Tags</strong>
-                        <div class="small text-muted">Add or remove meal type keywords</div>
-                    </button>
-                </div>
-                <div class="col-md-6">
-                    <button class="btn btn-outline-success w-100 py-3" onclick="openRestaurantMealsModal()">
-                        <i class="fas fa-utensils me-2"></i>
-                        <strong>Manage Restaurants And Meals</strong>
-                        <div class="small text-muted">Add or remove meals from restaurants</div>
-                    </button>
-                </div>
-            </div>
-        </div>
-
-        <div class="search-container">
-            <div class="row align-items-center">
-                <div class="col-md-8">
-                    <input type="text" class="form-control search-input" placeholder="Search pending recipes..."
-                        id="searchInput">
-                </div>
-                <div class="col-md-4">
-                    <select class="form-select" id="sortFilter">
-                        <option value="newest">Newest First</option>
-                        <option value="oldest">Oldest First</option>
-                        <option value="author">By Author</option>
-                        <option value="calories">By Calories</option>
-                    </select>
-                </div>
-            </div>
-        </div>
-        <div class="bulk-actions-section mb-4" id="bulkActionsSection">
-            <div class="row align-items-center">
-                <div class="col-md-6">
-                    <div class="form-check">
-                        <input class="form-check-input" type="checkbox" id="selectAll">
-                        <label class="form-check-label fw-bold" for="selectAll">
-                            Select All Recipes
-                        </label>
-                    </div>
-                </div>
-                <div class="col-md-6 text-end">
-                    <button class="btn btn-success" id="bulkApprove" disabled>
-                        <i class="fas fa-check me-1"></i>Bulk Approve
-                    </button>
-                </div>
-            </div>
-        </div>
-        <div class="d-flex justify-content-between align-items-center mb-4">
-            <div class="results-count">
-                <i class="fas fa-utensils me-2"></i>
-                Showing <strong id="displayCount">@Model.Count</strong> pending recipes
-            </div>
-            <div class="admin-actions">
-            </div>
-        </div>
-        <div class="recipe-grid" id="recipeGrid">
-            @foreach (var recipe in Model)
-            {
-                <div class="recipe-card admin-recipe-card" data-recipe-id="@recipe.Id" data-calories="@recipe.Calories"
-                    data-protein="@recipe.Protein" data-carbs="@recipe.Carbs" data-fat="@recipe.Fat">
-                    <div class="recipe-select">
-                        <input type="checkbox" class="recipe-checkbox" data-recipe-id="@recipe.Id">
-                    </div>
-                    <div class="recipe-status-badge">
-                        <span class="badge bg-warning">
-                            <i class="fas fa-clock me-1"></i>Pending
-                        </span>
-                    </div>
-                    <img src="@recipe.ImageUrl" alt="@recipe.Title" class="recipe-image"
-                        onclick="showRecipeDetails(@recipe.Id, true,'Buttons')">
-                    <div class="recipe-content">
-                        <h3 class="recipe-title" onclick="showRecipeDetails(@recipe.Id, true, 'Buttons')">
-                            @(recipe.Title.Length > 30
-                                                    ? recipe.Title.Substring(0, 30) + "…"
-                                                    : recipe.Title)</h3>
-                        <div class="recipe-meta">
-                            <span>
-                                <i class="fas fa-user"></i>
-                                @(recipe.User.UserName.Length > 23
-                                                            ? recipe.User.UserName.Substring(0, 23) + "…"
-                                                            : recipe.User.UserName)
-                            </span>
-                            <span><i class="fas fa-calendar"></i>@recipe.CreatedAt.ToString("MMM dd, yyyy")</span>
-                        </div>
-                        <div class="recipe-macros">
-                            <div class="macro-item">
-                                <div class="macro-value">@recipe.Calories</div>
-                                <div class="macro-label">Cal</div>
-                            </div>
-                            <div class="macro-item">
-                                <div class="macro-value">@recipe.Protein</div>
-                                <div class="macro-label">Protein</div>
-                            </div>
-                            <div class="macro-item">
-                                <div class="macro-value">@recipe.Carbs</div>
-                                <div class="macro-label">Carbs</div>
-                            </div>
-                            <div class="macro-item">
-                                <div class="macro-value">@recipe.Fat</div>
-                                <div class="macro-label">Fats</div>
-                            </div>
-                        </div>
-                    </div>
-                </div>
-            }
-        </div>
-        @if (!Model.Any())
-        {
-            <div class="empty-state text-center py-5">
-                <i class="fas fa-check-circle text-success" style="font-size: 4rem;"></i>
-                <h3 class="mt-3">All Caught Up!</h3>
-                <p class="text-muted">There are no pending recipes to review at this time.</p>
-                <button class="btn btn-primary" onclick="window.location.reload()">
-                    <i class="fas fa-sync-alt me-1"></i>Check Again
-                </button>
-            </div>
-        }
-    </div>
-    <div id="modalWindow"></div>
-    <div id="loadingOverlay" class="loading-overlay" style="display: none;">
-        <div class="spinner-border text-primary" role="status">
-            <span class="visually-hidden">Processing...</span>
-        </div>
-        <p class="mt-3">Processing request...</p>
-    </div>
-    <div id="toast-container" class="toast-container"></div>
-    <div id="declineModalContainer"></div>
-
-    <!-- Meal Tags Management Modal Container -->
-    <div id="mealTagsModalContainer"></div>
-
-    <!-- Restaurant Meals Management Modal Container -->
-    <div id="restaurantMealsModalContainer"></div>
-
-    <div class="modal fade" id="ingredientReviewModal" tabindex="-1" aria-labelledby="ingredientReviewModalLabel"
-        aria-hidden="true">
-        <div class="modal-dialog modal-lg">
-            <div class="modal-content">
-                <div class="modal-header">
-                    <h5 class="modal-title" id="ingredientReviewModalLabel">Ingredient Review</h5>
-                    <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
-                </div>
-                <div class="modal-body">
-                    <div id="ingredientReviewContent">
-                        <div class="text-center">
-                            <div class="spinner-border" role="status">
-                                <span class="visually-hidden">Loading...</span>
-                            </div>
-                        </div>
-                    </div>
-                </div>
-                <div class="modal-footer">
-                    <button onclick="showRecipeModal()" type="button" class="btn btn-secondary"
-                        data-bs-dismiss="modal">Close</button>
-                </div>
-            </div>
-        </div>
-    </div>
-    <script src="~/js/AdminIndex.js"></script>
-</body>
-</html>
Index: triMatch/Views/Admin/_IngredientReviewPartial.cshtml
===================================================================
--- NutriMatch/Views/Admin/_IngredientReviewPartial.cshtml	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,111 +1,0 @@
-@model NutriMatch.Models.Ingredient
-
-<div class="ingredient-review-container">
-    <div class="ingredient-header mb-3">
-        <h5 class="ingredient-name">@Model.Name</h5>
-        <small class="text-muted">Nutritional values per 100g</small>
-    </div>
-
-    <div class="nutrition-grid">
-        <div class="nutrition-item">
-            <div class="nutrition-label">
-                <i class="fas fa-fire text-danger"></i>
-                <span>Calories</span>
-            </div>
-            <div class="nutrition-value">@Model.Calories kcal</div>
-        </div>
-
-        <div class="nutrition-item">
-            <div class="nutrition-label">
-                <i class="fas fa-drumstick-bite" style="color: #8b5cf6;"></i>
-                <span>Protein</span>
-            </div>
-            <div class="nutrition-value">@Model.Protein g</div>
-        </div>
-
-        <div class="nutrition-item">
-            <div class="nutrition-label">
-                <i class="fas fa-bread-slice" style="color: #f59e0b;"></i>
-                <span>Carbs</span>
-            </div>
-            <div class="nutrition-value">@Model.Carbs g</div>
-        </div>
-
-        <div class="nutrition-item">
-            <div class="nutrition-label">
-                <i class="fas fa-tint me-1" style="color: #e5eb4dfa;"></i>
-                <span>Fats</span>
-            </div>
-            <div class="nutrition-value">@Model.Fat g</div>
-        </div>
-    </div>
-
-
-
-
-</div>
-
-<style>
-    .ingredient-review-container {
-        padding: 20px;
-    }
-
-    .ingredient-name {
-        color: #2c3e50;
-        font-weight: 600;
-        margin-bottom: 5px;
-    }
-
-    .nutrition-grid {
-        display: grid;
-        grid-template-columns: 1fr 1fr;
-        gap: 15px;
-        margin: 20px 0;
-    }
-
-    .nutrition-item {
-        background-color: #f8f9fa;
-        border: 1px solid #e9ecef;
-        border-radius: 8px;
-        padding: 15px;
-        text-align: center;
-    }
-
-    .nutrition-label {
-        display: flex;
-        align-items: center;
-        justify-content: center;
-        margin-bottom: 8px;
-        font-size: 14px;
-        color: #6c757d;
-        font-weight: 500;
-    }
-
-    .nutrition-label i {
-        margin-right: 6px;
-    }
-
-    .nutrition-value {
-        font-size: 18px;
-        font-weight: 600;
-        color: #2c3e50;
-    }
-
-    .submission-info {
-        background-color: #f1f3f4;
-        border-radius: 6px;
-        padding: 10px;
-        border-left: 4px solid #007bff;
-    }
-
-    .action-buttons {
-        display: flex;
-        gap: 10px;
-        justify-content: center;
-    }
-
-    .action-buttons .btn {
-        min-width: 120px;
-        font-weight: 500;
-    }
-</style>
Index: triMatch/Views/Admin/_MealTagsPartial.cshtml
===================================================================
--- NutriMatch/Views/Admin/_MealTagsPartial.cshtml	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,127 +1,0 @@
-<div class="modal fade" id="mealTagsModal" tabindex="-1" aria-labelledby="mealTagsModalLabel" aria-hidden="true">
-    <div class="modal-dialog modal-lg">
-        <div class="modal-content">
-            <div class="modal-header bg-primary text-white">
-                <h5 class="modal-title" id="mealTagsModalLabel">
-                    <i class="fas fa-tags me-2"></i>Manage Meal Tags
-                </h5>
-                <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal"
-                    aria-label="Close"></button>
-            </div>
-            <div class="modal-body">
-                <!-- Add New Keyword Section -->
-                <div class="add-keyword-section mb-4 p-3 bg-light rounded">
-                    <h6 class="mb-3">
-                        <i class="fas fa-plus-circle me-2"></i>Add New Keyword
-                    </h6>
-                    <div class="row g-3">
-                        <div class="col-md-8">
-                            <label for="newKeywordName" class="form-label">Keyword Name</label>
-                            <input type="text" class="form-control" id="newKeywordName"
-                                placeholder="e.g., pancakes, cereal, pizza">
-                        </div>
-                        <div class="col-md-4">
-                            <label for="newKeywordTag" class="form-label">Meal Type</label>
-                            <select class="form-select" id="newKeywordTag">
-                                <option value="breakfast">Breakfast</option>
-                                <option value="main">Main</option>
-                                <option value="snack">Snack</option>
-                            </select>
-                        </div>
-                        <div class="col-12">
-                            <button class="btn btn-primary w-100" onclick="addMealKeyword()">
-                                <i class="fas fa-plus me-2"></i>Add Keyword
-                            </button>
-                        </div>
-                    </div>
-                </div>
-
-                <hr>
-
-                <!-- Existing Keywords Section -->
-                <div class="existing-keywords-section">
-                    <h6 class="mb-3">
-                        <i class="fas fa-list me-2"></i>Existing Keywords
-                    </h6>
-                    <div id="mealKeywordsList">
-                        <div class="text-center py-4">
-                            <div class="spinner-border text-primary" role="status">
-                                <span class="visually-hidden">Loading...</span>
-                            </div>
-                        </div>
-                    </div>
-                </div>
-            </div>
-            <div class="modal-footer">
-                <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
-            </div>
-        </div>
-    </div>
-</div>
-
-<style>
-    .tag-group {
-        border: 1px solid #e0e0e0;
-        border-radius: 8px;
-        padding: 15px;
-        background-color: #f8f9fa;
-    }
-
-    .tag-header {
-        margin-bottom: 15px;
-        padding-bottom: 10px;
-        border-bottom: 2px solid #dee2e6;
-    }
-
-    .keyword-list {
-        display: flex;
-        flex-wrap: wrap;
-        gap: 10px;
-    }
-
-    .keyword-item {
-        display: flex;
-        align-items: center;
-        gap: 8px;
-        background-color: white;
-        padding: 8px 12px;
-        border-radius: 6px;
-        border: 1px solid #dee2e6;
-    }
-
-    .keyword-name {
-        font-weight: 500;
-        color: #333;
-    }
-
-    .add-keyword-section {
-        border: 2px dashed #0d6efd;
-    }
-</style>
-
-<script>
-    (function () {
-        const modalElement = document.getElementById('mealTagsModal');
-        if (modalElement) {
-            modalElement.addEventListener('shown.bs.modal', function () {
-                console.log('Meal Tags Modal shown, loading keywords...');
-                loadMealKeywords();
-            });
-
-            if (modalElement.classList.contains('show')) {
-                console.log('Modal already shown, loading keywords...');
-                loadMealKeywords();
-            }
-        }
-    })();
-
-    const keywordInput = document.getElementById('newKeywordName');
-    if (keywordInput) {
-        keywordInput.addEventListener('keypress', function (e) {
-            if (e.key === 'Enter') {
-                e.preventDefault();
-                addMealKeyword();
-            }
-        });
-    }
-</script>
Index: triMatch/Views/Admin/_RecipeDeclineAdminPartial.cshtml
===================================================================
--- NutriMatch/Views/Admin/_RecipeDeclineAdminPartial.cshtml	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,271 +1,0 @@
-@model NutriMatch.Models.Recipe
-<div class="modal fade" id="recipeDeclineModal" tabindex="-1" aria-labelledby="recipeDeclineModalLabel"
-    aria-hidden="true">
-    <div class="modal-dialog modal-dialog-centered">
-        <div class="modal-content">
-            <div class="modal-header bg-danger text-white">
-                <h5 class="modal-title" id="recipeDeclineModalLabel">
-                    <i class="fas fa-times-circle me-2"></i>
-                    Decline Recipe
-                </h5>
-                <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal"
-                    aria-label="Close"></button>
-            </div>
-            <div class="modal-body">
-                <div class="recipe-info-section mb-4">
-                    <div class="row">
-                        <div class="col-3">
-                            <img src="@Model.ImageUrl" alt="@Model.Title" class="img-fluid rounded shadow-sm">
-                        </div>
-                        <div class="col-9">
-                            <h6 class="fw-bold mb-2">@Model.Title</h6>
-                            <p class="text-muted mb-1">
-                                <i class="fas fa-user me-1"></i>
-                                By @Model.User.UserName
-                            </p>
-                            <p class="text-muted mb-0">
-                                <i class="fas fa-calendar me-1"></i>
-                                Submitted @Model.CreatedAt.ToString("MMM dd, yyyy")
-                            </p>
-                        </div>
-                    </div>
-                </div>
-                <hr>
-                <form id="declineForm">
-                    <input type="hidden" id="declineRecipeId" value="@Model.Id">
-                    <div class="mb-3">
-                        <label for="declineReason" class="form-label fw-bold text-danger">
-                            <i class="fas fa-exclamation-triangle me-1"></i>
-                            Reason for Decline <span class="text-danger">*</span>
-                        </label>
-                        <select class="form-select" id="declineReason" required>
-                            <option value="">Please select a reason...</option>
-                            <option value="inappropriate_content">Inappropriate Content</option>
-                            <option value="incomplete_recipe">Incomplete Recipe Information</option>
-                            <option value="poor_quality_image">Poor Quality Image</option>
-                            <option value="incorrect_nutrition">Incorrect Nutrition Information</option>
-                            <option value="duplicate_recipe">Duplicate Recipe</option>
-                            <option value="unsafe_instructions">Unsafe Cooking Instructions</option>
-                            <option value="invalid_ingredient">Invalid Ingredient</option>
-                            <option value="spam_content">Spam Content</option>
-                            <option value="other">Other (Please specify in notes)</option>
-                        </select>
-                        <div class="invalid-feedback">
-                            Please select a reason for declining this recipe.
-                        </div>
-                    </div>
-                    <div class="mb-3">
-                        <label for="declineNotes" class="form-label fw-bold">
-                            <i class="fas fa-sticky-note me-1"></i>
-                            Additional Notes <span class="text-muted">(Optional)</span>
-                        </label>
-                        <textarea class="form-control" id="declineNotes" rows="4"
-                            placeholder="Provide additional details about why this recipe is being declined. This information will help the user understand the decision and improve future submissions."
-                            maxlength="500"></textarea>
-                        <div class="form-text">
-                            <span id="notesCounter">0</span>/500 characters
-                        </div>
-                    </div>
-                    <div class="alert alert-warning d-flex align-items-center" role="alert">
-                        <i class="fas fa-info-circle me-2"></i>
-                        <div>
-                            <strong>Note:</strong> Once declined, the recipe will be removed from the pending list and
-                            the user will be notified of the decision.
-                        </div>
-                    </div>
-                </form>
-            </div>
-            <div class="modal-footer">
-                <button type="button" class="btn btn-outline-secondary" data-bs-dismiss="modal">
-                    <i class="fas fa-arrow-left me-1"></i>
-                    Cancel
-                </button>
-                <button type="button" class="btn btn-danger" id="confirmDeclineBtn" disabled>
-                    <i class="fas fa-times me-1"></i>
-                    Decline Recipe
-                </button>
-            </div>
-        </div>
-    </div>
-</div>
-<style>
-    .recipe-info-section {
-        background: #f8f9fa;
-        padding: 1rem;
-        border-radius: 8px;
-        border: 1px solid #e9ecef;
-    }
-    .recipe-info-section img {
-        width: 100%;
-        height: 60px;
-        object-fit: cover;
-    }
-    .modal-header.bg-danger {
-        border-bottom: 1px solid rgba(255, 255, 255, 0.2);
-    }
-    .form-label.fw-bold {
-        color: #495057;
-    }
-    .form-label .text-danger {
-        font-weight: normal;
-    }
-    .alert-warning {
-        background-color: #fff3cd;
-        border-color: #ffeaa7;
-        color: #856404;
-    }
-    #declineNotes:focus {
-        border-color: #dc3545;
-        box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);
-    }
-    .form-select:focus {
-        border-color: #dc3545;
-        box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);
-    }
-</style>
-<script>
-    document.addEventListener('DOMContentLoaded', function () {
-        initializeDeclineModal();
-    });
-    document.getElementById('recipeDeclineModal').addEventListener('shown.bs.modal', function () {
-        initializeDeclineModal();
-    });
-    function initializeDeclineModal() {
-        const declineReasonSelect = document.getElementById('declineReason');
-        const declineNotesTextarea = document.getElementById('declineNotes');
-        const confirmDeclineBtn = document.getElementById('confirmDeclineBtn');
-        const notesCounter = document.getElementById('notesCounter');
-        if (!declineReasonSelect || !confirmDeclineBtn) {
-            console.error('Required elements not found');
-            return;
-        }
-        const newDeclineReasonSelect = declineReasonSelect.cloneNode(true);
-        declineReasonSelect.parentNode.replaceChild(newDeclineReasonSelect, declineReasonSelect);
-        newDeclineReasonSelect.addEventListener('change', function () {
-            const confirmBtn = document.getElementById('confirmDeclineBtn');
-            if (confirmBtn) {
-                confirmBtn.disabled = !this.value;
-                console.log('Reason selected:', this.value, 'Button disabled:', confirmBtn.disabled);
-            }
-            if (this.value) {
-                this.classList.remove('is-invalid');
-            }
-        });
-        newDeclineReasonSelect.addEventListener('input', function () {
-            const confirmBtn = document.getElementById('confirmDeclineBtn');
-            if (confirmBtn) {
-                confirmBtn.disabled = !this.value;
-            }
-        });
-        if (declineNotesTextarea && notesCounter) {
-            declineNotesTextarea.addEventListener('input', function () {
-                const currentLength = this.value.length;
-                notesCounter.textContent = currentLength;
-                if (currentLength > 400) {
-                    notesCounter.style.color = '#dc3545';
-                } else if (currentLength > 300) {
-                    notesCounter.style.color = '#ffc107';
-                } else {
-                    notesCounter.style.color = '#6c757d';
-                }
-            });
-        }
-        confirmDeclineBtn.addEventListener('click', function () {
-            const recipeId = document.getElementById('declineRecipeId').value;
-            const reasonSelect = document.getElementById('declineReason');
-            const reason = reasonSelect.value;
-            const notes = document.getElementById('declineNotes').value.trim();
-            if (!reason) {
-                reasonSelect.classList.add('is-invalid');
-                reasonSelect.focus();
-                return;
-            }
-            this.disabled = true;
-            this.innerHTML = '<span class="spinner-border spinner-border-sm me-1" role="status"></span>Processing...';
-            processRecipeDecline(recipeId, reason, notes);
-        });
-    }
-    function processRecipeDecline(recipeId, reason, notes) {
-        const tokenElement = document.querySelector('input[name="__RequestVerificationToken"]');
-        const token = tokenElement ? tokenElement.value : '';
-        fetch('/Admin/DeclineRecipe', {
-            method: 'POST',
-            headers: {
-                'Content-Type': 'application/json',
-                'X-Requested-With': 'XMLHttpRequest',
-                'RequestVerificationToken': token
-            },
-            body: JSON.stringify({
-                recipeId: parseInt(recipeId),
-                reason: reason,
-                notes: notes || ''
-            })
-        })
-            .then(response => {
-                console.log('Response status:', response.status);
-                if (!response.ok) {
-                    throw new Error(`HTTP error! status: ${response.status}`);
-                }
-                const contentType = response.headers.get('content-type');
-                if (!contentType || !contentType.includes('application/json')) {
-                    return response.text().then(text => {
-                        console.error('Non-JSON response:', text);
-                        throw new Error('Server returned non-JSON response');
-                    });
-                }
-                return response.json();
-            })
-            .then(data => {
-                if (data && data.success) {
-                    const modal = bootstrap.Modal.getInstance(document.getElementById('recipeDeclineModal'));
-                    modal.hide();
-                    showSuccess('Recipe declined successfully!');
-                    removeRecipeCard(recipeId);
-                } else {
-                    const errorMessage = data && data.message ? data.message : 'Failed to decline recipe';
-                    showError(errorMessage);
-                    resetDeclineButton();
-                }
-            })
-            .catch(error => {
-                console.error('Error details:', error);
-                let errorMessage = 'An error occurred while declining the recipe';
-                if (error.message.includes('HTTP error! status: 500')) {
-                    errorMessage = 'Server error occurred. Please check the server logs and try again.';
-                } else if (error.message.includes('non-JSON response')) {
-                    errorMessage = 'Server returned an unexpected response format.';
-                }
-                showError(errorMessage);
-                resetDeclineButton();
-            });
-    }
-    function resetDeclineButton() {
-        const confirmBtn = document.getElementById('confirmDeclineBtn');
-        const reasonSelect = document.getElementById('declineReason');
-        if (confirmBtn && reasonSelect) {
-            const reason = reasonSelect.value;
-            confirmBtn.disabled = !reason;
-            confirmBtn.innerHTML = '<i class="fas fa-times me-1"></i>Decline Recipe';
-        }
-    }
-    document.getElementById('recipeDeclineModal').addEventListener('hidden.bs.modal', function () {
-        const form = document.getElementById('declineForm');
-        if (form) {
-            form.reset();
-        }
-        const confirmBtn = document.getElementById('confirmDeclineBtn');
-        if (confirmBtn) {
-            confirmBtn.disabled = true;
-            confirmBtn.innerHTML = '<i class="fas fa-times me-1"></i>Decline Recipe';
-        }
-        const reasonSelect = document.getElementById('declineReason');
-        if (reasonSelect) {
-            reasonSelect.classList.remove('is-invalid');
-        }
-        const notesCounter = document.getElementById('notesCounter');
-        if (notesCounter) {
-            notesCounter.textContent = '0';
-            notesCounter.style.color = '#6c757d';
-        }
-    });
-</script>
Index: triMatch/Views/Admin/_RestaurantMealsManagementPartial.cshtml
===================================================================
--- NutriMatch/Views/Admin/_RestaurantMealsManagementPartial.cshtml	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,199 +1,0 @@
-<div class="modal fade" id="restaurantMealsModal" tabindex="-1" aria-labelledby="restaurantMealsModalLabel" aria-hidden="true">
-    <div class="modal-dialog modal-xl">
-        <div class="modal-content">
-            <div class="modal-header bg-success text-white">
-                <h5 class="modal-title" id="restaurantMealsModalLabel">
-                    <i class="fas fa-utensils me-2"></i>Manage Restaurant Meals
-                </h5>
-                <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal" aria-label="Close"></button>
-            </div>
-            <div class="modal-body">
-                <!-- Restaurant Selection -->
-                <div class="restaurant-select-section mb-4">
-                    <div class="d-flex justify-content-between align-items-end mb-2">
-                        <label for="restaurantSelect" class="form-label fw-bold mb-0">
-                            <i class="fas fa-store me-2"></i>Select Restaurant
-                        </label>
-                        <div class="d-flex gap-2">
-
-                        <button class="btn btn-sm btn-outline-danger" id="deleteRestaurantBtn" style="display: none;" onclick="deleteRestaurant()">
-                            <i class="fas fa-trash me-1"></i>Delete Restaurant
-                        </button>
-                            <button class="btn btn-sm btn-outline-primary" id="editRestaurantBtn" style="display: none;" onclick="showEditRestaurantForm()">
-                                <i class="fas fa-edit me-1"></i>Edit Restaurant
-                            </button>
-                            <button class="btn btn-sm btn-outline-success" onclick="showAddRestaurantForm()">
-                                <i class="fas fa-plus me-1"></i>Add New Restaurant
-                            </button>
-                        </div>
-                    </div>
-                    <select class="form-select form-select-lg" id="restaurantSelect" onchange="loadRestaurantMeals(this.value)">
-                        <option value="">Loading restaurants...</option>
-                    </select>
-                </div>
-
-                <!-- Add/Edit Restaurant Form Section -->
-                <div id="addRestaurantFormSection" class="add-restaurant-section mb-4 p-4 bg-light rounded" style="display: none;">
-                    <h6 class="mb-3" id="restaurantFormTitle">
-                        <i class="fas fa-store-alt me-2"></i>Add New Restaurant
-                    </h6>
-                    <form id="addRestaurantForm">
-                        <input type="hidden" id="editRestaurantId" value="">
-                        <div class="row g-3">
-                            <div class="col-md-6">
-                                <label for="restaurantName" class="form-label">Restaurant Name *</label>
-                                <input type="text" class="form-control" id="restaurantName" placeholder="e.g., Healthy Bites Cafe" required>
-                            </div>
-                            <div class="col-md-6">
-                                <label for="restaurantImage" class="form-label">Restaurant Image *</label>
-                                <input type="file" class="form-control" id="restaurantImage" accept="image/*" onchange="previewImage()">
-                                <small class="text-muted">Accepted formats: JPG, PNG, GIF (Max 5MB)</small>
-                            </div>
-                            <div class="col-12" id="imagePreview" style="display: none;">
-                                <label class="form-label">Image Preview</label>
-                                <div class="border rounded p-2 text-center bg-white">
-                                    <img id="previewImg" src="" alt="Preview" style="max-width: 300px; max-height: 200px; object-fit: contain;">
-                                </div>
-                            </div>
-                            <div class="col-12">
-                                <label for="restaurantDescription" class="form-label">Description</label>
-                                <textarea class="form-control" id="restaurantDescription" rows="2" placeholder="Brief description of the restaurant"></textarea>
-                            </div>
-                            <div class="col-12">
-                                <div class="d-flex gap-2">
-                                    <button type="button" class="btn btn-success flex-grow-1" onclick="addRestaurant()">
-                                        <i class="fas fa-check me-2"></i>Add Restaurant
-                                    </button>
-                                    <button type="button" class="btn btn-secondary" onclick="cancelAddRestaurant()">
-                                        <i class="fas fa-times me-2"></i>Cancel
-                                    </button>
-                                </div>
-                            </div>
-                        </div>
-                    </form>
-                </div>
-
-                <hr>
-
-                <!-- Add New Meal Button -->
-                <div class="text-end mb-3" id="showAddMealBtn" style="display: none;">
-                    <button class="btn btn-success" onclick="showAddMealForm()">
-                        <i class="fas fa-plus me-2"></i>Add New Meal
-                    </button>
-                </div>
-
-                <!-- Add Meal Form Section -->
-                <div id="addMealFormSection" class="add-meal-section mb-4 p-4 bg-light rounded" style="display: none;">
-                    <h6 class="mb-3" id="addMealFormTitle">
-                        <i class="fas fa-plus-circle me-2"></i>Add New Meal
-                    </h6>
-                    <form id="addMealForm">
-                        <input type="hidden" id="editMealId" value="">
-                        <div class="row g-3">
-                            <div class="col-md-8">
-                                <label for="mealItemName" class="form-label">Meal Name *</label>
-                                <input type="text" class="form-control" id="mealItemName" placeholder="e.g., Grilled Chicken Salad" required>
-                            </div>
-                            <div class="col-12">
-                                <label for="mealItemDescription" class="form-label">Description</label>
-                                <textarea class="form-control" id="mealItemDescription" rows="2" placeholder="Brief description of the meal"></textarea>
-                            </div>
-                            <div class="col-md-3">
-                                <label for="mealCalories" class="form-label">Calories</label>
-                                <input type="number" class="form-control" id="mealCalories" step="0.1" min="0" placeholder="0" required>
-                            </div>
-                            <div class="col-md-3">
-                                <label for="mealProtein" class="form-label">Protein (g)</label>
-                                <input type="number" class="form-control" id="mealProtein" step="0.1" min="0" placeholder="0" required>
-                            </div>
-                            <div class="col-md-3">
-                                <label for="mealCarbs" class="form-label">Carbs (g)</label>
-                                <input type="number" class="form-control" id="mealCarbs" step="0.1" min="0" placeholder="0" required>
-                            </div>
-                            <div class="col-md-3">
-                                <label for="mealFat" class="form-label">Fat (g)</label>
-                                <input type="number" class="form-control" id="mealFat" step="0.1" min="0" placeholder="0" required>
-                            </div>
-                            <div class="col-12">
-                                <div class="d-flex gap-2">
-                                    <button type="button" class="btn btn-success flex-grow-1" onclick="addRestaurantMeal()">
-                                        <i class="fas fa-check me-2"></i>Add Meal
-                                    </button>
-                                    <button type="button" class="btn btn-secondary" onclick="cancelAddMeal()">
-                                        <i class="fas fa-times me-2"></i>Cancel
-                                    </button>
-                                </div>
-                            </div>
-                        </div>
-                    </form>
-                </div>
-
-                <!-- Existing Meals List -->
-                <div class="existing-meals-section">
-                    <h6 class="mb-3">
-                        <i class="fas fa-list me-2"></i>Existing Meals
-                    </h6>
-                    <div id="restaurantMealsList">
-                        <p class="text-muted text-center py-4">Please select a restaurant to view meals</p>
-                    </div>
-                </div>
-            </div>
-            <div class="modal-footer">
-                <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
-            </div>
-        </div>
-    </div>
-</div>
-
-<style>
-.add-meal-section {
-    border: 2px dashed #198754;
-}
-
-.add-restaurant-section {
-    border: 2px dashed #0d6efd;
-}
-
-.meals-grid {
-    display: grid;
-    gap: 15px;
-    max-height: 400px;
-    overflow-y: auto;
-}
-
-.meal-card {
-    background-color: white;
-    border: 1px solid #dee2e6;
-    border-radius: 8px;
-    padding: 15px;
-    transition: box-shadow 0.3s ease;
-}
-
-.meal-card:hover {
-    box-shadow: 0 4px 8px rgba(0,0,0,0.1);
-}
-
-.meal-name {
-    color: #333;
-    font-weight: 600;
-    margin-bottom: 5px;
-}
-
-.meal-description {
-    margin-bottom: 8px;
-}
-
-.meal-types {
-    margin-bottom: 8px;
-}
-
-.meal-macros {
-    padding-top: 8px;
-    border-top: 1px solid #e9ecef;
-    color: #666;
-}
-
-#imagePreview img {
-    border-radius: 8px;
-}
-</style>
Index: NutriMatch/Views/Home/Index.cshtml
===================================================================
--- NutriMatch/Views/Home/Index.cshtml	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ NutriMatch/Views/Home/Index.cshtml	(revision 5d48bf93fdd26aa14b8ae7ac68b61e5d60e3e2a8)
@@ -1,306 +1,7 @@
-﻿@model NutriMatch.Models.HomeViewModel
-<!DOCTYPE html>
-<html>
-<head>
-    <meta charset="UTF-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <title>NutriMatch - Your Recipe Journey</title>
-    <link href="~/css/HomeIndex.css" rel="stylesheet">
-</head>
-<body>
-    @if (!User.Identity.IsAuthenticated)
-    {
-        <section class="signup-section" style="margin-top: 200px;">
-            <div class="floating-elements">
-                <i class="fas fa-leaf floating-leaf" style="top: 10%; left: 15%; font-size: 2rem;"></i>
-                <i class="fas fa-seedling floating-leaf"
-                    style="top: 60%; right: 20%; font-size: 1.5rem; animation-delay: -2s;"></i>
-                <i class="fas fa-leaf floating-leaf"
-                    style="top: 30%; right: 10%; font-size: 2.5rem; animation-delay: -4s;"></i>
-            </div>
-            <div class="container">
-                <div class="row align-items-center">
-                    <div class="daily-dish col-lg-6">
-                        <h1 class="signup-title">Create your account</h1>
-                        <h2 class="signup-subtitle">Optimize Your Nutrition</h2>
-                        <p class="signup-description">
-                            Join our macro-focused recipe platform designed for goal-oriented eating. <br />
-                            As a member, you can
-                            create and manage your own recipes,
-                            rate and review meals from the community,
-                            save your favorite dishes for quick access and
-                            filter recipes by macronutrient profiles that align with your dietary needs
-                        </p>
-                       <a href="/Identity/Account/Register"> <button class="btn btn-primary-custom">
-                            Sign up
-                        </button>
-                        </a>
-                        <p class="mt-3 text-muted">Already have an account? <a href="/Identity/Account/Login"
-                                style="color: var(--primary-green); text-decoration: none;">Log in</a></p>
-                    </div>
-                    <div class="col-lg-4 text-center">
-                        <div class="position-relative">
-                            <img src="https://images.unsplash.com/photo-1546069901-ba9599a7e63c?ixlib=rb-4.0.3&auto=format&fit=crop&w=400&q=80"
-                                alt="Delicious Food Bowl" class="img-fluid rounded-circle"
-                                style="width: 300px; height: 300px; object-fit: cover; box-shadow: 0 20px 40px rgba(0,0,0,0.2);">
-                            <div class="position-absolute"
-                                style="top: 20px; right: 20px; background: white; border-radius: 50px; padding: 8px 15px; box-shadow: 0 5px 15px rgba(0,0,0,0.1);">
-                                <div class="d-flex align-items-center gap-2">
-                                    <img src="https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?ixlib=rb-4.0.3&auto=format&fit=crop&w=50&q=80"
-                                        alt="Chef" class="rounded-circle"
-                                        style="width: 30px; height: 30px; object-fit: cover;">
-                                    <div>
-                                        <small class="fw-bold text-dark d-block">Chef John</small>
-                                        <div class="text-warning" style="font-size: 12px;">
-                                            <i class="fas fa-star"></i>
-                                            <i class="fas fa-star"></i>
-                                            <i class="fas fa-star"></i>
-                                            <i class="fas fa-star"></i>
-                                            <i class="fas fa-star"></i>
-                                        </div>
-                                    </div>
-                                </div>
-                                <small class="text-muted d-block mt-1"> </small>
-                            </div>
-                        </div>
-                    </div>
-                </div>
-            </div>
-        </section>
-    }
-    else
-    {
-        <section class="welcome-back-section" style="margin-top: 100px; margin-bottom: 100px; position: relative;">
-            <div class="floating-elements">
-                <i class="fas fa-leaf floating-leaf"
-                    style="position: absolute; top: 15%; left: 8%; font-size: 1.5rem; color: rgba(76, 175, 80, 0.1); animation: float 8s ease-in-out infinite;"></i>
-                <i class="fas fa-seedling floating-leaf"
-                    style="position: absolute; top: 70%; right: 12%; font-size: 1.2rem; color: rgba(76, 175, 80, 0.08); animation: float 10s ease-in-out infinite; animation-delay: -3s;"></i>
-                <i class="fas fa-apple-alt floating-leaf"
-                    style="position: absolute; bottom: 20%; left: 15%; font-size: 1.3rem; color: rgba(76, 175, 80, 0.06); animation: float 12s ease-in-out infinite; animation-delay: -6s;"></i>
-            </div>
-            <div class="container">
-                <div class="row align-items-center">
-                    <div class="col-lg-8">
-                        <div class="welcome-content">
-                            <h1 class="welcome-title"
-                                style="color: #2c3e50; font-size: 2.8rem; font-weight: 700; margin-bottom: 16px; line-height: 1.2;">
-                                Welcome back,
-                                <br>
-                                <span style="color: #4CAF50;">@User.Identity.Name</span>!
-                                <span style="font-size: 2rem;">👋</span>
-                            </h1>
-                            <p class="welcome-subtitle"
-                                style="color: #64748b; font-size: 1.2rem; font-weight: 400; margin-bottom: 32px; max-width: 600px; line-height: 1.6;">
-                                Your personalized nutrition journey continues. Ready to discover delicious, macro-friendly
-                                recipes that align with your goals?
-                            </p>
-                            <div class="welcome-actions"
-                                style="display: flex; gap: 16px; align-items: center; flex-wrap: wrap;">
-                                <a href="/Recipes" class="btn btn-outline"
-                                    style="background: transparent; color: #4CAF50; padding: 14px 28px; border-radius: 8px; text-decoration: none; font-weight: 500; font-size: 0.95rem; transition: all 0.2s ease; border: 1px solid #4CAF50; display: inline-flex; align-items: center;">
-                                    <i class="fas fa-search" style="margin-right: 8px; font-size: 0.9rem;"></i>
-                                    Browse Recipes
-                                </a>
-                            </div>
-                        </div>
-                    </div>
-                    <div class="col-lg-4">
-                        <div class="user-summary-card"
-                            style="background: white; border-radius: 16px; padding: 32px; box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08); border: 1px solid rgba(0, 0, 0, 0.05); position: relative;">
-                            <div class="user-avatar"
-                                style="width: 64px; height: 64px; border-radius: 50%; margin: 0 auto 20px; display: flex; align-items: center; justify-content: center; font-size: 1.5rem; color: white; font-weight: 700; overflow: hidden; position: relative;">
-                                @if (!string.IsNullOrEmpty(ViewBag.UserPicture as string))
-                                {
-                                    <img src="@ViewBag.UserPicture" alt="@(ViewBag.UserName ?? User.Identity.Name)"
-                                        style="width: 100%; height: 100%; object-fit: cover; border-radius: 50%;" />
-                                }
-                                else
-                                {
-                                    <div
-                                        style="background: linear-gradient(135deg, #4CAF50, #45a049); width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; border-radius: 50%;">
-                                        @if (!string.IsNullOrEmpty(User.Identity.Name))
-                                        {
-                                            @User.Identity.Name.Substring(0, 1).ToUpper()
-                                        }
-                                        else
-                                        {
-                                            <i class="fas fa-user"></i>
-                                        }
-                                    </div>
-                                }
-                            </div>
-                            <div class="text-center mb-24">
-                                <h3 style="color: #2c3e50; font-size: 1.3rem; font-weight: 600; margin-bottom: 4px;">
-                                    @User.Identity.Name</h3>
-                            </div>
-                            <div class="stats-grid"
-                                style="display: flex; justify-content: center; gap: 3rem; text-align: center;">
-                                <div class="stat-item">
-                                    <div style="color: #4CAF50; font-size: 1.6rem; font-weight: 700; margin-bottom: 4px;">
-                                        @ViewBag.UserRecipesCount</div>
-                                    <div style="color: #64748b; font-size: 0.8rem; font-weight: 500;">Recipes</div>
-                                </div>
-                                <div class="stat-item">
-                                    <div style="color: #ff9500; font-size: 1.6rem; font-weight: 700; margin-bottom: 4px;">
-                                        @ViewBag.AverageRating</div>
-                                    <div style="color: #64748b; font-size: 0.8rem; font-weight: 500;">Rating</div>
-                                </div>
-                            </div>
-                            <div class="quick-action"
-                                style="margin-top: 28px; padding-top: 24px; border-top: 1px solid rgba(0, 0, 0, 0.06);">
-                                <a href="Recipes/MyRecipes"
-                                    style="display: flex; align-items: center; justify-content: between; color: #4CAF50; text-decoration: none; font-weight: 500; font-size: 0.9rem; transition: color 0.2s ease;">
-                                    <span>View My Recipes</span>
-                                    <i class="fas fa-arrow-right" style="margin-left: auto; font-size: 0.8rem;"></i>
-                                </a>
-                            </div>
-                        </div>
-                    </div>
-                </div>
-            </div>
-        </section>
-    }
-
-    <section class="share-recipe-section">
-        <div class="container">
-            <div class="row align-items-center">
-                <div class="col-lg-6">
-                    <div class="sample-recipe">
-                        <div class="sample-screen">
-                            <div class="text-center mb-3">
-                                <img src="https://images.unsplash.com/photo-1567620905732-2d1ec7ab7445?ixlib=rb-4.0.3&auto=format&fit=crop&w=300&q=80"
-                                    alt="Recipe" class="img-fluid rounded"
-                                    style="width: 100%; height: 150px; object-fit: cover;">
-                            </div>
-                            <h6 class="fw-bold mb-2">Protein pancakes</h6>
-                            <div class="d-flex justify-content-between align-items-center mb-2">
-                                <small class="text-muted">By Kire the chef</small>
-                                <div class="text-warning" style="font-size: 12px;">
-                                    <i class="fas fa-star"></i>
-                                    <i class="fas fa-star"></i>
-                                    <i class="fas fa-star"></i>
-                                    <i class="fas fa-star"></i>
-                                    <i class="fas fa-star"></i>
-                                </div>
-                            </div>
-                        </div>
-                    </div>
-                </div>
-                <div class="col-lg-6">
-                    <h2 class="share-title">Share Your Recipes</h2>
-                    <p class="share-description">
-                        Have a recipe that fits your nutrition goals? Share it with the community and help others
-                        discover meals that balance flavor and function. Whether it's high-protein, low-carb, or
-                        macro-balanced — your creations make a difference.
-                    </p>
-                    <a href="/Recipes/Create" class="btn btn-create-recipe">
-                        Create New Recipe
-                    </a>
-                </div>
-            </div>
-        </div>
-    </section>
-
-    <section class="trending-section">
-        <div class="container">
-            <h2 class="section-title">Trending Foods</h2>
-            <p class="section-subtitle">Discover the most popular recipes shared by our community</p>
-            <div class="row">
-                @foreach (var recipe in Model.Recipes)
-                {
-                    <div class="col-md-6 col-lg-4">
-                        <div class="recipe-card">
-                            <img src="@recipe.ImageUrl" class="recipe-image">
-                            <div class="recipe-content">
-                                <h3 class="recipe-title">@(recipe.Title.Length > 30
-                                                                    ? recipe.Title.Substring(0, 30) + "…"
-                                                                    : recipe.Title)</h3>
-                                <div class="recipe-meta">
-                                    <span class="rating">
-                                        <i class="fas fa-star"></i> @recipe.Rating
-                                    </span>
-                                    <span>
-                                        <i class="fas fa-user"></i>
-                                        @(recipe.User.UserName.Length > 23
-                                                                            ? recipe.User.UserName.Substring(0, 23) + "…"
-                                                                            : recipe.User.UserName)
-                                    </span>
-                                    <span><i class="fas fa-calendar"> </i> @recipe.CreatedAt.ToString("MMM dd, yyyy")</span>
-                                </div>
-                                <div class="calories-info">
-                                    <div class="recipe-macros">
-                                        <div class="macro-item">
-                                            <div class="macro-value">@recipe.Calories</div>
-                                            <div class="macro-label">Cal</div>
-                                        </div>
-                                        <div class="macro-item">
-                                            <div class="macro-value">@recipe.Protein</div>
-                                            <div class="macro-label">Protein</div>
-                                        </div>
-                                        <div class="macro-item">
-                                            <div class="macro-value">@recipe.Carbs</div>
-                                            <div class="macro-label">Carbs</div>
-                                        </div>
-                                        <div class="macro-item">
-                                            <div class="macro-value">@recipe.Fat</div>
-                                            <div class="macro-label">Fats</div>
-                                        </div>
-                                    </div>
-                                </div>
-                            </div>
-                            <div class="nutrition-overlay">
-                                <div class="nutrition-content">
-                                    <h4>Nutrition Facts</h4>
-                                    <div class="nutrition-grid">
-                                        <div class="nutrition-item">
-                                            <span class="nutrition-label">Calories</span>
-                                            <span class="nutrition-value">@recipe.Calories</span>
-                                        </div>
-                                        <div class="nutrition-item">
-                                            <span class="nutrition-label">Protein</span>
-                                            <span class="nutrition-value">@recipe.Protein</span>
-                                        </div>
-                                        <div class="nutrition-item">
-                                            <span class="nutrition-label">Carbs</span>
-                                            <span class="nutrition-value">@recipe.Carbs</span>
-                                        </div>
-                                        <div class="nutrition-item">
-                                            <span class="nutrition-label">Fats</span>
-                                            <span class="nutrition-value">@recipe.Fat</span>
-                                        </div>
-                                    </div>
-                                </div>
-                            </div>
-                        </div>
-                    </div>
-                }
-            </div>
-        </div>
-    </section>
-
-    <section class="restaurants-section">
-        <div class="container">
-            <h2 class="section-title">Popular Restaurants</h2>
-            <p class="section-subtitle">Explore the most popular restaurants with delicious options</p>
-        </div>
-        <div class="container">
-            <div class="restaurants-container" onclick="window.location.href='@Url.Action("Index", "Restaurants")'"
-                style="cursor: pointer;">
-                @for (int i = 0; i < Model.Restaurants.Count; i++)
-                {
-                    var restaurant = Model.Restaurants[i];
-                    <div class="restaurant-card" style="animation-delay: @(i * -4)s; top: 20px;">
-                        <div class="restaurant-logo"
-                            style="display: flex; align-items: center; justify-content: center; font-size: 1.5rem; color: white; font-weight: bold;">
-                            <img src="@restaurant.ImageUrl" style="width: 70px;">
-                        </div>
-                        <div class="restaurant-name">@restaurant.Name</div>
-                        <div class="restaurant-items">@restaurant.Description</div>
-                    </div>
-                }
-            </div>
-        </div>
-    </section>
-</body>
-</html>
+﻿@{
+    ViewData["Title"] = "Home Page";
+}
+<div class="text-center">
+    <h1 class="display-4">Welcome</h1>
+    <p>Learn about <a href="https://learn.microsoft.com/aspnet/core">building Web apps with ASP.NET Core</a>.</p>
+</div>
Index: triMatch/Views/MealPlan/Create.cshtml
===================================================================
--- NutriMatch/Views/MealPlan/Create.cshtml	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,121 +1,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-    <meta charset="UTF-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <title>Create Meal Plan</title>
-    <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css" rel="stylesheet">
-    <link href="~/css/MealPlanCreate.css" rel="stylesheet">
-</head>
-<body>
-    <div class="container">
-        <div class="header-section">
-            <h1>Create Meal Plan</h1>
-            <p>Generate your personalized weekly meal plan tailored to your nutrition goals</p>
-        </div>
-        <div class="main-card">
-            @if (TempData["Success"] != null)
-            {
-                <div class="success-message">
-                    <i class="fas fa-check-circle"></i>
-                    @TempData["Success"]
-                </div>
-            }
-            @if (!ViewData.ModelState.IsValid)
-            {
-                <div class="error-message">
-                    <i class="fas fa-exclamation-triangle"></i>
-                    <strong>Please correct the following errors:</strong>
-                    <ul class="mb-0">
-                        @foreach (var error in ViewData.ModelState.Values.SelectMany(v => v.Errors))
-                        {
-                            <li>@error.ErrorMessage</li>
-                        }
-                    </ul>
-                </div>
-            }
-            <form asp-action="Create" method="post" id="mealPlanForm">
-                @Html.AntiForgeryToken()
-                <div class="section-title">
-                    <i class="fas fa-chart-pie"></i>
-                    Daily Macro Requirements
-                </div>
-                <div class="macro-grid">
-                    <div class="macro-item">
-                        <label for="DailyCalories" class="form-label">
-                            <i class="fas fa-fire icon-fire"></i>
-                            Daily Calories
-                        </label>
-                        <input type="number" class="form-control" id="DailyCalories" name="DailyCalories" min="1200"
-                            max="5000" value="@(Model?.DailyCalories ?? 2000)" required>
-                        <div class="help-text">1200 - 5000 calories</div>
-                    </div>
-                    <div class="macro-item">
-                        <label for="DailyProtein" class="form-label">
-                            <i class="fas fa-drumstick-bite icon-protein"></i>
-                            Daily Protein (g)
-                        </label>
-                        <input type="number" class="form-control" id="DailyProtein" name="DailyProtein" min="50"
-                            max="300" value="@(Model?.DailyProtein ?? 150)" required>
-                        <div class="help-text">50 - 300 grams</div>
-                    </div>
-                    <div class="macro-item">
-                        <label for="DailyCarbs" class="form-label">
-                            <i class="fas fa-bread-slice icon-carbs"></i>
-                            Daily Carbs (g)
-                        </label>
-                        <input type="number" class="form-control" id="DailyCarbs" name="DailyCarbs" min="100" max="600"
-                            value="@(Model?.DailyCarbs ?? 200)" required>
-                        <div class="help-text">100 - 600 grams</div>
-                    </div>
-                    <div class="macro-item">
-                        <label for="DailyFat" class="form-label">
-                            <i class="fas fa-cheese icon-fat"></i>
-                            Daily Fat (g)
-                        </label>
-                        <input type="number" class="form-control" id="DailyFat" name="DailyFat" min="30" max="200"
-                            value="@(Model?.DailyFat ?? 78)" required>
-                        <div class="help-text">30 - 200 grams</div>
-                    </div>
-                </div>
-                <div class="form-group">
-                    <label for="RestaurantMealsPerWeek" class="form-label">
-                        <i class="fas fa-utensils icon-restaurant"></i>
-                        Restaurant Meals Per Week
-                    </label>
-                    <input type="number" class="form-control" id="RestaurantMealsPerWeek" name="RestaurantMealsPerWeek"
-                        min="0" max="21" value="@(Model?.RestaurantMealsPerWeek ?? 3)" required>
-                    <div class="help-text">0 - 21 meals per week</div>
-                </div>
-                <div class="submit-section">
-                    <button type="submit" class="btn btn-create">
-                        <span class="btn-text">
-                            <i class="fas fa-sparkles me-2"></i>
-                            Generate Meal Plan
-                        </span>
-                    </button>
-                </div>
-            </form>
-        </div>
-    </div>
-    <script>
-        document.getElementById('DailyCalories').addEventListener('input', function () {
-            const calories = parseFloat(this.value);
-            if (calories && calories >= 1200) {
-                const proteinCals = calories * 0.30;
-                const carbCals = calories * 0.40;
-                const fatCals = calories * 0.30;
-                document.getElementById('DailyProtein').value = Math.round(proteinCals / 4);
-                document.getElementById('DailyCarbs').value = Math.round(carbCals / 4);
-                document.getElementById('DailyFat').value = Math.round(fatCals / 9);
-            }
-        });
-        document.getElementById('mealPlanForm').addEventListener('submit', function () {
-            const submitBtn = this.querySelector('button[type="submit"]');
-            const btnText = submitBtn.querySelector('.btn-text');
-            btnText.innerHTML = '<i class="fas fa-spinner fa-spin me-2"></i>Generating...';
-            submitBtn.disabled = true;
-        });
-    </script>
-</body>
-</html>
Index: triMatch/Views/MealPlan/Details.cshtml
===================================================================
--- NutriMatch/Views/MealPlan/Details.cshtml	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,318 +1,0 @@
-@model NutriMatch.Models.WeeklyMealPlan
-@{
-    ViewBag.Title = "Weekly Meal Plan";
-    Layout = "~/Views/Shared/_Layout.cshtml";
-}
-
-<head>
-    <meta charset="UTF-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <title>Create Meal Plan</title>
-    <link href="~/css/MealPlanDetails.css" rel="stylesheet">
-    <style>
-        .regenerate-btn {
-            background: linear-gradient(135deg, #10b981 0%, #059669 100%);
-            color: white;
-            border: none;
-            padding: 6px 10px;
-            border-radius: 6px;
-            cursor: pointer;
-            font-size: 0.75rem;
-            font-weight: 600;
-            display: flex;
-            align-items: center;
-            gap: 4px;
-            transition: all 0.3s ease;
-            box-shadow: 0 2px 6px rgba(16, 185, 129, 0.25);
-            margin-top: 8px;
-            width: fit-content;
-        }
-
-        .regenerate-btn:hover {
-            transform: translateY(-1px);
-            box-shadow: 0 3px 10px rgba(16, 185, 129, 0.35);
-        }
-
-        .regenerate-btn:active {
-            transform: translateY(0);
-        }
-
-        .regenerate-btn i {
-            animation: none;
-        }
-
-        .regenerate-btn.loading i {
-            animation: spin 1s linear infinite;
-        }
-
-        @@keyframes spin {
-            from {
-                transform: rotate(0deg);
-            }
-
-            to {
-                transform: rotate(360deg);
-            }
-        }
-
-        .regenerated-indicator {
-            position: absolute;
-            top: -0.5rem;
-            right: -0.5rem;
-            background: linear-gradient(135deg, #fbbf24 0%, #f59e0b 100%);
-            color: white;
-            padding: 6px;
-            border-radius: 50%;
-            font-size: 0.875rem;
-            display: flex;
-            align-items: center;
-            justify-content: center;
-            z-index: 5;
-            animation: fadeIn 0.5s ease;
-            transition: opacity 0.3s ease, transform 0.3s ease;
-            width: 28px;
-            height: 28px;
-        }
-
-        .regenerated-indicator.fade-out {
-            opacity: 0;
-            transform: scale(0.8);
-        }
-
-        @@keyframes fadeIn {
-            from {
-                opacity: 0;
-                transform: scale(0.8);
-            }
-
-            to {
-                opacity: 1;
-                transform: scale(1);
-            }
-        }
-
-
-
-        .notification-icon {
-            font-size: 1.5rem;
-        }
-
-        .notification-icon.success {
-            color: #10b981;
-        }
-
-        .notification-icon.error {
-            color: #ef4444;
-        }
-
-        .meal-card {
-            position: relative;
-        }
-    </style>
-</head>
-
-<body>
-    <div class="container">
-        <div class="header-section">
-            <h1>Your Weekly Meal Plan</h1>
-            <p>Perfectly balanced nutrition for every day of the week</p>
-            <div class="generated-date">
-                Generated on @Model.GeneratedAt.ToString("MMMM dd, yyyy 'at' h:mm tt")
-            </div>
-        </div>
-
-        <div class="navigation-bar">
-            <a href="@Url.Action("Index", "MealPlan")" class="nav-btn">
-                <i class="fas fa-arrow-left"></i>
-                Back to My Plans
-            </a>
-            <button class="nav-btn delete" onclick="showDeleteModal()">
-                <i class="fas fa-trash-alt"></i>
-                Delete Plan
-            </button>
-        </div>
-
-        <div class="days-container">
-            @{
-                var days = new[] { "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday" };
-                var dayMeals = Model.MealSlots.GroupBy(ms => ms.Day).ToDictionary(g => g.Key, g => g.ToList());
-            }
-
-            @foreach (var day in days)
-            {
-                var meals = dayMeals.ContainsKey(day) ? dayMeals[day] : new List<NutriMatch.Models.MealSlot>();
-                var dailyCalories = meals.Sum(m => m.IsRestaurantMeal ? (m.RestaurantMeal?.Calories ?? 0) :
-                (m.Recipe?.Calories ?? 0));
-
-                <div class="day-card">
-                    <div class="day-header">
-                        <div class="day-name">@day</div>
-                        <div class="day-calories">@((int)dailyCalories) cal</div>
-                    </div>
-
-                    @if (meals.Any())
-                    {
-                        <div class="meals-container">
-                            @foreach (var meal in meals.OrderBy(m => GetMealOrder(m.MealType)))
-                            {
-                                @if (meal.IsRestaurantMeal && meal.RestaurantMeal != null)
-                                {
-                                    <div class="meal-card @meal.MealType" data-meal-id="@meal.Id"
-                                        data-is-regenerated="@(meal.IsRegenerated == true ? "true" : "false")"
-                                        data-is-viewed="@(meal.isViewed == true ? "true" : "false")"
-                                        onclick="SetIsViewed(event, true, @meal.Id)">
-
-                                        @if (meal.IsRegenerated == true && meal.isViewed == false)
-                                        {
-                                            <div class="regenerated-indicator">
-                                                <i class="fas fa-sync-alt"></i>
-                                            </div>
-                                        }
-
-                                        <div class="meal-header">
-                                            <span class="meal-type @meal.MealType">@meal.MealType</span>
-                                            <span class="restaurant-badge">Restaurant</span>
-                                            <button class="regenerate-btn" onclick="regenerateMeal(event, @meal.Id, @Model.Id)">
-                                                <i class="fas fa-sync-alt"></i>
-                                                Regenerate
-                                            </button>
-                                        </div>
-                                        <div class="meal-name">@meal.RestaurantMeal.ItemName</div>
-                                        <div class="meal-restaurant">@meal.RestaurantMeal.RestaurantName</div>
-                                        <div class="meal-macros">
-                                            <span class="macro-badge">@((int)meal.RestaurantMeal.Calories) cal</span>
-                                            <span class="macro-badge">@((int)meal.RestaurantMeal.Protein)g protein</span>
-                                            <span class="macro-badge">@((int)meal.RestaurantMeal.Carbs)g carbs</span>
-                                            <span class="macro-badge">@((int)meal.RestaurantMeal.Fat)g fat</span>
-                                        </div>
-                                    </div>
-                                }
-                                else if (meal.Recipe != null)
-                                {
-                                    <div class="meal-card @meal.MealType clickable" data-meal-id="@meal.Id"
-                                        data-is-regenerated="@(meal.IsRegenerated == true ? "true" : "false")"
-                                        data-is-viewed="@(meal.isViewed == true ? "true" : "false")"
-                                        onclick="handleMealCardClick(event, @meal.Recipe.Id, @meal.Id)">
-
-                                        @if (meal.IsRegenerated == true && meal.isViewed == false)
-                                        {
-                                            <div class="regenerated-indicator">
-                                                <i class="fas fa-sync-alt"></i>
-                                            </div>
-                                        }
-
-                                        <div class="meal-header">
-                                            <span class="meal-type @meal.MealType">@meal.MealType</span>
-                                            <span class="recipe-badge">Recipe</span>
-                                            <button class="regenerate-btn" onclick="regenerateMeal(event, @meal.Id, @Model.Id)">
-                                                <i class="fas fa-sync-alt"></i>
-                                                Regenerate
-                                            </button>
-                                        </div>
-                                        <div class="meal-name">@meal.Recipe.Title</div>
-                                        <div class="meal-macros">
-                                            <span class="macro-badge">@((int)meal.Recipe.Calories) cal</span>
-                                            <span class="macro-badge">@((int)meal.Recipe.Protein)g protein</span>
-                                            <span class="macro-badge">@((int)meal.Recipe.Carbs)g carbs</span>
-                                            <span class="macro-badge">@((int)meal.Recipe.Fat)g fat</span>
-                                        </div>
-                                    </div>
-                                }
-                            }
-                        </div>
-                    }
-                    else
-                    {
-                        <div class="empty-day">No meals planned for this day</div>
-                    }
-                </div>
-            }
-        </div>
-
-        <div class="summary-card">
-            <div class="summary-header">
-                <h2>Weekly Overview</h2>
-                <p>Your nutritional breakdown for the entire week</p>
-            </div>
-
-            @{
-                var totalCalories = Model.MealSlots.Sum(ms => ms.IsRestaurantMeal ? (ms.RestaurantMeal?.Calories ?? 0) :
-                (ms.Recipe?.Calories ?? 0));
-                var totalProtein = Model.MealSlots.Sum(ms => ms.IsRestaurantMeal ? (ms.RestaurantMeal?.Protein ?? 0) :
-                (ms.Recipe?.Protein ?? 0));
-                var totalCarbs = Model.MealSlots.Sum(ms => ms.IsRestaurantMeal ? (ms.RestaurantMeal?.Carbs ?? 0) :
-                (ms.Recipe?.Carbs ?? 0));
-                var totalFat = Model.MealSlots.Sum(ms => ms.IsRestaurantMeal ? (ms.RestaurantMeal?.Fat ?? 0) :
-                (ms.Recipe?.Fat ?? 0));
-                var restaurantMeals = Model.MealSlots.Count(ms => ms.IsRestaurantMeal);
-            }
-
-            <div class="summary-grid">
-                <div class="summary-item">
-                    <div class="summary-label">Total Calories</div>
-                    <div class="summary-value">@((int)totalCalories)</div>
-                </div>
-                <div class="summary-item">
-                    <div class="summary-label">Total Protein</div>
-                    <div class="summary-value">@((int)totalProtein)g</div>
-                </div>
-                <div class="summary-item">
-                    <div class="summary-label">Total Carbs</div>
-                    <div class="summary-value">@((int)totalCarbs)g</div>
-                </div>
-                <div class="summary-item">
-                    <div class="summary-label">Total Fat</div>
-                    <div class="summary-value">@((int)totalFat)g</div>
-                </div>
-                <div class="summary-item">
-                    <div class="summary-label">Restaurant Meals</div>
-                    <div class="summary-value">@restaurantMeals</div>
-                </div>
-                <div class="summary-item">
-                    <div class="summary-label">Home Cooked</div>
-                    <div class="summary-value">@(Model.MealSlots.Count - restaurantMeals)</div>
-                </div>
-            </div>
-        </div>
-    </div>
-
-    <div id="modalWindow"></div>
-
-    <div id="deleteModal" class="modal">
-        <div class="delete-modal-content modal-content">
-            <div class="modal-header">
-                <i class="fas fa-exclamation-triangle"></i>
-                Delete Meal Plan
-            </div>
-            <div class="modal-body">
-                Are you sure you want to delete this meal plan? This action cannot be undone and all meal data will be
-                permanently removed.
-            </div>
-            <div class="modal-buttons">
-                <button class="modal-btn cancel" onclick="hideDeleteModal()">Cancel</button>
-                <button class="modal-btn confirm" onclick="confirmDelete()">Delete Plan</button>
-            </div>
-        </div>
-    </div>
-
-    <form id="deleteForm" method="post" action="@Url.Action("Delete", "MealPlan")" style="display: none;">
-        @Html.AntiForgeryToken()
-        <input type="hidden" name="id" value="@Model.Id" />
-    </form>
-</body>
-
-<script src="~/js/MealPlanDetails.js"></script>
-
-@functions {
-    private int GetMealOrder(string mealType)
-    {
-        return mealType?.ToLower() switch
-        {
-            "breakfast" => 1,
-            "lunch" => 2,
-            "dinner" => 3,
-            "snack" => 4,
-            _ => 5
-        };
-    }
-}
Index: triMatch/Views/MealPlan/Index.cshtml
===================================================================
--- NutriMatch/Views/MealPlan/Index.cshtml	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,189 +1,0 @@
-@model List<WeeklyMealPlan>
-@{
-    ViewData["Title"] = "My Meal Plans";
-}
-<!DOCTYPE html>
-<html lang="en">
-<head>
-    <meta charset="UTF-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <title>@ViewData["Title"]</title>
-    <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css" rel="stylesheet">
-    <link href="~/css/MealPlanIndex.css" rel="stylesheet">
-    <style>
-        @@keyframes pulse {
-            0%, 100% { 
-                transform: scale(1);
-                box-shadow: 0 0 0 0 rgba(251, 191, 36, 0.7);
-            }
-            50% { 
-                transform: scale(1.05);
-                box-shadow: 0 0 0 10px rgba(251, 191, 36, 0);
-            }
-        }
-
-        @@keyframes bounce {
-            0%, 100% { transform: translateY(0); }
-            50% { transform: translateY(-5px); }
-        }
-
-        .plan-status {
-            display: flex;
-            flex-direction: column;
-            gap: 8px;
-            margin-top: 12px;
-        }
-
-        .notification-badge-number {
-            position: absolute;
-            top: -12px;
-            right: -12px;
-            background: linear-gradient(135deg, #fbbf24 0%, #f59e0b 100%);
-            color: white;
-            min-width: 32px;
-            height: 32px;
-            border-radius: 50%;
-            display: flex;
-            align-items: center;
-            justify-content: center;
-            font-size: 0.85rem;
-            font-weight: 700;
-            box-shadow: 0 6px 20px rgba(251, 191, 36, 0.5);
-            animation: pulse 2s infinite, bounce 1s ease-in-out infinite;
-            z-index: 10;
-            border: 3px solid white;
-            padding: 0 8px;
-        }
-
-        .notification-badge-number i {
-            font-size: 0.9rem;
-            margin-right: 2px;
-        }
-
-        .plan-card {
-            position: relative;
-            overflow: visible;
-            
-        }
-
-        .plans-grid {
-            display: grid;
-            grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
-            gap: 24px;
-            margin-top: 32px;
-        }
-    
-    </style>
-</head>
-<body>
-    <div class="container">
-        <div class="header-section">
-            <h1>
-                <i class="fas fa-calendar-alt" style="color: #4ade80; margin-right: 16px;"></i>
-                My Meal Plans
-            </h1>
-            <p>Manage and view your personalized weekly meal plans</p>
-        </div>
-
-        @if (TempData["Success"] != null)
-        {
-            <div class="alert-message alert-success">
-                <i class="fas fa-check-circle"></i>
-                @TempData["Success"]
-            </div>
-        }
-
-        @if (TempData["Error"] != null)
-        {
-            <div class="alert-message alert-error">
-                <i class="fas fa-exclamation-triangle"></i>
-                @TempData["Error"]
-            </div>
-        }
-
-        @if (Model == null || !Model.Any())
-        {
-            <div class="empty-state">
-                <i class="fas fa-utensils"></i>
-                <h3>No Meal Plans Yet</h3>
-                <p>You haven't created any meal plans yet. Start by creating your first personalized weekly meal plan
-                    tailored to your nutrition goals!</p>
-                <a href="@Url.Action("Create", "MealPlan")" class="btn-create-first">
-                    <i class="fas fa-plus"></i>
-                    Create Your First Meal Plan
-                </a>
-            </div>
-        }
-        else
-        {
-            <div class="plans-grid">
-                <a href="@Url.Action("Create", "MealPlan")" class="create-new-card">
-                    <div class="create-new-content">
-                        <i class="fas fa-plus-circle"></i>
-                        <h4>Create New Meal Plan</h4>
-                        <p>Generate a fresh weekly meal plan</p>
-                    </div>
-                </a>
-
-                @foreach (var mealPlan in Model.OrderByDescending(m => m.GeneratedAt))
-                {
-                    var unviewedRegeneratedCount = 0;
-                    if (mealPlan.MealSlots != null)
-                    {
-                        unviewedRegeneratedCount = mealPlan.MealSlots.Count(ms => ms.IsRegenerated == true && ms.isViewed == false);
-                    }
-                    
-                    <div class="plan-card"
-                        onclick="location.href='@Url.Action("Details", "MealPlan", new { id = mealPlan.Id })'">
-                        
-                        @if (unviewedRegeneratedCount > 0)
-                        {
-                            <div class="notification-badge-number">
-                                <i ></i>@unviewedRegeneratedCount
-                            </div>
-                        }
-
-                        <div class="plan-card-header">
-                            <div class="plan-title">
-                                <i class="fas fa-calendar-week"></i>
-                                Weekly Meal Plan #@mealPlan.Id
-                            </div>
-                            <div class="plan-date">
-                                <i class="fas fa-clock"></i>
-                                @mealPlan.GeneratedAt.ToString("MMM dd, yyyy 'at' h:mm tt")
-                            </div>
-                        </div>
-
-                        <div class="plan-card-body">
-                            <div class="plan-stats">
-                                <div class="stat-box">
-                                    <span class="stat-number">@(mealPlan.MealSlots?.Count ?? 0)</span>
-                                    <span class="stat-label">Meals</span>
-                                </div>
-                                <div class="stat-box">
-                                    <span class="stat-number">7</span>
-                                    <span class="stat-label">Days</span>
-                                </div>
-                            </div>
-
-                            <a href="@Url.Action("Details", "MealPlan", new { id = mealPlan.Id })" class="view-plan-btn">
-                                <i class="fas fa-arrow-right"></i>
-                                View Full Plan
-                            </a>
-                        </div>
-                    </div>
-                }
-            </div>
-        }
-    </div>
-
-    <script>
-        document.addEventListener('DOMContentLoaded', function () {
-            const cards = document.querySelectorAll('.plan-card, .create-new-card');
-            cards.forEach((card, index) => {
-                card.style.animationDelay = `${index * 0.1}s`;
-            });
-        });
-    </script>
-</body>
-</html>
Index: triMatch/Views/Notifications/_NotificationPanel.cshtml
===================================================================
--- NutriMatch/Views/Notifications/_NotificationPanel.cshtml	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,111 +1,0 @@
-@model IEnumerable<NutriMatch.Models.Notification>
-
-<div class="notification-header">
-    <h4>Notifications</h4>
-    <div class="notification-actions">
-    @if (Model.Any(n => !n.IsRead))
-        {
-            <button id="mark-all-read" class="btn-link">Mark all as read</button>
-        }
-        @if (Model.Any())
-        {
-            <button id="delete-all-notifications" class="btn-link text-danger" title="Delete all notifications" onclick="deleteAllNotifications()">
-                <i class="fas fa-trash-alt"></i>
-            </button>
-        }
-        
-        <a asp-area="Identity" asp-page="/Account/MyAccount" asp-route-activeTab="Notifications" class="btn-link" title="Notification settings">
-            <i class="fas fa-cog"></i>
-        </a>
-    </div>
-</div>
-<div class="notification-list" id="notification-list">
-    @if (Model.Any())
-    {
-        foreach (var notification in Model)
-        {
-            var unreadClass = notification.IsRead ? "" : "unread";
-            var timeAgo = GetTimeAgo(notification.CreatedAt);
-            
-            <div class="notification-item @unreadClass" data-id="@notification.Id" data-recipe-id="@notification.RecipeId">
-                @if (notification.Type == "RecipeRated")
-                {
-                    <div class="notification-icon-wrapper">
-                        <i class="fas fa-star notification-type-icon" style="color: #ffc107;"></i>
-                    </div>
-                }
-                else if (notification.Type == "RecipeAccepted")
-                {
-                    <div class="notification-icon-wrapper">
-                        <i class="fas fa-check-circle notification-type-icon" style="color: #4caf50;"></i>
-                    </div>
-                }
-                else if (notification.Type == "RecipeDeclined")
-                {
-                    <div class="notification-icon-wrapper">
-                        <i class="fas fa-times-circle notification-type-icon" style="color: #f44336;"></i>
-                    </div>
-                }
-                else if (notification.Type == "RestaurantNewMeal")
-                {
-                    <div class="notification-icon-wrapper">
-                        <i class="fas fa-utensils notification-type-icon" style="color: #ff6b6b;"></i>
-                    </div>
-                }
-                else if (notification.Type == "MealMatchesTags" || notification.Type == "RecipeMatchesTags")
-                {
-                    <div class="notification-icon-wrapper">
-                        <i class="fas fa-tags notification-type-icon" style="color: #4ecdc4;"></i>
-                    </div>
-                }
-                else if (notification.Type == "NewRestaurant")
-                {
-                    <div class="notification-icon-wrapper">
-                        <i class="fas fa-store notification-type-icon" style="color: #007bff;"></i>
-                    </div>
-                }else if (notification.Type == "MealPlanUpdated")
-                    {
-                        <div class="notification-icon-wrapper">
-                            <i class="fas fa-calendar-check notification-type-icon" style="color: #9c27b0;"></i>
-                        </div>
-                    }
-                
-                <div class="notification-content">
-                    <div class="notification-message">@notification.Message</div>
-                    <div class="notification-time">@timeAgo</div>
-                </div>
-
-                <button class="notification-delete-btn" data-notification-id="@notification.Id" title="Delete notification">
-                    <i class="fas fa-times"></i>
-                </button>
-            </div>
-        }
-    }
-    else
-    {
-        <div class="notification-item no-notifications">
-            <i class="fas fa-bell-slash"></i>
-            <p>No notifications yet</p>
-        </div>
-    }
-</div>
-
-@functions {
-    private string GetTimeAgo(DateTime dateTime)
-    {
-        var timeSpan = DateTime.Now.ToUniversalTime() - dateTime.ToUniversalTime();
-        
-        if (timeSpan.TotalSeconds < 60)
-            return "Just now";
-        else if (timeSpan.TotalMinutes < 60)
-            return $"{(int)timeSpan.TotalMinutes} minute{((int)timeSpan.TotalMinutes != 1 ? "s" : "")} ago";
-        else if (timeSpan.TotalHours < 24)
-            return $"{(int)timeSpan.TotalHours} hour{((int)timeSpan.TotalHours != 1 ? "s" : "")} ago";
-        else if (timeSpan.TotalDays < 7)
-            return $"{(int)timeSpan.TotalDays} day{((int)timeSpan.TotalDays != 1 ? "s" : "")} ago";
-        else
-            return dateTime.ToString("MMM dd, yyyy");
-    }
-}
-
-
Index: triMatch/Views/Recipes/Create.cshtml
===================================================================
--- NutriMatch/Views/Recipes/Create.cshtml	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,101 +1,0 @@
-@model NutriMatch.Models.Recipe
-@{
-    Layout = null;
-}
-<!DOCTYPE html>
-<html>
-<head>
-    <meta charset="UTF-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <title>Create Recipe - NutriMatch</title>
-    <link href="~/css/RecipeCreate.css" rel="stylesheet" />
-</head>
-<body>
-    <div class="main-container">
-        <div class="page-header">
-            <h1 class="page-title">Create Recipe</h1>
-            <p class="page-subtitle">Share your culinary creation with the community</p>
-        </div>
-        <div class="form-card">
-            <div class="form-content">
-                <form asp-action="Create" enctype="multipart/form-data">
-                    @Html.AntiForgeryToken()
-                    <div class="form-group">
-                        <label for="Title" class="label">Recipe Title</label>
-                        <input type="text" name="Title" id="Title" class="input" placeholder="Enter your recipe name..."
-                            required />
-                        <div class="validation-error" id="titleValidation"></div>
-                    </div>
-                    <div class="form-group">
-                        <label class="label">Ingredients</label>
-                        <div class="search-container">
-                            <div class="flex-row">
-                                <input type="text" class="input flex-2" placeholder="Search ingredients..."
-                                    id="ingredientSearch">
-                                <select class="input flex-1" id="ingredientUnit">
-                                    <option value="">Unit</option>
-                                    <option value="g">Grams</option>
-                                    <option value="ml">Milliliters</option>
-                                    <option value="oz">Ounce</option>
-                                    <option value="tbsp">Tablespoon</option>
-                                    <option value="tsp">Teaspoon</option>
-                                    <option value="cup">Cup</option>
-                                </select>
-                                <input type="number" class="input flex-1" placeholder="Amount" id="ingredientQuantity"
-                                    step="0.01" min="0">
-                                <button type="button" class="btn btn-primary" id="addIngredientButton">
-                                    Add
-                                </button>
-                                <button type="button" class="btn btn-secondary add-new-ingredient-btn"
-                                    id="addNewIngredientBtn" style="display: none;">
-                                    + Create New Ingredient
-                                </button>
-                            </div>
-                            <div class="dropdown" id="ingredientDropdown"></div>
-                        </div>
-                        <div class="items-container" id="ingredientsList">
-                            <div class="items-empty">No ingredients added yet</div>
-                        </div>
-                        <input type="hidden" id="selectedIngredients" name="Ingredients" />
-                    </div>
-                    <div class="form-group">
-                        <label class="label">Instructions</label>
-                        <div class="flex-row">
-                            <textarea class="input textarea flex-1" placeholder="Add a cooking step..."
-                                id="instructionInput"></textarea>
-                            <button type="button" class="btn btn-primary" id="addInstructionButton">
-                                Add Step
-                            </button>
-                        </div>
-                        <div class="items-container" id="instructionsList">
-                            <div class="items-empty">No instructions added yet</div>
-                        </div>
-                        <input type="hidden" id="selectedInstructions" name="Instructions" />
-                    </div>
-                    <div class="form-group">
-                        <label class="form-label">Recipe Photo</label>
-                        <div class="file-upload-area" id="fileUploadArea">
-                            <div class="file-upload-icon">📷</div>
-                            <p><strong>Click to upload</strong> or drag and drop</p>
-                            <p>PNG, JPG, GIF up to 10MB</p>
-                            <input type="file" id="RecipeImage" name="RecipeImage" accept="image/*"
-                                style="display: none;" required />
-                        </div>
-                        <div id="imagePreview" style="margin-top: 1rem; text-align: center;"></div>
-                    </div>
-                    <div class="form-actions">
-                        <button type="submit" class="btn btn-primary btn-large">
-                            Create Recipe
-                        </button>
-                    </div>
-                </form>
-            </div>
-        </div>
-        <a href="/Recipes/MyRecipes" class="back-link">
-            ← Back to My Recipes
-        </a>
-    </div>
-    <partial name="_AddIngredientModal" />
-    <script src="~/js/RecipeCreate.js"></script>
-</body>
-</html>
Index: triMatch/Views/Recipes/Delete.cshtml
===================================================================
--- NutriMatch/Views/Recipes/Delete.cshtml	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,51 +1,0 @@
-@model NutriMatch.Models.Recipe
-
-@{
-    Layout = null;
-}
-
-<!DOCTYPE html>
-
-<html>
-
-<head>
-    <meta name="viewport" content="width=device-width" />
-    <title>Delete</title>
-</head>
-
-<body>
-
-    <h3>Are you sure you want to delete this?</h3>
-    <div>
-        <h4>Recipe</h4>
-        <hr />
-        <dl class="row">
-            <dt class="col-sm-2">
-                @Html.DisplayNameFor(model => model.Title)
-            </dt>
-            <dd class="col-sm-10">
-                @Html.DisplayFor(model => model.Title)
-            </dd>
-            <dt class="col-sm-2">
-                @Html.DisplayNameFor(model => model.Instructions)
-            </dt>
-            <dd class="col-sm-10">
-                @Html.DisplayFor(model => model.Instructions)
-            </dd>
-            <dt class="col-sm-2">
-                @Html.DisplayNameFor(model => model.Rating)
-            </dt>
-            <dd class="col-sm-10">
-                @Html.DisplayFor(model => model.Rating)
-            </dd>
-        </dl>
-
-        <form asp-action="Delete">
-            <input type="hidden" asp-for="Id" />
-            <input type="submit" value="Delete" class="btn btn-danger" /> |
-            <a asp-action="Index">Back to List</a>
-        </form>
-    </div>
-</body>
-
-</html>
Index: triMatch/Views/Recipes/Edit.cshtml
===================================================================
--- NutriMatch/Views/Recipes/Edit.cshtml	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,126 +1,0 @@
-@using System.Text.Json
-@model NutriMatch.Models.Recipe
-@{
-    Layout = null;
-}
-<!DOCTYPE html>
-<html>
-<head>
-    <meta name="viewport" content="width=device-width" />
-    <title>Edit Recipe - NutriMatch</title>
-    <link href="~/css/RecipeCreate.css" rel="stylesheet" />
-</head>
-<body>
-    <div class="main-container">
-        <div class="page-header">
-            <h1 class="page-title">Edit Recipe</h1>
-            <p class="page-subtitle">Share your culinary creation with the community</p>
-        </div>
-        <div class="form-card">
-            <div class="form-content">
-                <form asp-action="Edit" enctype="multipart/form-data">
-                    <div class="form-group">
-                        <label for="Title" class="label">Recipe Title</label>
-                        <input type="text" name="Title" id="Title" class="input" placeholder="Enter your recipe name..."
-                            value="@Model.Title" required />
-                        <div class="validation-error" id="titleValidation"></div>
-                    </div>
-                    <div class="form-group">
-                        <label class="label">Ingredients</label>
-                        <div class="search-container">
-                            <div class="flex-row">
-                                <input type="text" class="input flex-2" placeholder="Search ingredients..."
-                                    id="ingredientSearch">
-                                <select class="input flex-1" id="ingredientUnit">
-                                    <option value="">Unit</option>
-                                    <option value="g">Grams</option>
-                                    <option value="ml">Milliliters</option>
-                                    <option value="oz">Ounce</option>
-                                    <option value="tbsp">Tablespoon</option>
-                                    <option value="tsp">Teaspoon</option>
-                                    <option value="cup">Cup</option>
-                                </select>
-                                <input type="number" class="input flex-1" placeholder="Amount" id="ingredientQuantity"
-                                    step="0.01" min="0">
-                                <button type="button" class="btn btn-primary" id="addIngredientButton">
-                                    Add
-                                </button>
-                            </div>
-                            <div class="dropdown" id="ingredientDropdown"></div>
-                        </div>
-                        <div class="items-container" id="ingredientsList">
-                            <div class="items-empty">No ingredients added yet</div>
-                        </div>
-                        <input type="hidden" id="selectedIngredients" name="Ingredients" />
-                    </div>
-                    <div class="form-group">
-                        <label class="label">Instructions</label>
-                        <div class="flex-row">
-                            <textarea class="input textarea flex-1" placeholder="Add a cooking step..."
-                                id="instructionInput"></textarea>
-                            <button type="button" class="btn btn-primary" id="addInstructionButton">
-                                Add Step
-                            </button>
-                        </div>
-                        <div class="items-container" id="instructionsList">
-                            <div class="items-empty">
-                            </div>
-                        </div>
-                        <input type="hidden" id="selectedInstructions" name="Instructions" />
-                    </div>
-                    <div class="form-group">
-                        <label class="form-label">Recipe Photo</label>
-                        <div class="file-upload-area" id="fileUploadArea">
-                            <div class="file-upload-icon">📷</div>
-                            <p><strong>Click to upload</strong> or drag and drop</p>
-                            <p>PNG, JPG, GIF up to 10MB</p>
-                            <input type="file" id="RecipeImage" name="RecipeImage" accept="image/*"
-                                style="display: none;">
-                            <input type="hidden" name="ExistingImageUrl" value="@Model.ImageUrl" />
-                        </div>
-                        <div id="imagePreview" style="margin-top: 1rem; text-align: center;">
-                            <img src="@Model.ImageUrl" alt="Recipe preview"
-                                style="max-width: 300px; max-height: 200px; border-radius: 10px; box-shadow: 0 4px 8px rgba(0,0,0,0.1);">
-                        </div>
-                    </div>
-                    <div class="form-actions">
-                        <button type="submit" class="btn btn-primary btn-large">
-                            Save Changes
-                        </button>
-                    </div>
-                </form>
-            </div>
-        </div>
-        @if (!@ViewBag.RequireChange)
-        {
-            <a href="/Recipes" class="back-link">
-                ← Back to Recipes
-            </a>
-        }
-    </div>
-</body>
-</html>
-<script id="selectedInstructionsScript" type="application/json">
-    @Html.Raw(JsonSerializer.Serialize(Model.Instructions))
-</script>
-<script id="selectedIngredientsScript" type="application/json">
-   @Html.Raw(JsonSerializer.Serialize(Model.RecipeIngredients))
-</script>
-<script src="~/js/RecipeEdit.js"></script>
-<script>
-    const requireChange = @((ViewBag.RequireChange ?? false).ToString().ToLower());
-    document.addEventListener("DOMContentLoaded", () => {
-        if (!requireChange) return;
-        const form = document.querySelector("form");
-        let changed = false;
-        form.addEventListener("input", () => {
-            changed = true;
-        });
-        form.addEventListener("submit", (e) => {
-            if (!changed) {
-                e.preventDefault();
-                alert("Please make a change before saving.");
-            }
-        });
-    });
-</script>
Index: triMatch/Views/Recipes/Index.cshtml
===================================================================
--- NutriMatch/Views/Recipes/Index.cshtml	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,336 +1,0 @@
-@model List<NutriMatch.Models.Recipe>
-@{
-    Layout = "_Layout";
-}
-<!DOCTYPE html>
-<html lang="en">
-<head>
-    <meta charset="UTF-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <link href="~/css/RecipeIndex.css" rel="stylesheet">
-    <title>NutriMatch - Recipes</title>
-</head>
-<body>
-    @Html.AntiForgeryToken()
-    <div class="container mt-4">
-        <div class="search-container">
-            <div class="row align-items-center">
-                <div class="col-md-12">
-                    <input type="text" class="form-control search-input" placeholder="Search recipes..."
-                        id="searchInput">
-                </div>
-            </div>
-        </div>
-        <div class="filter-section">
-            <h4 class="mb-4" style="color: #1f2937; font-weight: 700;">
-                <i class="fas fa-sliders-h me-2" style="color: var(--nutri-green);"></i>
-                Filter by Macronutrients
-                <button class="btn btn-outline-secondary btn-sm ms-3" onclick="resetFilters()"><i
-                        class="fas fa-undo me-1"></i>Reset Filters</button>
-                @if (User.Identity.IsAuthenticated)
-                {
-                    <button style="float: right;" class="btn btn-success" onclick="openPreferencesModal()">
-                        <i class="fas fa-sliders-h me-2"></i>Recipe Preferences & Notifications
-                    </button>
-                }
-            </h4>
-            </h4>
-            <div class="row">
-                <div class="col-md-6 col-lg-3">
-                    <div class="slider-container">
-                        <div class="slider-label">
-                            <span><i class="fas fa-fire me-1" style="color: #ef4444;"></i>Calories</span>
-                            <span class="filter-values" id="caloriesValue">0 - 2000</span>
-                        </div>
-                        <div class="range-slider">
-                            <div class="range-fill" id="caloriesFill"></div>
-                            <input type="range" class="range-input" min="0" max="2000" value="0" id="caloriesMin"
-                                oninput="updateSlider('calories')">
-                            <input type="range" class="range-input" min="0" max="2000" value="2000" id="caloriesMax"
-                                oninput="updateSlider('calories')">
-                        </div>
-                    </div>
-                </div>
-                <div class="col-md-6 col-lg-3">
-                    <div class="slider-container">
-                        <div class="slider-label">
-                            <span><i class="fas fa-drumstick-bite me-1" style="color: #8b5cf6;"></i>Protein (g)</span>
-                            <span class="filter-values" id="proteinValue">0 - 150</span>
-                        </div>
-                        <div class="range-slider">
-                            <div class="range-fill" id="proteinFill"></div>
-                            <input type="range" class="range-input" min="0" max="150" value="0" id="proteinMin"
-                                oninput="updateSlider('protein')">
-                            <input type="range" class="range-input" min="0" max="150" value="150" id="proteinMax"
-                                oninput="updateSlider('protein')">
-                        </div>
-                    </div>
-                </div>
-                <div class="col-md-6 col-lg-3">
-                    <div class="slider-container">
-                        <div class="slider-label">
-                            <span><i class="fas fa-bread-slice me-1" style="color: #f59e0b;"></i>Carbs (g)</span>
-                            <span class="filter-values" id="carbsValue">0 - 200</span>
-                        </div>
-                        <div class="range-slider">
-                            <div class="range-fill" id="carbsFill"></div>
-                            <input type="range" class="range-input" min="0" max="200" value="0" id="carbsMin"
-                                oninput="updateSlider('carbs')">
-                            <input type="range" class="range-input" min="0" max="200" value="200" id="carbsMax"
-                                oninput="updateSlider('carbs')">
-                        </div>
-                    </div>
-                </div>
-                <div class="col-md-6 col-lg-3">
-                    <div class="slider-container">
-                        <div class="slider-label">
-                            <span><i class="fas fa-tint me-1" style="color: #e5eb4dfa;"></i>Fats (g)</span>
-                            <span class="filter-values" id="fatsValue">0 - 150</span>
-                        </div>
-                        <div class="range-slider">
-                            <div class="range-fill" id="fatsFill"></div>
-                            <input type="range" class="range-input" min="0" max="150" value="0" id="fatsMin"
-                                oninput="updateSlider('fats')">
-                            <input type="range" class="range-input" min="0" max="150" value="150" id="fatsMax"
-                                oninput="updateSlider('fats')">
-                        </div>
-                    </div>
-                </div>
-            </div>
-        </div>
-        <div class=" d-flex justify-content-between align-items-center mb-4">
-            <div class="results-count">
-                <i class="fas fa-utensils me-2"></i>Showing <strong id="visibleCount">@Model.Count</strong> of <strong
-                    id="totalCount">@ViewBag.TotalRecipes</strong> recipes
-            </div>
-            <div class="col-md-4">
-                <button class="btn btn-outline-success w-100" id="favoritesToggle" onclick="toggleFavoritesFilter()">
-                    <i class="fas fa-heart me-2"></i>Show Favorites Only
-                </button>
-            </div>
-        </div>
-        <div class="recipe-grid" id="recipeGrid">
-            @foreach (var recipe in Model)
-            {
-                var isFavorited = ViewBag.FavoriteRecipeIds != null &&
-                ((List<int>)ViewBag.FavoriteRecipeIds).Contains(recipe.Id);
-                <div class="recipe-card" onclick="showRecipeDetails(@recipe.Id,false)" data-calories="@recipe.Calories"
-                    data-protein="@recipe.Protein" data-carbs="@recipe.Carbs" data-fat="@recipe.Fat">
-                    @if (recipe.User.Id != ViewBag.userId)
-                    {
-                        <button class="favorite-btn"
-                            onclick="event.stopPropagation(); toggleFavoriteFromIndex(this, @recipe.Id)"
-                            data-recipe-id="@recipe.Id" data-favorited="@isFavorited.ToString().ToLower()">
-                            <i class="@(isFavorited ? "fas" : "far") fa-heart"></i>
-                        </button>
-                    }
-                    <img src="@recipe.ImageUrl" alt="@recipe.Title" class="recipe-image">
-                    <div class="recipe-content">
-                        <h3 class="recipe-title">@(recipe.Title.Length > 30
-                                                    ? recipe.Title.Substring(0, 30) + "…"
-                                                    : recipe.Title)</h3>
-                        <div class="recipe-meta">
-                            <span class="rating">
-                                <i class="fas fa-star"></i> @recipe.Rating
-                            </span>
-                            <span>
-                                <i class="fas fa-user"></i>
-                                @(recipe.User.UserName.Length > 23
-                                                            ? recipe.User.UserName.Substring(0, 23) + "…"
-                                                            : recipe.User.UserName)
-                            </span>
-                            <span><i class="fas fa-calendar"> </i> @recipe.CreatedAt.ToString("MMM dd, yyyy")</span>
-                        </div>
-                        <div class="recipe-macros">
-                            <div class="macro-item">
-                                <div class="macro-value">@recipe.Calories</div>
-                                <div class="macro-label">Cal</div>
-                            </div>
-                            <div class="macro-item">
-                                <div class="macro-value">@recipe.Protein</div>
-                                <div class="macro-label">Protein</div>
-                            </div>
-                            <div class="macro-item">
-                                <div class="macro-value">@recipe.Carbs</div>
-                                <div class="macro-label">Carbs</div>
-                            </div>
-                            <div class="macro-item">
-                                <div class="macro-value">@recipe.Fat</div>
-                                <div class="macro-label">Fats</div>
-                            </div>
-                        </div>
-                    </div>
-                </div>
-            }
-        </div>
-        <div id="loadingSpinner" class="text-center mt-4" style="display: none;">
-            <div class="spinner-border text-success" role="status">
-                <span class="visually-hidden">Loading...</span>
-            </div>
-            <p class="mt-2">Loading more recipes...</p>
-        </div>
-        <div id="endOfResults" class="text-center mt-4" style="display: none;">
-            <p class="text-muted">
-                <i class="fas fa-check-circle me-2"></i>
-                You've reached the end of all recipes!
-            </p>
-        </div>
-    </div>
-    <!-- Preferences Modal -->
-        <div class="modal fade" id="preferencesModal" tabindex="-1">
-            <div class="modal-dialog modal-lg">
-                <div class="modal-content modal-content-preferences">
-                    <div class="modal-header modal-header-preferences">
-                        <h5 class="modal-title">Recipe Preferences & Notifications</h5>
-                        <button type="button" class="btn-close" data-bs-dismiss="modal"></button>
-                    </div>
-                    <div class="modal-body">
-                        <p class="text-muted small mb-3">
-                            <i class="fas fa-bell me-1"></i>
-                            Get notified when new recipes matching your preferences are added
-                        </p>
-                        
-                        <div class="tag-selection">
-                            <!-- High Protein -->
-                            <div class="tag-item-wrapper">
-                                <div class="tag-item" onclick="toggleTagExpansion('high-protein')">
-                                    <input type="checkbox" id="tag-high-protein" value="high-protein">
-                                    <label for="tag-high-protein">
-                                        <i class="fas fa-drumstick-bite"></i> High Protein
-                                    </label>
-                                    <i class="fas fa-chevron-down expand-icon"></i>
-                                </div>
-                                <div class="tag-threshold" id="threshold-high-protein">
-                                    <label class="small text-muted">Minimum protein (g):</label>
-                                    <input type="number" class="form-control form-control-sm" 
-                                        id="value-high-protein" min="10" max="150" value="30" step="5">
-                                </div>
-                            </div>
-
-                            <!-- Low Carb -->
-                            <div class="tag-item-wrapper">
-                                <div class="tag-item" onclick="toggleTagExpansion('low-carb')">
-                                    <input type="checkbox" id="tag-low-carb" value="low-carb">
-                                    <label for="tag-low-carb">
-                                        <i class="fas fa-bread-slice"></i> Low Carb
-                                    </label>
-                                    <i class="fas fa-chevron-down expand-icon"></i>
-                                </div>
-                                <div class="tag-threshold" id="threshold-low-carb">
-                                    <label class="small text-muted">Maximum carbs (g):</label>
-                                    <input type="number" class="form-control form-control-sm" 
-                                        id="value-low-carb" min="5" max="100" value="20" step="5">
-                                </div>
-                            </div>
-
-                            <!-- High Carb -->
-                            <div class="tag-item-wrapper">
-                                <div class="tag-item" onclick="toggleTagExpansion('high-carb')">
-                                    <input type="checkbox" id="tag-high-carb" value="high-carb">
-                                    <label for="tag-high-carb">
-                                        <i class="fas fa-bread-slice"></i> High Carb
-                                    </label>
-                                    <i class="fas fa-chevron-down expand-icon"></i>
-                                </div>
-                                <div class="tag-threshold" id="threshold-high-carb">
-                                    <label class="small text-muted">Minimum carbs (g):</label>
-                                    <input type="number" class="form-control form-control-sm" 
-                                        id="value-high-carb" min="30" max="150" value="50" step="5">
-                                </div>
-                            </div>
-
-                            <!-- Low Fat -->
-                            <div class="tag-item-wrapper">
-                                <div class="tag-item" onclick="toggleTagExpansion('low-fat')">
-                                    <input type="checkbox" id="tag-low-fat" value="low-fat">
-                                    <label for="tag-low-fat">
-                                        <i class="fas fa-tint"></i> Low Fat
-                                    </label>
-                                    <i class="fas fa-chevron-down expand-icon"></i>
-                                </div>
-                                <div class="tag-threshold" id="threshold-low-fat">
-                                    <label class="small text-muted">Maximum fat (g):</label>
-                                    <input type="number" class="form-control form-control-sm" 
-                                        id="value-low-fat" min="5" max="50" value="15" step="5">
-                                </div>
-                            </div>
-
-                            <!-- High Fat -->
-                            <div class="tag-item-wrapper">
-                                <div class="tag-item" onclick="toggleTagExpansion('high-fat')">
-                                    <input type="checkbox" id="tag-high-fat" value="high-fat">
-                                    <label for="tag-high-fat">
-                                        <i class="fas fa-tint"></i> High Fat
-                                    </label>
-                                    <i class="fas fa-chevron-down expand-icon"></i>
-                                </div>
-                                <div class="tag-threshold" id="threshold-high-fat">
-                                    <label class="small text-muted">Minimum fat (g):</label>
-                                    <input type="number" class="form-control form-control-sm" 
-                                        id="value-high-fat" min="15" max="100" value="30" step="5">
-                                </div>
-                            </div>
-
-                            <!-- Balanced -->
-                            <div class="tag-item-wrapper">
-                                <div class="tag-item">
-                                    <input type="checkbox" id="tag-balanced" value="balanced">
-                                    <label for="tag-balanced">
-                                        <i class="fas fa-balance-scale"></i> Balanced
-                                    </label>
-                                </div>
-                            </div>
-
-                            <!-- Low Calorie -->
-                            <div class="tag-item-wrapper">
-                                <div class="tag-item" onclick="toggleTagExpansion('low-calorie')">
-                                    <input type="checkbox" id="tag-low-calorie" value="low-calorie">
-                                    <label for="tag-low-calorie">
-                                        <i class="fas fa-fire"></i> Low Calorie
-                                    </label>
-                                    <i class="fas fa-chevron-down expand-icon"></i>
-                                </div>
-                                <div class="tag-threshold" id="threshold-low-calorie">
-                                    <label class="small text-muted">Maximum calories:</label>
-                                    <input type="number" class="form-control form-control-sm" 
-                                        id="value-low-calorie" min="100" max="500" value="300" step="50">
-                                </div>
-                            </div>
-
-                            <!-- High Calorie -->
-                            <div class="tag-item-wrapper">
-                                <div class="tag-item" onclick="toggleTagExpansion('high-calorie')">
-                                    <input type="checkbox" id="tag-high-calorie" value="high-calorie">
-                                    <label for="tag-high-calorie">
-                                        <i class="fas fa-fire"></i> High Calorie
-                                    </label>
-                                    <i class="fas fa-chevron-down expand-icon"></i>
-                                </div>
-                                <div class="tag-threshold" id="threshold-high-calorie">
-                                    <label class="small text-muted">Minimum calories:</label>
-                                    <input type="number" class="form-control form-control-sm" 
-                                        id="value-high-calorie" min="400" max="1500" value="600" step="50">
-                                </div>
-                            </div>
-                        </div>
-                    </div>
-                    <div class="modal-footer">
-                        <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cancel</button>
-                        <button type="button" class="btn btn-success" onclick="savePreferences()">
-                            <i class="fas fa-save me-2"></i>Save Preferences
-                        </button>
-                    </div>
-                </div>
-            </div>
-        </div>
-    <div id="modalWindow"></div>
-    <script>
-        window.recipeData = {
-            currentPage: @ViewBag.CurrentPage,
-            hasMorePages: @ViewBag.HasMorePages.ToString().ToLower(),
-            totalRecipes: @ViewBag.TotalRecipes
-        };
-    </script>
-    <script src="~/js/RecipeIndex.js"></script>
-</body>
-</html>
Index: triMatch/Views/Recipes/MyRecipes.cshtml
===================================================================
--- NutriMatch/Views/Recipes/MyRecipes.cshtml	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,106 +1,0 @@
-@model List<Recipe>
-@{
-    ViewData["Title"] = "My Recipes";
-    Layout = "~/Views/Shared/_Layout.cshtml";
-}
-<link href="~/css/MyRecipes.css" rel="stylesheet">
-<body>
-    <div class="container mt-5">
-        <div class="header-section">
-            <h1>My Recipes</h1>
-            <p>Manage and showcase your culinary creations. Share your favorite dishes with the NutriMatch community.
-            </p>
-            <a href="/Recipes/Create" class="create-recipe-btn">+ Create New Recipe</a>
-        </div>
-        <div class="stats-section">
-            <div class="stat-card">
-                <div class="stat-number">@Model.Count</div>
-                <div class="stat-label">Total Recipes</div>
-            </div>
-            <div class="stat-card">
-                <div class="stat-number">@ViewBag.AverageRating</div>
-                <div class="stat-label">Avg Rating</div>
-            </div>
-        </div>
-        @if (Model != null && Model.Any())
-        {
-            <div class="recipe-grid" id="recipeGrid">
-                @foreach (var recipe in Model)
-                {
-                    <div class="recipe-card" onclick="showRecipeDetails(@recipe.Id,true,'@recipe.RecipeStatus')"
-                        data-calories="@recipe.Calories" data-protein="@recipe.Protein" data-carbs="@recipe.Carbs"
-                        data-fat="@recipe.Fat">
-                        <img src="@recipe.ImageUrl" alt="@recipe.Title" class="recipe-image">
-                        <div class="badge">
-                            @if (recipe.RecipeStatus == "Pending")
-                            {
-                                <span class="badge bg-warning">
-                                    <i class="fas fa-clock me-1"></i>Pending
-                                </span>
-                            }
-                            else if (recipe.RecipeStatus == "Accepted")
-                            {
-                                <span class="badge bg-success">
-                                    <i class="fas fa-check me-1"></i>Accepted
-                                </span>
-                            }
-                            else if (recipe.RecipeStatus == "Declined")
-                            {
-                                <span class="badge bg-danger">
-                                    <i class="fas fa-times me-1"></i>Declined
-                                </span>
-                            }
-                        </div>
-                        <div class="recipe-content">
-                            <h3 class="recipe-title">@(recipe.Title.Length > 30
-                                                        ? recipe.Title.Substring(0, 30) + "…"
-                                                        : recipe.Title)</h3>
-                            <div class="recipe-meta">
-                                <span class="rating">
-                                    <i class="fas fa-star"></i> @recipe.Rating
-                                </span>
-                                <span>
-                                    <i class="fas fa-user"></i>
-                                    @(recipe.User.UserName.Length > 23
-                                                                ? recipe.User.UserName.Substring(0, 23) + "…"
-                                                                : recipe.User.UserName)
-                                </span>
-                            </div>
-                            <div class="recipe-macros">
-                                <div class="macro-item">
-                                    <div class="macro-value">@recipe.Calories</div>
-                                    <div class="macro-label">Cal</div>
-                                </div>
-                                <div class="macro-item">
-                                    <div class="macro-value">@recipe.Protein</div>
-                                    <div class="macro-label">Protein</div>
-                                </div>
-                                <div class="macro-item">
-                                    <div class="macro-value">@recipe.Carbs</div>
-                                    <div class="macro-label">Carbs</div>
-                                </div>
-                                <div class="macro-item">
-                                    <div class="macro-value">@recipe.Fat</div>
-                                    <div class="macro-label">Fats</div>
-                                </div>
-                            </div>
-                        </div>
-                    </div>
-                }
-            </div>
-        }
-        else
-        {
-            <div class="empty-state">
-                <div class="empty-icon">👨‍🍳</div>
-                <h3 class="empty-title">No Recipes Yet</h3>
-                <p class="empty-text">Start creating your first recipe and share your culinary masterpieces with the
-                    community!</p>
-                <a href="/Recipes/Create" class="create-recipe-btn">Create Your First Recipe</a>
-            </div>
-        }
-    </div>
-    <div id="modalWindow"></div>
-    <div id="modalWindowDelete"></div>
-    <script src="~/js/MyRecipes.js"></script>
-</body>
Index: triMatch/Views/Recipes/_AddIngredientModal.cshtml
===================================================================
--- NutriMatch/Views/Recipes/_AddIngredientModal.cshtml	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,47 +1,0 @@
-<div id="addIngredientModal" class="modal" style="display: none;">
-    <div class="modal-content">
-        <div class="modal-header">
-            <h3>Add New Ingredient</h3>
-            <span class="close" id="closeModal">&times;</span>
-        </div>
-        <div class="modal-body">
-            <form id="addIngredientForm">
-                @Html.AntiForgeryToken()
-                <div class="form-group">
-                    <label for="newIngredientName" class="label">Ingredient Name</label>
-                    <input type="text" id="newIngredientName" name="Name" class="input"
-                        placeholder="Enter ingredient name..." required>
-                </div>
-
-                <div class="form-group">
-                    <label for="newIngredientCalories" class="label">Calories (per 100g)</label>
-                    <input type="number" id="newIngredientCalories" name="Calories" class="input" step="0.01" min="0"
-                        placeholder="0" required>
-                </div>
-
-                <div class="form-group">
-                    <label for="newIngredientProtein" class="label">Protein (per 100g)</label>
-                    <input type="number" id="newIngredientProtein" name="Protein" class="input" step="0.01" min="0"
-                        placeholder="0" required>
-                </div>
-
-                <div class="form-group">
-                    <label for="newIngredientCarbs" class="label">Carbohydrates (per 100g)</label>
-                    <input type="number" id="newIngredientCarbs" name="Carbs" class="input" step="0.01" min="0"
-                        placeholder="0" required>
-                </div>
-
-                <div class="form-group">
-                    <label for="newIngredientFat" class="label">Fat (per 100g)</label>
-                    <input type="number" id="newIngredientFat" name="Fat" class="input" step="0.01" min="0"
-                        placeholder="0" required>
-                </div>
-
-                <div class="form-actions">
-                    <button type="button" id="cancelAddIngredient" class="btn btn-secondary">Cancel</button>
-                    <button type="submit" class="btn btn-primary">Add Ingredient</button>
-                </div>
-            </form>
-        </div>
-    </div>
-</div>
Index: triMatch/Views/Recipes/_RecipeDeclinePartial.cshtml
===================================================================
--- NutriMatch/Views/Recipes/_RecipeDeclinePartial.cshtml	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,265 +1,0 @@
-@model NutriMatch.Models.Recipe
-<link href="~/css/_RecipeDeclinePartial.css" rel="stylesheet" />
-@{
-    bool canResubmit = ViewBag.CanResubmit ?? false;
-    DateTime? lastEditDate = ViewBag.LastEditDate;
-    DateTime? declineDate = ViewBag.DeclineDate;
-}
-<div class="modal fade" id="recipeDeclineModal" tabindex="-1" aria-labelledby="recipeDeclineModalLabel"
-    aria-hidden="true">
-    @Html.AntiForgeryToken()
-    <div class="modal-dialog modal-xl">
-        <div class="modal-content">
-            <div class="modal-header border-0">
-                <h5 class="modal-title text-danger" id="recipeDeclineModalLabel">
-                    <i class="fas fa-exclamation-triangle"></i>
-                    Recipe Declined
-                </h5>
-                <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
-            </div>
-            <div class="modal-body">
-                <div class="recipe-hero">
-                    <div class="recipe-image-container">
-                        <img src="@Model.ImageUrl" alt="@Model.Title" class="recipe-image-details">
-                        <div class="decline-overlay">
-                            <div class="decline-badge">
-                                <i class="fas fa-times-circle"></i>
-                                DECLINED
-                            </div>
-                        </div>
-                    </div>
-                    <div class="recipe-info">
-                        <div>
-                            <div class="chef-badge">
-                                <img src="@Model.User.ProfilePictureUrl" class="chef-avatar">
-                                @Model.User.UserName
-                            </div>
-                            <h2 class="recipe-title-details">@Model.Title</h2>
-                            <div class="decline-status">
-                                <div class="status-item">
-                                    <i class="fas fa-calendar-times text-danger"></i>
-                                    <span>Declined on: @Model.DeclineReason </span>
-                                </div>
-                                @if (lastEditDate.HasValue)
-                                {
-                                    <div class="status-item">
-                                        <i class="fas fa-edit text-info"></i>
-                                        <span>Last edited: @lastEditDate.Value.ToString("MMM dd, yyyy HH:mm")</span>
-                                    </div>
-                                }
-                            </div>
-                        </div>
-                        <div class="recipe-actions">
-                            <div class="d-flex gap-3 align-items-center">
-                                <button onclick="location.href='/Recipes/Edit/@Model.Id?requiresChange=true'"
-                                    class="action-btn edit-btn" title="Edit Recipe">
-                                    <i class="fas fa-edit"></i>
-                                    <span>Edit and Resubmit Recipe</span>
-                                </button>
-                            </div>
-                            @if (!canResubmit)
-                            {
-                                <div class="resubmit-hint">
-                                    <i class="fas fa-info-circle"></i>
-                                    Please edit your recipe to address the feedback before resubmitting
-                                </div>
-                            }
-                        </div>
-                    </div>
-                </div>
-                <div class="feedback-section">
-                    <div class="feedback-card">
-                        <div class="feedback-header">
-                            <h4>
-                                <i class="fas fa-comment-alt"></i>
-                                Moderator Feedback
-                            </h4>
-                        </div>
-                        <div class="feedback-content">
-                            @if (!string.IsNullOrWhiteSpace(Model.AdminComment))
-                            {
-                                <div class="admin-comment">
-                                    @Html.Raw(Model.AdminComment.Replace("\n", "<br/>"))
-                                </div>
-                            }
-                            else
-                            {
-                                <div class="no-comment">
-                                    <i class="fas fa-info-circle"></i>
-                                    No specific feedback was provided. Please review your recipe for compliance with our
-                                    guidelines.
-                                </div>
-                            }
-                        </div>
-                    </div>
-                </div>
-                <div class="row mt-4">
-                    <div class="col-md-4">
-                        <div class="nutrition-card">
-                            <h4 class="section-title">
-                                <i class="fas fa-chart-pie"></i>
-                                Nutrition Facts
-                            </h4>
-                            <div class="nutrition-grid">
-                                <div class="nutrition-item">
-                                    <div class="nutrition-icon">
-                                        <i class="fas fa-fire me-1" style="color: #ef4444;"></i>
-                                    </div>
-                                    <div class="nutrition-value">@Model.Calories</div>
-                                    <div class="nutrition-label">Calories</div>
-                                </div>
-                                <div class="nutrition-item">
-                                    <div class="nutrition-icon">
-                                        <i class="fas fa-drumstick-bite me-1" style="color: #8b5cf6;"></i>
-                                    </div>
-                                    <div class="nutrition-value">@Model.Protein</div>
-                                    <div class="nutrition-label">Protein</div>
-                                </div>
-                                <div class="nutrition-item">
-                                    <div class="nutrition-icon">
-                                        <i class="fas fa-bread-slice me-1" style="color: #f59e0b;"></i>
-                                    </div>
-                                    <div class="nutrition-value">@Model.Carbs</div>
-                                    <div class="nutrition-label">Carbs</div>
-                                </div>
-                                <div class="nutrition-item">
-                                    <div class="nutrition-icon">
-                                        <i class="fas fa-tint me-1" style="color: #e5eb4dfa;"></i>
-                                    </div>
-                                    <div class="nutrition-value">@Model.Fat</div>
-                                    <div class="nutrition-label">Fat</div>
-                                </div>
-                            </div>
-                        </div>
-                    </div>
-                    <div class="col-md-8">
-                        <div class="ingredients-list">
-                            <h4 class="section-title">
-                                <i class="fas fa-list-ul"></i>
-                                Ingredients
-                            </h4>
-                            @if (Model.RecipeIngredients != null && Model.RecipeIngredients.Any())
-                            {
-                                @for (int i = 0; i < Model.RecipeIngredients.Count; i++)
-                                {
-                                    <div class="ingredient-item">
-                                        <span class="ingredient-bullet">•</span>
-                                        <span>@Model.RecipeIngredients[i].Ingredient.Name, @Model.RecipeIngredients[i].Quantity
-                                            @Model.RecipeIngredients[i].Unit</span>
-                                    </div>
-                                }
-                            }
-                        </div>
-                        <div class="instructions-list">
-                            <h4 class="section-title">
-                                <i class="fas fa-clipboard-list"></i>
-                                Instructions
-                            </h4>
-                            @{
-                                var instructions =
-                                System.Text.Json.JsonSerializer.Deserialize<List<string>>(Model.Instructions[0]);
-                            }
-                            @for (var i = 0; i < instructions.Count; i++)
-                            {
-                                <div class="instruction-item">
-                                    <span class="instruction-number">@(i + 1)</span>
-                                    <span class="instruction-text">@instructions[i]</span>
-                                </div>
-                            }
-                        </div>
-                    </div>
-                </div>
-            </div>
-        </div>
-    </div>
-</div>
-<script>
-    document.getElementById('recipeDeclineModal').addEventListener('shown.bs.modal', function () {
-        this.querySelector('.modal-body').scrollTop = 0;
-    });
-    let isResubmitInProgress = false;
-    function resubmitRecipe(recipeId) {
-        if (isResubmitInProgress) return;
-        const resubmitBtn = document.querySelector('.resubmit-btn');
-        if (resubmitBtn.classList.contains('disabled')) {
-            showDeclineToast('Please edit your recipe first before resubmitting', 'error');
-            return;
-        }
-        if (!confirm('Are you sure you want to resubmit this recipe for review?')) {
-            return;
-        }
-        isResubmitInProgress = true;
-        resubmitBtn.classList.add('disabled');
-        const originalText = resubmitBtn.innerHTML;
-        resubmitBtn.innerHTML = '<i class="fas fa-spinner fa-spin"></i><span>Submitting...</span>';
-        fetch('/Recipes/Resubmit', {
-            method: 'POST',
-            headers: {
-                'Content-Type': 'application/json',
-                'RequestVerificationToken': document.querySelector('input[name="__RequestVerificationToken"]')?.value
-            },
-            body: JSON.stringify({
-                recipeId: recipeId
-            })
-        })
-            .then(response => response.json())
-            .then(data => {
-                if (data.success) {
-                    showDeclineToast('Recipe resubmitted successfully! It will be reviewed again.', 'success');
-                    setTimeout(() => {
-                        const modal = bootstrap.Modal.getInstance(document.getElementById('recipeDeclineModal'));
-                        if (modal) modal.hide();
-                        if (data.redirectUrl) {
-                            window.location.href = data.redirectUrl;
-                        } else {
-                            setTimeout(() => window.location.reload(), 1000);
-                        }
-                    }, 1500);
-                } else {
-                    showDeclineToast(data.message || 'Failed to resubmit recipe', 'error');
-                    resubmitBtn.classList.remove('disabled');
-                }
-            })
-            .catch(error => {
-                console.error('Error:', error);
-                showDeclineToast('An error occurred while resubmitting the recipe', 'error');
-                resubmitBtn.classList.remove('disabled');
-            })
-            .finally(() => {
-                isResubmitInProgress = false;
-                resubmitBtn.innerHTML = originalText;
-            });
-    }
-    function showDeclineToast(message, type = 'success') {
-        const existingToast = document.querySelector('.decline-toast');
-        if (existingToast) {
-            existingToast.remove();
-        }
-        const toast = document.createElement('div');
-        toast.className = `decline-toast ${type}`;
-        toast.textContent = message;
-        document.body.appendChild(toast);
-        setTimeout(() => toast.classList.add('show'), 100);
-        setTimeout(() => {
-            toast.classList.remove('show');
-            setTimeout(() => toast.remove(), 300);
-        }, 4000);
-    }
-    document.addEventListener('DOMContentLoaded', function () {
-        const urlParams = new URLSearchParams(window.location.search);
-        if (urlParams.get('edited') === 'true') {
-            const resubmitBtn = document.querySelector('.resubmit-btn');
-            if (resubmitBtn) {
-                resubmitBtn.classList.remove('disabled');
-                resubmitBtn.removeAttribute('disabled');
-                resubmitBtn.title = 'Resubmit for Review';
-                const hint = document.querySelector('.resubmit-hint');
-                if (hint) {
-                    hint.style.display = 'none';
-                }
-                showDeclineToast('Recipe updated! You can now resubmit it for review.', 'success');
-            }
-        }
-    });
-    document.addEventListener
-</script>
Index: triMatch/Views/Recipes/_RecipeDeletePartial.cshtml
===================================================================
--- NutriMatch/Views/Recipes/_RecipeDeletePartial.cshtml	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,101 +1,0 @@
-@model NutriMatch.Models.Recipe
-
-<link href="~/css/_RecipeDeletePartial.css" rel="stylesheet" />
-
-<div class="modal fade delete-modal" id="deleteConfirmModal" tabindex="-1" aria-labelledby="deleteConfirmModalLabel"
-    aria-hidden="true">
-    <div class="modal-dialog modal-dialog-centered">
-        <div class="modal-content">
-            <div class="modal-header">
-                <h5 class="modal-title" id="deleteConfirmModalLabel">
-                    <i class="fas fa-exclamation-triangle"></i>
-                    Delete Recipe
-                </h5>
-            </div>
-            <div class="modal-body">
-                <div class="delete-warning">
-                    <h4>Are you sure you want to delete this recipe?</h4>
-                    <p>This action cannot be undone. The recipe will be permanently removed from your collection.</p>
-                </div>
-
-                <div class="recipe-preview-card">
-                    <div class="recipe-preview-header">
-                        <img src="@Model.ImageUrl" alt="@Model.Title" class="recipe-preview-image">
-                        <div class="recipe-preview-info">
-                            <h5>@Model.Title</h5>
-                            <div class="recipe-meta">
-                                <span><i class="fas fa-star"></i> @Model.Rating</span>
-                                <span><i class="far fa-clock"></i> 25 min</span>
-                                <span><i class="fas fa-user"></i> Chef Milan</span>
-                            </div>
-                        </div>
-                    </div>
-
-                    <div class="recipe-details-grid">
-                        <div class="detail-item">
-                            <span class="detail-label">Calories:</span>
-                            <span class="detail-value">@Model.Calories</span>
-                        </div>
-                        <div class="detail-item">
-                            <span class="detail-label">Protein:</span>
-                            <span class="detail-value">@Model.Protein g</span>
-                        </div>
-                        <div class="detail-item">
-                            <span class="detail-label">Carbs:</span>
-                            <span class="detail-value">@Model.Carbs g</span>
-                        </div>
-                        <div class="detail-item">
-                            <span class="detail-label">Fat:</span>
-                            <span class="detail-value">@Model.Fat g</span>
-                        </div>
-                        <div class="detail-item">
-                            <span class="detail-label">Rating:</span>
-                            <span class="detail-value">@Model.Rating</span>
-                        </div>
-                        <div class="detail-item">
-                            <span class="detail-label">Ingredients:</span>
-                            <span class="detail-value">@(Model.RecipeIngredients?.Count ?? 0) items</span>
-                        </div>
-                    </div>
-                </div>
-
-                <div class="delete-actions">
-                    <button type="button" class="btn btn-cancel" data-bs-dismiss="modal">
-                        <i class="fas fa-times me-2"></i>Cancel
-                    </button>
-                    <form asp-action="Delete" method="post" style="display: inline;">
-                        <input type="hidden" asp-for="Id" />
-                        <button type="submit" class="btn btn-delete-confirm" id="confirmDeleteBtn">
-                            <i class="fas fa-trash me-2"></i>Delete Recipe
-                        </button>
-                    </form>
-                </div>
-            </div>
-        </div>
-    </div>
-</div>
-
-<script>
-    document.addEventListener('DOMContentLoaded', function () {
-        const confirmDeleteBtn = document.getElementById('confirmDeleteBtn');
-        if (confirmDeleteBtn) {
-            confirmDeleteBtn.addEventListener('click', function () {
-                this.classList.add('loading');
-                this.innerHTML = '<i class="fas fa-spinner fa-spin me-2"></i>Deleting...';
-                this.disabled = true;
-            });
-        }
-
-        const deleteModal = document.getElementById('deleteConfirmModal');
-        if (deleteModal) {
-            deleteModal.addEventListener('hidden.bs.modal', function () {
-                const confirmBtn = document.getElementById('confirmDeleteBtn');
-                if (confirmBtn) {
-                    confirmBtn.classList.remove('loading');
-                    confirmBtn.innerHTML = '<i class="fas fa-trash me-2"></i>Delete Recipe';
-                    confirmBtn.disabled = false;
-                }
-            });
-        }
-    });
-</script>
Index: triMatch/Views/Recipes/_RecipeDetailsPartial.cshtml
===================================================================
--- NutriMatch/Views/Recipes/_RecipeDetailsPartial.cshtml	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,480 +1,0 @@
-@model NutriMatch.Models.Recipe
-<link href="~/css/_RecipeDetailsPartial.css" rel="stylesheet" />
-@{
-    bool isOwner = ViewBag.IsOwner ?? false;
-    double averageRating = ViewBag.AverageRating ?? 0.0;
-    int totalRatings = ViewBag.TotalRatings ?? 0;
-    double userRating = ViewBag.UserRating ?? 0.0;
-    bool hasUserRated = ViewBag.HasUserRated ?? false;
-    bool isFavorited = ViewBag.IsFavorited ?? false;
-    bool AddAdminButtons = ViewBag.AddAdminButtons ?? false;
-    bool InIndex = ViewBag.InIndex ?? false;
-}
-<div class="modal fade" id="recipeModal" tabindex="-1" aria-labelledby="recipeModalLabel" aria-hidden="true">
-    @Html.AntiForgeryToken()
-    <div class="modal-dialog modal-xl">
-        <div class="modal-content">
-            <div class="modal-header border-0">
-                <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
-            </div>
-            <div class="modal-body">
-                <div class="recipe-hero">
-                    <div class="recipe-image-container">
-                        <img src="@Model.ImageUrl" alt="@Model.Title" class="recipe-image-details" style="width: 100%;">
-                    </div>
-                    <div class="recipe-info">
-                        <div>
-                            <div class="chef-badge">
-                                <img src="@Model.User.ProfilePictureUrl" class="chef-avatar">
-                                @Model.User.UserName
-                            </div>
-                            <h2 class="recipe-title-details">@Model.Title</h2>
-                            <div class="recipe-rating-section">
-                                <div class="current-rating">
-                                    <span class="rating-label">Rating:</span>
-                                    <div class="rating-display">
-                                        <div class="rating-stars" id="displayStars">
-                                            @for (int i = 1; i <= 5; i++)
-                                            {
-                                                @if (i <= Math.Floor(averageRating))
-                                                {
-                                                    <i class="fas fa-star filled" data-rating="@i"></i>
-                                                }
-                                                else if (i <= averageRating)
-                                                {
-                                                    <i class="fas fa-star-half-alt filled" data-rating="@i"></i>
-                                                }
-                                                else
-                                                {
-                                                    <i class="far fa-star" data-rating="@i"></i>
-                                                }
-                                            }
-                                        </div>
-                                        <span class="rating-value">(@averageRating.ToString("0.0"))</span>
-                                        <span class="rating-count">@totalRatings review@(totalRatings != 1 ? "s" :
-                                                                                        "")</span>
-                                    </div>
-                                </div>
-                            </div>
-                        </div>
-                        <div class="recipe-actions">
-                            @if (AddAdminButtons)
-                            {
-                                <div class="admin-actions">
-                                    <button onclick="approveRecipe(@Model.Id)" class="admin-btn approve-btn subtle"
-                                        title="Approve Recipe">
-                                        <i></i>
-                                        <span>Approve</span>
-                                    </button>
-                                    <button onclick="declineRecipe(@Model.Id)" class="admin-btn decline-btn subtle"
-                                        title="Decline Recipe">
-                                        <i></i>
-                                        <span>Decline</span>
-                                    </button>
-                                </div>
-                            }
-                            else
-                            {
-                                @if (isOwner)
-                                {
-                                    if (!InIndex)
-                                    {
-                                        <div class="d-flex gap-2">
-                                            <button onclick="location.href='/Recipes/Edit/@Model.Id'" class="action-btn edit-btn"
-                                                title="Edit Recipe">
-                                                <i class="fas fa-edit"></i>
-                                            </button>
-                                            <button onclick="openDeleteModal('@Model.Id')" class="action-btn delete-btn"
-                                                title="Delete Recipe">
-                                                <i class="fas fa-trash"></i>
-                                            </button>
-                                        </div>
-                                    }
-                                }
-                                else
-                                {
-                                    <div class="rate-recipe">
-                                        <span class="rate-label">@(hasUserRated ? "Your rating:" : "Rate this recipe:")</span>
-                                        <div class="rating-input" id="userRatingStars">
-                                            @for (int i = 1; i <= 5; i++)
-                                            {
-                                                <i class="@(i <= userRating ? "fas" : "far") fa-star rating-star" data-rating="@i"
-                                                    onclick="rateRecipe(@i, @Model.Id)"></i>
-                                            }
-                                        </div>
-                                        @if (hasUserRated)
-                                        {
-                                            <button class="remove-rating-btn" onclick="removeRating(@Model.Id)"
-                                                title="Remove your rating">
-                                                <i class="fas fa-times"></i> Remove
-                                            </button>
-                                        }
-                                    </div>
-                                    <div>
-                                        <button class="action-btn favorite-btn-details @(isFavorited ? "favorited" : "")"
-                                            onclick="toggleFavorite(@Model.Id)"
-                                            title="@(isFavorited ? "Remove from Favorites" : "Add to Favorites")">
-                                            <i class="far fa-heart"></i>
-                                        </button>
-                                    </div>
-                                }
-                            }
-                        </div>
-                    </div>
-                </div>
-                <div class="row">
-                    <div class="col-md-4">
-                        <div class="nutrition-card">
-                            <h4 class="section-title">
-                                <i class="fas fa-chart-pie"></i>
-                                Nutrition Facts
-                            </h4>
-                            <div class="nutrition-grid">
-                                <div class="nutrition-item">
-                                    <div class="nutrition-icon">
-                                        <i class="fas fa-fire me-1" style="color: #ef4444;"></i>
-                                    </div>
-                                    <div class="nutrition-value">@Model.Calories</div>
-                                    <div class="nutrition-label">Calories</div>
-                                </div>
-                                <div class="nutrition-item">
-                                    <div class="nutrition-icon">
-                                        <i class="fas fa-drumstick-bite me-1" style="color: #8b5cf6;"></i>
-                                    </div>
-                                    <div class="nutrition-value">@Model.Protein</div>
-                                    <div class="nutrition-label">Protein</div>
-                                </div>
-                                <div class="nutrition-item">
-                                    <div class="nutrition-icon">
-                                        <i class="fas fa-bread-slice me-1" style="color: #f59e0b;"></i>
-                                    </div>
-                                    <div class="nutrition-value">@Model.Carbs</div>
-                                    <div class="nutrition-label">Carbs</div>
-                                </div>
-                                <div class="nutrition-item">
-                                    <div class="nutrition-icon">
-                                        <i class="fas fa-tint me-1" style="color: #e5eb4dfa;"></i>
-                                    </div>
-                                    <div class="nutrition-value">@Model.Fat</div>
-                                    <div class="nutrition-label">Fat</div>
-                                </div>
-                            </div>
-                        </div>
-                    </div>
-                    <div class="col-md-8">
-                        <div class="ingredients-list">
-                            <h4 class="section-title">
-                                <i class="fas fa-list-ul"></i>
-                                Ingredients
-                            </h4>
-                            @if (Model.RecipeIngredients != null && Model.RecipeIngredients.Any())
-                            {
-                                @for (int i = 0; i < Model.RecipeIngredients.Count; i++)
-                                {
-                                    <div class="ingredient-item"
-                                        style="display: flex; align-items: center; justify-content: space-between;">
-                                        <div style="display: flex; align-items: center; flex: 1;">
-                                            <input type="checkbox" class="ingredient-checkbox" id="ingredient@(i + 1)">
-                                            <label for="ingredient@(i + 1)" style="margin-left: 8px;">
-                                                @Model.RecipeIngredients[i].Ingredient.Name,
-                                                @Model.RecipeIngredients[i].Quantity @Model.RecipeIngredients[i].Unit
-                                                @if (Model.RecipeIngredients[i].Ingredient.Status == "Pending")
-                                                {
-                                                    <span class="pending-badge"
-                                                        style="background-color: #ffc107; color: #212529; padding: 2px 8px; border-radius: 12px; font-size: 12px; margin-left: 8px;">
-                                                        <i class="fas fa-clock"></i> Pending Review
-                                                    </span>
-                                                }
-                                            </label>
-                                        </div>
-                                        @if (Model.RecipeIngredients[i].Ingredient.Status == "Pending")
-                                        {
-                                            <button onclick="viewIngredientReview(@Model.RecipeIngredients[i].Ingredient.Id)"
-                                                type="button" class="btn btn-sm btn-outline-success view-ingredient-btn"
-                                                style="margin-left: 10px;" id="view-ingr-btn">
-                                                <i class="fas fa-eye"></i> View
-                                            </button>
-                                        }
-                                    </div>
-                                }
-                            }
-                        </div>
-                        <div class="instructions-list">
-                            <h4 class="section-title">
-                                <i class="fas fa-clipboard-list"></i>
-                                Instructions
-                            </h4>
-                            @{
-                                var instructions =
-                                System.Text.Json.JsonSerializer.Deserialize<List<string>>(Model.Instructions[0]);
-                            }
-                            @for (var i = 0; i < instructions.Count; i++)
-                            {
-                                <div class="instruction-item"
-                                    style="display: flex; flex-wrap: wrap; align-items: flex-start; background-color: #f8f9fa; padding: 10px; margin: 5px 0; border-radius: 8px; border-left: 4px solid #10b981;">
-                                    <span class="instruction-number"
-                                        style="background-color: #10b981; color: white; border-radius: 50%; width: 24px; height: 24px; display: flex; align-items: center; justify-content: center; font-size: 12px; font-weight: bold; margin-right: 10px; flex-shrink: 0;">@(i
-                                                                            + 1)</span>
-                                <span class="instruction-text"
-                                    style="flex: 1; min-width: 0; word-wrap: break-word; overflow-wrap: break-word; line-height: 1.4;">
-                                    @instructions[i]</span>
-                            </div>
-                                                        }
-                        </div>
-                    </div>
-                </div>
-            </div>
-        </div>
-    </div>
-</div>
-<script>
-    document.querySelectorAll('.ingredient-checkbox').forEach(checkbox => {
-        checkbox.addEventListener('change', function () {
-            const label = this.nextElementSibling;
-            if (this.checked) {
-                label.style.textDecoration = 'line-through';
-                label.style.opacity = '0.6';
-            } else {
-                label.style.textDecoration = 'none';
-                label.style.opacity = '1';
-            }
-        });
-    });
-    document.getElementById('recipeModal').addEventListener('shown.bs.modal', function () {
-        this.querySelector('.modal-body').scrollTop = 0;
-    });
-    let isRatingInProgress = false;
-    function rateRecipe(rating, recipeId) {
-        if (isRatingInProgress) return;
-        console.log(rating)
-        isRatingInProgress = true;
-        updateUserRatingDisplay(rating);
-        fetch('/Recipes/Rate', {
-            method: 'POST',
-            headers: {
-                'Content-Type': 'application/json',
-                'RequestVerificationToken': document.querySelector('input[name="__RequestVerificationToken"]')?.value
-            },
-            body: JSON.stringify({
-                recipeId: recipeId,
-                rating: rating
-            })
-        })
-            .then(response => response.json())
-            .then(data => {
-                if (data.success) {
-                    updateAverageRatingDisplay(data.averageRating, data.totalRatings);
-                    showRemoveRatingButton();
-                    document.querySelector('.rate-label').textContent = 'Your rating:';
-                    showToast('Rating submitted successfully!', 'success');
-                } else {
-                    showToast(data.message || 'Failed to submit rating', 'error');
-                    revertUserRatingDisplay();
-                }
-            })
-            .catch(error => {
-                console.error('Error:', error);
-                showToast('An error occurred while submitting your rating', 'error');
-                revertUserRatingDisplay();
-            })
-            .finally(() => {
-                isRatingInProgress = false;
-            });
-    }
-    function removeRating(recipeId) {
-        if (isRatingInProgress) return;
-        isRatingInProgress = true;
-        fetch('/Recipes/RemoveRating', {
-            method: 'POST',
-            headers: {
-                'Content-Type': 'application/json',
-                'RequestVerificationToken': document.querySelector('input[name="__RequestVerificationToken"]')?.value
-            },
-            body: JSON.stringify({
-                recipeId: recipeId
-            })
-        })
-            .then(response => response.json())
-            .then(data => {
-                if (data.success) {
-                    updateAverageRatingDisplay(data.averageRating, data.totalRatings);
-                    clearUserRatingDisplay();
-                    hideRemoveRatingButton();
-                    document.querySelector('.rate-label').textContent = 'Rate this recipe:';
-                    showToast('Rating removed successfully!', 'success');
-                } else {
-                    showToast(data.message || 'Failed to remove rating', 'error');
-                }
-            })
-            .catch(error => {
-                console.error('Error:', error);
-                showToast('An error occurred while removing your rating', 'error');
-            })
-            .finally(() => {
-                isRatingInProgress = false;
-            });
-    }
-    let isFavoriteInProgress = false;
-    function toggleFavorite(recipeId) {
-        if (isFavoriteInProgress) return;
-        isFavoriteInProgress = true;
-        const favoriteBtn = document.querySelector('.favorite-btn-details');
-        const wasFavorited = favoriteBtn.classList.contains('favorited');
-        if (wasFavorited) {
-            favoriteBtn.classList.remove('favorited');
-            favoriteBtn.title = 'Add to Favorites';
-        } else {
-            favoriteBtn.classList.add('favorited');
-            favoriteBtn.title = 'Remove from Favorites';
-        }
-        fetch('/Recipes/ToggleFavorite', {
-            method: 'POST',
-            headers: {
-                'Content-Type': 'application/json',
-                'RequestVerificationToken': document.querySelector('input[name="__RequestVerificationToken"]')?.value
-            },
-            body: JSON.stringify({
-                recipeId: recipeId
-            })
-        })
-            .then(response => response.json())
-            .then(data => {
-                if (data.success) {
-                    if (data.isFavorited) {
-                        favoriteBtn.classList.add('favorited');
-                        favoriteBtn.title = 'Remove from Favorites';
-                        showToast('Added to favorites!', 'success');
-                    } else {
-                        favoriteBtn.classList.remove('favorited');
-                        favoriteBtn.title = 'Add to Favorites';
-                        showToast('Removed from favorites!', 'success');
-                    }
-                } else {
-                    if (wasFavorited) {
-                        favoriteBtn.classList.add('favorited');
-                        favoriteBtn.title = 'Remove from Favorites';
-                    } else {
-                        favoriteBtn.classList.remove('favorited');
-                        favoriteBtn.title = 'Add to Favorites';
-                    }
-                    showToast(data.message || 'Failed to update favorites', 'error');
-                }
-            })
-            .catch(error => {
-                console.error('Error:', error);
-                if (wasFavorited) {
-                    favoriteBtn.classList.add('favorited');
-                    favoriteBtn.title = 'Remove from Favorites';
-                } else {
-                    favoriteBtn.classList.remove('favorited');
-                    favoriteBtn.title = 'Add to Favorites';
-                }
-                showToast('An error occurred while updating favorites', 'error');
-            })
-            .finally(() => {
-                isFavoriteInProgress = false;
-            });
-    }
-    function updateUserRatingDisplay(rating) {
-        const stars = document.querySelectorAll('#userRatingStars .rating-star');
-        stars.forEach((star, index) => {
-            if (index < rating) {
-                star.classList.remove('far');
-                star.classList.add('fas', 'active');
-            } else {
-                star.classList.remove('fas', 'active');
-                star.classList.add('far');
-            }
-        });
-    }
-    function clearUserRatingDisplay() {
-        const stars = document.querySelectorAll('#userRatingStars .rating-star');
-        stars.forEach(star => {
-            star.classList.remove('fas', 'active');
-            star.classList.add('far');
-        });
-    }
-    function revertUserRatingDisplay() {
-        const userRating = @userRating;
-        if (userRating > 0) {
-            updateUserRatingDisplay(userRating);
-        } else {
-            clearUserRatingDisplay();
-        }
-    }
-    function updateAverageRatingDisplay(averageRating, totalRatings) {
-        const displayStars = document.querySelectorAll('#displayStars i');
-        displayStars.forEach((star, index) => {
-            const starValue = index + 1;
-            star.className = '';
-            if (starValue <= Math.floor(averageRating)) {
-                star.className = 'fas fa-star filled';
-            } else if (starValue <= averageRating) {
-                star.className = 'fas fa-star-half-alt filled';
-            } else {
-                star.className = 'far fa-star';
-            }
-        });
-        document.querySelector('.rating-value').textContent = `(${averageRating.toFixed(1)})`;
-        document.querySelector('.rating-count').textContent = `${totalRatings} review${totalRatings !== 1 ? 's' : ''}`;
-    }
-    function showRemoveRatingButton() {
-        let removeBtn = document.querySelector('.remove-rating-btn');
-        if (!removeBtn) {
-            removeBtn = document.createElement('button');
-            removeBtn.className = 'remove-rating-btn';
-            removeBtn.innerHTML = '<i class="fas fa-times"></i> Remove';
-            removeBtn.title = 'Remove your rating';
-            removeBtn.onclick = () => removeRating(@Model.Id);
-            document.querySelector('.rate-recipe').appendChild(removeBtn);
-        }
-        removeBtn.style.display = 'block';
-    }
-    function hideRemoveRatingButton() {
-        const removeBtn = document.querySelector('.remove-rating-btn');
-        if (removeBtn) {
-            removeBtn.style.display = 'none';
-        }
-    }
-    function showToast(message, type = 'success') {
-        const existingToast = document.querySelector('.rating-toast');
-        if (existingToast) {
-            existingToast.remove();
-        }
-        const toast = document.createElement('div');
-        toast.className = `rating-toast ${type}`;
-        toast.textContent = message;
-        document.body.appendChild(toast);
-        setTimeout(() => toast.classList.add('show'), 100);
-        setTimeout(() => {
-            toast.classList.remove('show');
-            setTimeout(() => toast.remove(), 300);
-        }, 3000);
-    }
-    document.addEventListener('DOMContentLoaded', function () {
-        const userRatingStars = document.querySelectorAll('#userRatingStars .rating-star');
-        userRatingStars.forEach((star, index) => {
-            star.addEventListener('mouseenter', function () {
-                if (isRatingInProgress) return;
-                userRatingStars.forEach((s, i) => {
-                    if (i <= index) {
-                        s.style.color = '#fbbf24';
-                    } else {
-                        s.style.color = '#ddd';
-                    }
-                });
-            });
-            star.addEventListener('mouseleave', function () {
-                if (isRatingInProgress) return;
-                const userRating = @userRating;
-                userRatingStars.forEach((s, i) => {
-                    if (i < userRating) {
-                        s.style.color = '#fbbf24';
-                    } else {
-                        s.style.color = '#ddd';
-                    }
-                });
-            });
-        });
-    });
-</script>
Index: triMatch/Views/Restaurants/Index.cshtml
===================================================================
--- NutriMatch/Views/Restaurants/Index.cshtml	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,280 +1,0 @@
-@model List<NutriMatch.Models.Restaurant>
-@{
-    Layout = "_Layout";
-}
-<!DOCTYPE html>
-<html lang="en">
-<head>
-    <meta charset="UTF-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <title>NutriMatch - Restaurants</title>
-    <link href="~/css/RestaurantIndex.css" rel="stylesheet">
-</head>
-<body>
-    <div class="container ct-main">
-    
-        
-        <div class="filter-section">
-            <h4 class="mb-4" style="color: #1f2937; font-weight: 700;">
-                <i class="fas fa-sliders-h me-2" style="color: var(--nutri-green);"></i>
-                Filter by Macronutrients
-                <button class="btn btn-outline-secondary btn-sm ms-3" onclick="resetFilters()">
-                    <i class="fas fa-undo me-1"></i>Reset Filters
-                </button>
-                @if (User.Identity.IsAuthenticated)
-                {
-                    <button style="float: right;" class="btn btn-success" onclick="openPreferencesModal()">
-                        <i class="fas fa-sliders-h me-2"></i>Meal Preferences & Notifications
-                    </button>
-                }
-            </h4>
-            <div class="row">
-                <div class="col-md-6 col-lg-3">
-                    <div class="slider-container">
-                        <div class="slider-label">
-                            <span><i class="fas fa-fire me-1" style="color: #ef4444;"></i>Calories</span>
-                            <span class="filter-values" id="caloriesValue">0 - 2000</span>
-                        </div>
-                        <div class="range-slider">
-                            <div class="range-fill" id="caloriesFill"></div>
-                            <input type="range" class="range-input" min="0" max="2000" value="0" id="caloriesMin"
-                                oninput="updateSlider('calories')">
-                            <input type="range" class="range-input" min="0" max="2000" value="2000" id="caloriesMax"
-                                oninput="updateSlider('calories')">
-                        </div>
-                    </div>
-                </div>
-                <div class="col-md-6 col-lg-3">
-                    <div class="slider-container">
-                        <div class="slider-label">
-                            <span><i class="fas fa-drumstick-bite me-1" style="color: #8b5cf6;"></i>Protein (g)</span>
-                            <span class="filter-values" id="proteinValue">0 - 150</span>
-                        </div>
-                        <div class="range-slider">
-                            <div class="range-fill" id="proteinFill"></div>
-                            <input type="range" class="range-input" min="0" max="150" value="0" id="proteinMin"
-                                oninput="updateSlider('protein')">
-                            <input type="range" class="range-input" min="0" max="150" value="150" id="proteinMax"
-                                oninput="updateSlider('protein')">
-                        </div>
-                    </div>
-                </div>
-                <div class="col-md-6 col-lg-3">
-                    <div class="slider-container">
-                        <div class="slider-label">
-                            <span><i class="fas fa-bread-slice me-1" style="color: #f59e0b;"></i>Carbs (g)</span>
-                            <span class="filter-values" id="carbsValue">0 - 150</span>
-                        </div>
-                        <div class="range-slider">
-                            <div class="range-fill" id="carbsFill"></div>
-                            <input type="range" class="range-input" min="0" max="150" value="0" id="carbsMin"
-                                oninput="updateSlider('carbs')">
-                            <input type="range" class="range-input" min="0" max="150" value="150" id="carbsMax"
-                                oninput="updateSlider('carbs')">
-                        </div>
-                    </div>
-                </div>
-                <div class="col-md-6 col-lg-3">
-                    <div class="slider-container">
-                        <div class="slider-label">
-                            <span><i class="fas fa-tint me-1" style="color: #e5eb4dfa;"></i>Fats (g)</span>
-                            <span class="filter-values" id="fatsValue">0 - 150</span>
-                        </div>
-                        <div class="range-slider">
-                            <div class="range-fill" id="fatsFill"></div>
-                            <input type="range" class="range-input" min="0" max="150" value="0" id="fatsMin"
-                                oninput="updateSlider('fats')">
-                            <input type="range" class="range-input" min="0" max="150" value="150" id="fatsMax"
-                                oninput="updateSlider('fats')">
-                        </div>
-                    </div>
-                </div>
-            </div>
-        </div>
-        
-        <div class="row" id="restaurantsGrid">
-            @foreach (var r in Model)
-            {
-                <div class="col-md-6 col-lg-4 mb-2">
-                    <div class="restaurant-card" onclick="openMenu(@r.Id)">
-                        @if (User.Identity.IsAuthenticated)
-                        {
-                            <button class="notification-bell" 
-                                    data-restaurant-id="@r.Id"
-                                    onclick="toggleFollow(@r.Id, event)"
-                                    title="Get notified about new meals">
-                                <i class="far fa-bell"></i>
-                            </button>
-                        }
-                        <div class="restaurant-info">
-                            <img style="width: 200px;" src="@r.ImageUrl">
-                        </div>
-                        <div class="restaurant-name">@r.Name</div>
-                        <div class="restaurant-items">@r.Description</div>
-                    </div>
-                </div>
-            }
-        </div>
-    </div>
-    
-    <!-- Menu Modal -->
-    <div class="modal fade" id="menuModal" tabindex="-1">
-        <div class="modal-dialog modal-lg">
-            <div class="modal-content" id="modal-content">
-                
-            </div>
-        </div>
-    </div>
-    
-    <!-- Preferences Modal -->
-        <div class="modal fade" id="preferencesModal" tabindex="-1">
-            <div class="modal-dialog modal-lg">
-                <div class="modal-content">
-                    <div class="modal-header">
-                        <h5 class="modal-title">Meal Preferences & Notifications</h5>
-                        <button type="button" class="btn-close" data-bs-dismiss="modal"></button>
-                    </div>
-                    <div class="modal-body">
-                        <p class="text-muted small mb-3">
-                            <i class="fas fa-bell me-1"></i>
-                            Get notified when new meals matching your preferences are added
-                        </p>
-                        
-                        <div class="tag-selection">
-                            <!-- High Protein -->
-                            <div class="tag-item-wrapper">
-                                <div class="tag-item" onclick="toggleTagExpansion('high-protein')">
-                                    <input type="checkbox" id="tag-high-protein" value="high-protein">
-                                    <label for="tag-high-protein">
-                                        <i class="fas fa-drumstick-bite"></i> High Protein
-                                    </label>
-                                    <i class="fas fa-chevron-down expand-icon"></i>
-                                </div>
-                                <div class="tag-threshold" id="threshold-high-protein">
-                                    <label class="small text-muted">Minimum protein (g):</label>
-                                    <input type="number" class="form-control form-control-sm" 
-                                        id="value-high-protein" min="10" max="150" value="30" step="5">
-                                </div>
-                            </div>
-
-                            <!-- Low Carb -->
-                            <div class="tag-item-wrapper">
-                                <div class="tag-item" onclick="toggleTagExpansion('low-carb')">
-                                    <input type="checkbox" id="tag-low-carb" value="low-carb">
-                                    <label for="tag-low-carb">
-                                        <i class="fas fa-bread-slice"></i> Low Carb
-                                    </label>
-                                    <i class="fas fa-chevron-down expand-icon"></i>
-                                </div>
-                                <div class="tag-threshold" id="threshold-low-carb">
-                                    <label class="small text-muted">Maximum carbs (g):</label>
-                                    <input type="number" class="form-control form-control-sm" 
-                                        id="value-low-carb" min="5" max="100" value="20" step="5">
-                                </div>
-                            </div>
-
-                            <!-- High Carb -->
-                            <div class="tag-item-wrapper">
-                                <div class="tag-item" onclick="toggleTagExpansion('high-carb')">
-                                    <input type="checkbox" id="tag-high-carb" value="high-carb">
-                                    <label for="tag-high-carb">
-                                        <i class="fas fa-bread-slice"></i> High Carb
-                                    </label>
-                                    <i class="fas fa-chevron-down expand-icon"></i>
-                                </div>
-                                <div class="tag-threshold" id="threshold-high-carb">
-                                    <label class="small text-muted">Minimum carbs (g):</label>
-                                    <input type="number" class="form-control form-control-sm" 
-                                        id="value-high-carb" min="30" max="150" value="50" step="5">
-                                </div>
-                            </div>
-
-                            <!-- Low Fat -->
-                            <div class="tag-item-wrapper">
-                                <div class="tag-item" onclick="toggleTagExpansion('low-fat')">
-                                    <input type="checkbox" id="tag-low-fat" value="low-fat">
-                                    <label for="tag-low-fat">
-                                        <i class="fas fa-tint"></i> Low Fat
-                                    </label>
-                                    <i class="fas fa-chevron-down expand-icon"></i>
-                                </div>
-                                <div class="tag-threshold" id="threshold-low-fat">
-                                    <label class="small text-muted">Maximum fat (g):</label>
-                                    <input type="number" class="form-control form-control-sm" 
-                                        id="value-low-fat" min="5" max="50" value="15" step="5">
-                                </div>
-                            </div>
-
-                            <!-- High Fat -->
-                            <div class="tag-item-wrapper">
-                                <div class="tag-item" onclick="toggleTagExpansion('high-fat')">
-                                    <input type="checkbox" id="tag-high-fat" value="high-fat">
-                                    <label for="tag-high-fat">
-                                        <i class="fas fa-tint"></i> High Fat
-                                    </label>
-                                    <i class="fas fa-chevron-down expand-icon"></i>
-                                </div>
-                                <div class="tag-threshold" id="threshold-high-fat">
-                                    <label class="small text-muted">Minimum fat (g):</label>
-                                    <input type="number" class="form-control form-control-sm" 
-                                        id="value-high-fat" min="15" max="100" value="30" step="5">
-                                </div>
-                            </div>
-
-                            <!-- Balanced -->
-                            <div class="tag-item-wrapper">
-                                <div class="tag-item">
-                                    <input type="checkbox" id="tag-balanced" value="balanced">
-                                    <label for="tag-balanced">
-                                        <i class="fas fa-balance-scale"></i> Balanced
-                                    </label>
-                                </div>
-                            </div>
-
-                            <!-- Low Calorie -->
-                            <div class="tag-item-wrapper">
-                                <div class="tag-item" onclick="toggleTagExpansion('low-calorie')">
-                                    <input type="checkbox" id="tag-low-calorie" value="low-calorie">
-                                    <label for="tag-low-calorie">
-                                        <i class="fas fa-fire"></i> Low Calorie
-                                    </label>
-                                    <i class="fas fa-chevron-down expand-icon"></i>
-                                </div>
-                                <div class="tag-threshold" id="threshold-low-calorie">
-                                    <label class="small text-muted">Maximum calories:</label>
-                                    <input type="number" class="form-control form-control-sm" 
-                                        id="value-low-calorie" min="100" max="500" value="300" step="50">
-                                </div>
-                            </div>
-
-                            <!-- High Calorie -->
-                            <div class="tag-item-wrapper">
-                                <div class="tag-item" onclick="toggleTagExpansion('high-calorie')">
-                                    <input type="checkbox" id="tag-high-calorie" value="high-calorie">
-                                    <label for="tag-high-calorie">
-                                        <i class="fas fa-fire"></i> High Calorie
-                                    </label>
-                                    <i class="fas fa-chevron-down expand-icon"></i>
-                                </div>
-                                <div class="tag-threshold" id="threshold-high-calorie">
-                                    <label class="small text-muted">Minimum calories:</label>
-                                    <input type="number" class="form-control form-control-sm" 
-                                        id="value-high-calorie" min="400" max="1500" value="600" step="50">
-                                </div>
-                            </div>
-                        </div>
-                    </div>
-                    <div class="modal-footer">
-                        <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cancel</button>
-                        <button type="button" class="btn btn-success" onclick="savePreferences()">
-                            <i class="fas fa-save me-2"></i>Save Preferences
-                        </button>
-                    </div>
-                </div>
-            </div>
-        </div>
-    
-    @Html.AntiForgeryToken()
-    <script src="~/js/RestaurantIndex.js"></script>
-</body>
-</html>
Index: triMatch/Views/Restaurants/_RestaurantMealsPartial.cshtml
===================================================================
--- NutriMatch/Views/Restaurants/_RestaurantMealsPartial.cshtml	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,153 +1,0 @@
-@model List<NutriMatch.Models.RestaurantMeal>
-
-<div class="modal-header">
-    <h5 class="modal-title" id="modalRestaurantName">@ViewBag.RestaurantName</h5>
-    <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal"></button>
-</div>
-<div class="modal-body">
-    <div id="filterInfo" class="filter-info" style="display: none;">
-        <small><i class="fas fa-info-circle me-1"></i>Showing items matching your macro filters</small>
-    </div>
-    <div id="menuItems">
-        <div class="col-12">
-            <div class="row mb-3">
-                <div class="position-relative">
-                    <input type="text" id="menuSearchInput" class="form-control" placeholder="Search menu items..."
-                        autocomplete="off">
-                    <i class="fas fa-search position-absolute"
-                        style="right: 20px; top: 50%; transform: translateY(-50%); color: #6c757d;"></i>
-                </div>
-                <small class="text-muted" id="searchResultCount"></small>
-            </div>
-        </div>
-
-        <div class="row g-3">
-            <div class="col-12">
-                <div id="menuItemsContainer" class="row g-3">
-                    @if (Model.Count == 0)
-                    {
-                        <div class="col-12">
-                            <div class="no-items-message">
-                                <i class="fas fa-filter fa-2x mb-3"></i>
-                                <h5>No items match your filters</h5>
-                                <p>Try adjusting your macro filters to see more menu items</p>
-                            </div>
-                        </div>
-                    }
-                    else
-                    {
-                        @foreach (var meal in Model)
-                        {
-                            <div class="col-md-6 menu-item-wrapper" data-meal-name="@meal.ItemName.ToLower()"
-                                data-meal-description="@meal.ItemDescription?.ToLower()">
-                                <div class="menu-item">
-                                    <div class="menu-item-header" onclick="toggleItemDetails(this)">
-                                        <div class="d-flex justify-content-between align-items-center">
-                                            <div>
-                                                <h6 class="mb-1 fs-6">@meal.ItemName</h6>
-                                            </div>
-                                            <div class="text-end">
-                                                <small class="text-muted">
-                                                    <i class="fas fa-chevron-down chevron-icon"></i>
-                                                </small>
-                                            </div>
-                                        </div>
-                                    </div>
-                                    <div class="collapse menu-item-details">
-                                        <p class="mb-2 small">@meal.ItemDescription</p>
-                                        <div class="macros">
-                                            <span class="macro-badge calories">
-                                                <i class="fas fa-fire me-1"></i>@meal.Calories cal
-                                            </span>
-                                            <span class="macro-badge protein">
-                                                <i class="fas fa-drumstick-bite me-1"></i>@meal.Protein g protein
-                                            </span>
-                                            <span class="macro-badge carbs">
-                                                <i class="fas fa-bread-slice me-1"></i>@meal.Carbs g carbs
-                                            </span>
-                                            <span class="macro-badge fats">
-                                                <i class="fas fa-tint me-1"></i>@meal.Fat g fats
-                                            </span>
-                                        </div>
-                                    </div>
-                                </div>
-                            </div>
-                        }
-                    }
-                </div>
-
-                <div id="noSearchResults" class="row" style="display: none;">
-                    <div class="col-12">
-                        <div class="no-items-message">
-                            <i class="fas fa-search fa-2x mb-3"></i>
-                            <h5>No items found</h5>
-                            <p>No menu items match your search</p>
-                        </div>
-                    </div>
-                </div>
-            </div>
-        </div>
-
-
-
-
-
-        <script>
-            filterInfo = document.getElementById("filterInfo");
-            if (!areFiltersDefault()) {
-                filterInfo.style.display = "block";
-            } else {
-                filterInfo.style.display = "none";
-            }
-
-            (function () {
-                const searchInput = document.getElementById('menuSearchInput');
-                const itemsContainer = document.getElementById('menuItemsContainer');
-                const noResultsMessage = document.getElementById('noSearchResults');
-                const resultCount = document.getElementById('searchResultCount');
-
-                if (!searchInput) return;
-
-                function performSearch() {
-                    const searchTerm = searchInput.value.toLowerCase().trim();
-                    const menuItems = itemsContainer.querySelectorAll('.menu-item-wrapper');
-                    let visibleCount = 0;
-
-                    menuItems.forEach(item => {
-                        const mealName = item.dataset.mealName || '';
-                        const mealDescription = item.dataset.mealDescription || '';
-
-                        const matches = mealName.includes(searchTerm) || mealDescription.includes(searchTerm);
-
-                        if (matches) {
-                            item.style.display = '';
-                            visibleCount++;
-                        } else {
-                            item.style.display = 'none';
-                        }
-                    });
-
-                    if (searchTerm) {
-                        resultCount.textContent = `Showing ${visibleCount} of ${menuItems.length} items`;
-                    } else {
-                        resultCount.textContent = '';
-                    }
-
-                    if (visibleCount === 0 && searchTerm) {
-                        itemsContainer.style.display = 'none';
-                        noResultsMessage.style.display = 'block';
-                    } else {
-                        itemsContainer.style.display = 'flex';
-                        noResultsMessage.style.display = 'none';
-                    }
-                }
-
-                let searchTimeout;
-                searchInput.addEventListener('input', function () {
-                    clearTimeout(searchTimeout);
-                    searchTimeout = setTimeout(performSearch, 200);
-                });
-
-                searchInput.focus();
-            })();
-        </script>
Index: NutriMatch/Views/Shared/Error.cshtml
===================================================================
--- NutriMatch/Views/Shared/Error.cshtml	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ NutriMatch/Views/Shared/Error.cshtml	(revision 5d48bf93fdd26aa14b8ae7ac68b61e5d60e3e2a8)
@@ -16,12 +16,10 @@
 <h3>Development Mode</h3>
 <p>
-    Swapping to <strong>Development</strong> environment will display more detailed information about the error that
-    occurred.
+    Swapping to <strong>Development</strong> environment will display more detailed information about the error that occurred.
 </p>
 <p>
     <strong>The Development environment shouldn't be enabled for deployed applications.</strong>
     It can result in displaying sensitive information from exceptions to end users.
-    For local debugging, enable the <strong>Development</strong> environment by setting the
-    <strong>ASPNETCORE_ENVIRONMENT</strong> environment variable to <strong>Development</strong>
+    For local debugging, enable the <strong>Development</strong> environment by setting the <strong>ASPNETCORE_ENVIRONMENT</strong> environment variable to <strong>Development</strong>
     and restarting the app.
 </p>
Index: NutriMatch/Views/Shared/_Layout.cshtml
===================================================================
--- NutriMatch/Views/Shared/_Layout.cshtml	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ NutriMatch/Views/Shared/_Layout.cshtml	(revision 5d48bf93fdd26aa14b8ae7ac68b61e5d60e3e2a8)
@@ -1,6 +1,3 @@
-﻿@using Microsoft.AspNetCore.Identity
-@inject UserManager<User> UserManager
-
-<!DOCTYPE html>
+﻿<!DOCTYPE html>
 <html lang="en">
 <head>
@@ -10,93 +7,28 @@
     <script type="importmap"></script>
     <link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.min.css" />
-    <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css" rel="stylesheet">
-    <link rel="stylesheet" href="~/css/_Layout.css" />
-    <link rel="stylesheet" href="~/css/Notifications.css" />
-
+    <link rel="stylesheet" href="~/css/site.css" asp-append-version="true" />
+    <link rel="stylesheet" href="~/NutriMatch.styles.css" asp-append-version="true" />
 </head>
-@{
-    var currentController = ViewContext.RouteData.Values["controller"]?.ToString();
-    var currentAction = ViewContext.RouteData.Values["action"]?.ToString();
-    var currentPage = ViewContext.RouteData.Values["page"]?.ToString();
-}
 <body>
     <header>
-        <nav class="navbar navbar-expand-lg navbar-light fixed-top">
-            <div class="container">
-                <a class="navbar-brand" href="#">
-                    <img src="~/images/NutriMatch.png" alt="NutriMatch Logo" class="logo" style="width: 150px;" />
-                </a>
-                <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav">
+        <nav class="navbar navbar-expand-sm navbar-toggleable-sm navbar-light bg-white border-bottom box-shadow mb-3">
+            <div class="container-fluid">
+                <a class="navbar-brand" asp-area="" asp-controller="Home" asp-action="Index">NutriMatch</a>
+                <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target=".navbar-collapse" aria-controls="navbarSupportedContent"
+                        aria-expanded="false" aria-label="Toggle navigation">
                     <span class="navbar-toggler-icon"></span>
                 </button>
-                <div class="collapse navbar-collapse" id="navbarNav">
-                    <ul class="navbar-nav mx-auto">
+                <div class="navbar-collapse collapse d-sm-inline-flex justify-content-between">
+                    <ul class="navbar-nav flex-grow-1">
                         <li class="nav-item">
-                            <a class="nav-link @(currentController == "Home" && currentAction == "Index" ? "active-glow" : "")"
-                                href="/Home">Home</a>
+                            <a class="nav-link text-dark" asp-area="" asp-controller="Home" asp-action="Index">Home</a>
                         </li>
                         <li class="nav-item">
-                            <a class="nav-link @(currentController == "Recipes" && currentAction == "Index" ? "active-glow" : "")"
-                                href="/Recipes">Recipes</a>
+                            <a class="nav-link text-dark" asp-area="" asp-controller="Home" asp-action="Privacy">Privacy</a>
                         </li>
-                        <li class="nav-item">
-                            <a class="nav-link @(currentController == "Restaurants" && currentAction == "Index" ? "active-glow" : "") "
-                                href="/Restaurants">Restaurants</a>
-                        </li>
-                        @if (User.Identity.IsAuthenticated)
-                        {
-                            <li class="nav-item">
-                                <a class="nav-link @(currentController == "Recipes" && currentAction == "MyRecipes" ? "active-glow" : "")"
-                                    href="/Recipes/MyRecipes">My Recipes</a>
-                            </li>
-                            <li class="nav-item">
-                                <a class="nav-link @(currentController == "MealPlan" && currentAction == "Index" ? "active-glow" : "") "
-                                    href="/MealPlan">Meal Plans</a>
-                            </li>
-                            @if (User.IsInRole("Admin"))
-                            {
-                                <li class="nav-item">
-                                    <a class="nav-link @(currentController == "Admin" && currentAction == "Index" ? "active-glow" : "")"
-                                        href="/Admin">Admin Panel</a>
-                                </li>
-                            }
-                        }
-                        
                     </ul>
-                    
-                    @if (User.Identity.IsAuthenticated)
-                    {
-                        var user = await UserManager.GetUserAsync(User);
-                        var profilePicUrl = user?.ProfilePictureUrl ?? "~/images/default-profile.png";
-                        
-                        <ul class="navbar-nav ms-auto align-items-center">
-                            <li class="nav-item">
-                                <div id="notification-bell">
-                                    <div class="notification-icon">
-                                        <i class="fas fa-bell"></i>
-                                        <span class="notification-badge hidden" id="notification-count">0</span>
-                                    </div>
-                                    <div class="notification-panel" id="notification-panel">
-                                        <div id="notification-panel-content">
-                                            <!-- Partial view will load here -->
-                                        </div>
-                                    </div>
-                                </div>
-                            </li>
-                            <li class="nav-item">
-                                <a class="user-profile-link @(currentPage == "/Account/MyAccount" ? "active-glow-border" : "")"
-                                    href="/Identity/Account/MyAccount" title="My Account">
-                                    <img src="@profilePicUrl" alt="Profile" class="user-profile-pic" />
-                                </a>
-                            </li>
-                        </ul>
-                    }else
-                        {
-                            <partial name="_LoginPartial" />
-                        }
                 </div>
             </div>
         </nav>
-        
     </header>
     <div class="container">
@@ -106,59 +38,12 @@
     </div>
 
-
-
-<footer class="text-light py-5">
-    <div class="container">
-        <div class="row d-flex justify-content-center text-center">
-            <div class="col-md-4">
-                <img src="~/images/NutriMatch.png" alt="NutriMatch Logo" class="logo" style="width: 150px;" />
-                <p>Discover and share amazing recipes from home cooks and restaurants around the world.</p>
-            </div>
-            <div class="col-md-4">
-                <h6>Quick Links</h6>
-                <div class="row">
-                    <div class="col-6">
-                        <ul class="list-unstyled">
-                            <li><a href="/Home" class="text-light text-decoration-none">Home</a></li>
-                            <li><a href="/Recipes#" class="text-light text-decoration-none">Recipes</a></li>
-                            <li><a href="/Restaurants" class="text-light text-decoration-none">Restaurants</a></li>
-                        </ul>
-                    </div>
-                    <div class="col-6">
-                        <ul class="list-unstyled">
-                            <li><a href="/Recipes/MyRecipes" class="text-light text-decoration-none">My Recipes</a></li>
-                            <li><a href="/MealPlan" class="text-light text-decoration-none">Meal Plan</a></li>
-                             @if (User.IsInRole("Admin"))
-                            {
-                                <li class="nav-item">
-                                    <a class="text-light text-decoration-none"
-                                        href="/Admin">Admin Panel</a>
-                                </li>
-                            }
-                        </ul>
-                    </div>
-                </div>
-            </div>
-            <div class="col-md-4">
-                <h6>Account</h6>
-                <ul class="list-unstyled">
-                  @if (!User.Identity.IsAuthenticated){
-                    <li><a href="/Identity/Account/Register" class="text-light text-decoration-none">Sign Up</a></li>
-                    <li><a href="/Identity/Account/Login" class="text-light text-decoration-none">Log In</a></li>
-                    }else{
-                    <li><a href="/Identity/Account/MyAccount" class="text-light text-decoration-none">My Profile</a></li>
-                    }
-                </ul>
-            </div>
+    <footer class="border-top footer text-muted">
+        <div class="container">
+            &copy; 2025 - NutriMatch - <a asp-area="" asp-controller="Home" asp-action="Privacy">Privacy</a>
         </div>
-        <hr class="my-4">
-    
-        <div class="text-center">
-            <p>&copy; 2025 NutriMatch. All rights reserved.</p>
-        </div>
-    </div>
-</footer>
+    </footer>
+    <script src="~/lib/jquery/dist/jquery.min.js"></script>
     <script src="~/lib/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
-    <script src="~/js/Notifications.js"></script>
+    <script src="~/js/site.js" asp-append-version="true"></script>
     @await RenderSectionAsync("Scripts", required: false)
 </body>
Index: NutriMatch/Views/Shared/_Layout.cshtml.css
===================================================================
--- NutriMatch/Views/Shared/_Layout.cshtml.css	(revision 5d48bf93fdd26aa14b8ae7ac68b61e5d60e3e2a8)
+++ NutriMatch/Views/Shared/_Layout.cshtml.css	(revision 5d48bf93fdd26aa14b8ae7ac68b61e5d60e3e2a8)
@@ -0,0 +1,47 @@
+﻿
+
+a.navbar-brand {
+  white-space: normal;
+  text-align: center;
+  word-break: break-all;
+}
+
+a {
+  color: #0077cc;
+}
+
+.btn-primary {
+  color: #fff;
+  background-color: #1b6ec2;
+  border-color: #1861ac;
+}
+
+.nav-pills .nav-link.active, .nav-pills .show > .nav-link {
+  color: #fff;
+  background-color: #1b6ec2;
+  border-color: #1861ac;
+}
+
+.border-top {
+  border-top: 1px solid #e5e5e5;
+}
+.border-bottom {
+  border-bottom: 1px solid #e5e5e5;
+}
+
+.box-shadow {
+  box-shadow: 0 .25rem .75rem rgba(0, 0, 0, .05);
+}
+
+button.accept-policy {
+  font-size: 1rem;
+  line-height: inherit;
+}
+
+.footer {
+  position: absolute;
+  bottom: 0;
+  width: 100%;
+  white-space: nowrap;
+  line-height: 60px;
+}
Index: triMatch/Views/Shared/_LoginPartial.cshtml
===================================================================
--- NutriMatch/Views/Shared/_LoginPartial.cshtml	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,27 +1,0 @@
-@using Microsoft.AspNetCore.Identity
-@using NutriMatch.Models
-
-@inject SignInManager<User> SignInManager
-@inject UserManager<User> UserManager
-
-<ul class="navbar-nav">
-    @if (SignInManager.IsSignedIn(User))
-    {
-        <li class="nav-item">
-            <a id="manage" class="nav-link text-dark" asp-area="Identity" asp-page="/Account/Manage/Index"
-                title="Manage">Hello @UserManager.GetUserName(User)!</a>
-        </li>
-        <li class="nav-item">
-            <form id="logoutForm" class="form-inline" asp-area="Identity" asp-page="/Account/Logout"
-                asp-route-returnUrl="@Url.Action("Index", "Home", new { area = "" })">
-                <button id="logout" type="submit" class="nav-link btn btn-link text-dark border-0">Logout</button>
-            </form>
-        </li>
-    }
-    else
-    {
-        <li class="nav-item">
-            <a class="nav-link text-dark" id="register" asp-area="Identity" asp-page="/Account/Register">Sign Up</a>
-        </li>
-    }
-</ul>
Index: NutriMatch/appsettings.json
===================================================================
--- NutriMatch/appsettings.json	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ NutriMatch/appsettings.json	(revision 5d48bf93fdd26aa14b8ae7ac68b61e5d60e3e2a8)
@@ -1,7 +1,3 @@
 {
-  "ConnectionStrings": {
-    "DefaultConnection": "Host=localhost;Database=nutrimatch_db;Username=postgres;Password=123;Port=5432",
-    "ApplicationDbContextConnection": "Server=(localdb)\\mssqllocaldb;Database=NutriMatch;Trusted_Connection=True;MultipleActiveResultSets=true"
-  },
   "Logging": {
     "LogLevel": {
@@ -10,21 +6,4 @@
     }
   },
-  "AllowedHosts": "*",
-  "Authentication": {
-    "Google": {
-      "ClientId": "186490876175-v5m2b9v2pkt5efo59idgf6f8570e81e4.apps.googleusercontent.com",
-      "ClientSecret": "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"
-    },
-    "Facebook": {
-      "AppId": "1298079728131772",
-      "AppSecret": "4d94b12c9a7d938150394aed4b4f3b20"
-    }
-  },
-  "EmailSettings": {
-    "FromEmail": "nutrimatch.finki@gmail.com",
-    "Password": "wyvy bypc fyvl mbrg",
-    "SmtpServer": "smtp.gmail.com",
-    "Port": "587"
-  }
-
+  "AllowedHosts": "*"
 }
Index: NutriMatch/obj/NutriMatch.csproj.nuget.dgspec.json
===================================================================
--- NutriMatch/obj/NutriMatch.csproj.nuget.dgspec.json	(revision 5d48bf93fdd26aa14b8ae7ac68b61e5d60e3e2a8)
+++ NutriMatch/obj/NutriMatch.csproj.nuget.dgspec.json	(revision 5d48bf93fdd26aa14b8ae7ac68b61e5d60e3e2a8)
@@ -0,0 +1,76 @@
+{
+  "format": 1,
+  "restore": {
+    "D:\\VScode\\NutriMatch\\NutriMatch\\NutriMatch.csproj": {}
+  },
+  "projects": {
+    "D:\\VScode\\NutriMatch\\NutriMatch\\NutriMatch.csproj": {
+      "version": "1.0.0",
+      "restore": {
+        "projectUniqueName": "D:\\VScode\\NutriMatch\\NutriMatch\\NutriMatch.csproj",
+        "projectName": "NutriMatch",
+        "projectPath": "D:\\VScode\\NutriMatch\\NutriMatch\\NutriMatch.csproj",
+        "packagesPath": "C:\\Users\\milan\\.nuget\\packages\\",
+        "outputPath": "D:\\VScode\\NutriMatch\\NutriMatch\\obj\\",
+        "projectStyle": "PackageReference",
+        "fallbackFolders": [
+          "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
+        ],
+        "configFilePaths": [
+          "C:\\Users\\milan\\AppData\\Roaming\\NuGet\\NuGet.Config",
+          "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config",
+          "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
+        ],
+        "originalTargetFrameworks": [
+          "net9.0"
+        ],
+        "sources": {
+          "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
+          "https://api.nuget.org/v3/index.json": {}
+        },
+        "frameworks": {
+          "net9.0": {
+            "targetAlias": "net9.0",
+            "projectReferences": {}
+          }
+        },
+        "warningProperties": {
+          "warnAsError": [
+            "NU1605"
+          ]
+        },
+        "restoreAuditProperties": {
+          "enableAudit": "true",
+          "auditLevel": "low",
+          "auditMode": "direct"
+        },
+        "SdkAnalysisLevel": "9.0.200"
+      },
+      "frameworks": {
+        "net9.0": {
+          "targetAlias": "net9.0",
+          "imports": [
+            "net461",
+            "net462",
+            "net47",
+            "net471",
+            "net472",
+            "net48",
+            "net481"
+          ],
+          "assetTargetFallback": true,
+          "warn": true,
+          "frameworkReferences": {
+            "Microsoft.AspNetCore.App": {
+              "privateAssets": "none"
+            },
+            "Microsoft.NETCore.App": {
+              "privateAssets": "all"
+            }
+          },
+          "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.200/PortableRuntimeIdentifierGraph.json"
+        }
+      }
+    }
+  }
+}
Index: NutriMatch/obj/NutriMatch.csproj.nuget.g.props
===================================================================
--- NutriMatch/obj/NutriMatch.csproj.nuget.g.props	(revision 5d48bf93fdd26aa14b8ae7ac68b61e5d60e3e2a8)
+++ NutriMatch/obj/NutriMatch.csproj.nuget.g.props	(revision 5d48bf93fdd26aa14b8ae7ac68b61e5d60e3e2a8)
@@ -0,0 +1,16 @@
+﻿<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
+    <RestoreSuccess Condition=" '$(RestoreSuccess)' == '' ">True</RestoreSuccess>
+    <RestoreTool Condition=" '$(RestoreTool)' == '' ">NuGet</RestoreTool>
+    <ProjectAssetsFile Condition=" '$(ProjectAssetsFile)' == '' ">$(MSBuildThisFileDirectory)project.assets.json</ProjectAssetsFile>
+    <NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">$(UserProfile)\.nuget\packages\</NuGetPackageRoot>
+    <NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">C:\Users\milan\.nuget\packages\;C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages</NuGetPackageFolders>
+    <NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle>
+    <NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">6.13.0</NuGetToolVersion>
+  </PropertyGroup>
+  <ItemGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
+    <SourceRoot Include="C:\Users\milan\.nuget\packages\" />
+    <SourceRoot Include="C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages\" />
+  </ItemGroup>
+</Project>
Index: NutriMatch/obj/NutriMatch.csproj.nuget.g.targets
===================================================================
--- NutriMatch/obj/NutriMatch.csproj.nuget.g.targets	(revision 5d48bf93fdd26aa14b8ae7ac68b61e5d60e3e2a8)
+++ NutriMatch/obj/NutriMatch.csproj.nuget.g.targets	(revision 5d48bf93fdd26aa14b8ae7ac68b61e5d60e3e2a8)
@@ -0,0 +1,2 @@
+﻿<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
Index: NutriMatch/obj/project.assets.json
===================================================================
--- NutriMatch/obj/project.assets.json	(revision 5d48bf93fdd26aa14b8ae7ac68b61e5d60e3e2a8)
+++ NutriMatch/obj/project.assets.json	(revision 5d48bf93fdd26aa14b8ae7ac68b61e5d60e3e2a8)
@@ -0,0 +1,82 @@
+{
+  "version": 3,
+  "targets": {
+    "net9.0": {}
+  },
+  "libraries": {},
+  "projectFileDependencyGroups": {
+    "net9.0": []
+  },
+  "packageFolders": {
+    "C:\\Users\\milan\\.nuget\\packages\\": {},
+    "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages": {}
+  },
+  "project": {
+    "version": "1.0.0",
+    "restore": {
+      "projectUniqueName": "D:\\VScode\\NutriMatch\\NutriMatch\\NutriMatch.csproj",
+      "projectName": "NutriMatch",
+      "projectPath": "D:\\VScode\\NutriMatch\\NutriMatch\\NutriMatch.csproj",
+      "packagesPath": "C:\\Users\\milan\\.nuget\\packages\\",
+      "outputPath": "D:\\VScode\\NutriMatch\\NutriMatch\\obj\\",
+      "projectStyle": "PackageReference",
+      "fallbackFolders": [
+        "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
+      ],
+      "configFilePaths": [
+        "C:\\Users\\milan\\AppData\\Roaming\\NuGet\\NuGet.Config",
+        "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config",
+        "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
+      ],
+      "originalTargetFrameworks": [
+        "net9.0"
+      ],
+      "sources": {
+        "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
+        "https://api.nuget.org/v3/index.json": {}
+      },
+      "frameworks": {
+        "net9.0": {
+          "targetAlias": "net9.0",
+          "projectReferences": {}
+        }
+      },
+      "warningProperties": {
+        "warnAsError": [
+          "NU1605"
+        ]
+      },
+      "restoreAuditProperties": {
+        "enableAudit": "true",
+        "auditLevel": "low",
+        "auditMode": "direct"
+      },
+      "SdkAnalysisLevel": "9.0.200"
+    },
+    "frameworks": {
+      "net9.0": {
+        "targetAlias": "net9.0",
+        "imports": [
+          "net461",
+          "net462",
+          "net47",
+          "net471",
+          "net472",
+          "net48",
+          "net481"
+        ],
+        "assetTargetFallback": true,
+        "warn": true,
+        "frameworkReferences": {
+          "Microsoft.AspNetCore.App": {
+            "privateAssets": "none"
+          },
+          "Microsoft.NETCore.App": {
+            "privateAssets": "all"
+          }
+        },
+        "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.200/PortableRuntimeIdentifierGraph.json"
+      }
+    }
+  }
+}
Index: NutriMatch/obj/project.nuget.cache
===================================================================
--- NutriMatch/obj/project.nuget.cache	(revision 5d48bf93fdd26aa14b8ae7ac68b61e5d60e3e2a8)
+++ NutriMatch/obj/project.nuget.cache	(revision 5d48bf93fdd26aa14b8ae7ac68b61e5d60e3e2a8)
@@ -0,0 +1,8 @@
+{
+  "version": 2,
+  "dgSpecHash": "/jx9+Sj3lFg=",
+  "success": true,
+  "projectFilePath": "D:\\VScode\\NutriMatch\\NutriMatch\\NutriMatch.csproj",
+  "expectedPackageFiles": [],
+  "logs": []
+}
Index: triMatch/wwwroot/css/AdminIndex.css
===================================================================
--- NutriMatch/wwwroot/css/AdminIndex.css	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,266 +1,0 @@
- body {
-   
-    font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
-}
-
-.admin-header {
-    background: linear-gradient(135deg, #f8fafc 0%, #e2e8f0 100%);
-    border-radius: 12px;
-    padding: 2rem;
-    border: 1px solid #e2e8f0;
-    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
-}
-
-
-
-
-.admin-subtitle {
-    font-size: 1.1rem;
-    margin: 0;
-    margin-top: 0.5rem;
-}
-
-.admin-stats .badge {
-    padding: 0.5rem 1rem;
-    font-weight: 600;
-}
-
-.bulk-actions-section {
-    background: #fff;
-    border: 2px dashed #d1d5db;
-    border-radius: 8px;
-    padding: 1.5rem;
-    transition: all 0.3s ease;
-    display: none;
-}
-
-.bulk-actions-section.show {
-    display: block;
-    animation: slideDown 0.3s ease;
-}
-
-.bulk-actions-section:hover {
-    border-color: var(--nutri-green);
-    background: #f0fdf4;
-}
-
-.admin-recipe-card {
-    position: relative;
-    border: 2px solid #e5e7eb;
-    transition: all 0.3s ease;
-}
-
-.admin-recipe-card:hover {
-    border-color: var(--nutri-green);
-    transform: translateY(-2px);
-}
-
-.admin-recipe-card.selected {
-    border-color: #3b82f6;
-    background: #eff6ff;
-}
-
-.recipe-select {
-    position: absolute;
-    top: 10px;
-    left: 10px;
-    z-index: 10;
-}
-
-.recipe-checkbox {
-    width: 20px;
-    height: 20px;
-    cursor: pointer;
-    accent-color: #3b82f6;
-}
-
-.recipe-status-badge {
-    position: absolute;
-    top: 10px;
-    right: 10px;
-    z-index: 10;
-}
-
-.recipe-status-badge .badge {
-    font-size: 0.75rem;
-    padding: 0.25rem 0.5rem;
-}
-
-.admin-actions-buttons {
-    border-top: 1px solid #e5e7eb;
-    padding-top: 1rem;
-}
-
-.admin-actions-buttons .btn {
-    font-size: 0.875rem;
-    padding: 0.375rem 0.75rem;
-    font-weight: 500;
-}
-
-.decline-reason-section {
-    background: #fef2f2;
-    border: 1px solid #fecaca;
-    border-radius: 6px;
-    padding: 1rem;
-    animation: slideDown 0.3s ease;
-}
-
-@keyframes slideDown {
-    from {
-        opacity: 0;
-        transform: translateY(-10px);
-    }
-
-    to {
-        opacity: 1;
-        transform: translateY(0);
-    }
-}
-
-.empty-state {
-    background: #f9fafb;
-    border: 2px dashed #d1d5db;
-    border-radius: 12px;
-    margin: 2rem 0;
-}
-
-.loading-overlay {
-    position: fixed;
-    top: 0;
-    left: 0;
-    width: 100%;
-    height: 100%;
-    background: rgba(0, 0, 0, 0.7);
-    display: flex;
-    flex-direction: column;
-    justify-content: center;
-    align-items: center;
-    z-index: 9999;
-    color: white;
-}
-
-.loading-overlay .spinner-border {
-    width: 3rem;
-    height: 3rem;
-}
-
-.recipe-image {
-    cursor: pointer;
-    transition: opacity 0.3s ease;
-}
-
-.recipe-image:hover {
-    opacity: 0.9;
-}
-
-.recipe-title {
-    cursor: pointer;
-    transition: color 0.3s ease;
-}
-
-.recipe-title:hover {
-    color: var(--nutri-green);
-}
-
-.btn:disabled {
-    opacity: 0.6;
-    cursor: not-allowed;
-}
-
-.btn-success:hover:not(:disabled) {
-    transform: translateY(-1px);
-    box-shadow: 0 4px 8px rgba(34, 197, 94, 0.3);
-}
-
-.btn-danger:hover:not(:disabled) {
-    transform: translateY(-1px);
-    box-shadow: 0 4px 8px rgba(239, 68, 68, 0.3);
-}
-
-@media (max-width: 768px) {
-    .admin-header {
-        text-align: center;
-        padding: 1.5rem;
-    }
-
-    .bulk-actions-section {
-        padding: 1rem;
-    }
-
-    .admin-actions-buttons {
-        display: flex;
-        flex-direction: column;
-        gap: 0.5rem;
-    }
-
-    .admin-actions-buttons .btn {
-        width: 100%;
-    }
-}
-
-.recipe-card.removing {
-    animation: fadeOut 0.5s ease forwards;
-}
-
-@keyframes fadeOut {
-    from {
-        opacity: 1;
-        transform: scale(1);
-    }
-
-    to {
-        opacity: 0;
-        transform: scale(0.9);
-    }
-}
-
-.recipe-card.approved {
-    border-color: #10b981;
-    background: #f0fdf4;
-}
-
-.recipe-card.declined {
-    border-color: #ef4444;
-    background: #fef2f2;
-}
-
-.form-select-sm,
-.form-control-sm {
-    font-size: 0.875rem;
-}
-
-.decline-reason-section .form-label {
-    color: #991b1b;
-    margin-bottom: 0.5rem;
-}
-
-.search-container {
-    background: white;
-    border-radius: 8px;
-    padding: 1.5rem;
-    border: 1px solid #e5e7eb;
-    margin-bottom: 2rem;
-    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
-}
-
-.admin-recipe-card .recipe-meta {
-    margin-bottom: 1rem;
-}
-
-.admin-recipe-card .recipe-meta span {
-    font-size: 0.875rem;
-    color: #6b7280;
-    margin-right: 1rem;
-}
-
-.toast-container {
-    position: fixed;
-    top: 20px;
-    right: 20px;
-    z-index: 10000;
-}
-
-.toast {
-    margin-bottom: 1rem;
-}
-
Index: triMatch/wwwroot/css/HomeIndex.css
===================================================================
--- NutriMatch/wwwroot/css/HomeIndex.css	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,545 +1,0 @@
-:root {
-    --primary-green: #2ECC71;
-    --dark-green: #27AE60;
-    --light-green: #58D68D;
-    --light-green-gray: #bbcabe;
-    --dark-gray: #2C3E50;
-    --light-gray: #ECF0F1;
-    --nutri-light-gray: #f3f4f6;
-    --nutri-green-dark: #22c55e;
-}
-
-body {
-    font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
-    background: linear-gradient(135deg, var(--light-pink) 0%, white 50%, var(--light-green-gray) 100%);
-    min-height: 100vh;
-}
-
-
-
-.signup-section {
-    padding: 6rem 0;
-    background: linear-gradient(135deg, rgba(255, 235, 238, 0.8) 0%, rgba(255, 255, 255, 0.9) 100%);
-    border-radius: 50px;
-    margin-bottom: 4rem;
-    position: relative;
-    overflow: hidden;
-}
-
-.signup-title {
-    font-size: 3.5rem;
-    font-weight: bold;
-    color: var(--dark-gray);
-    margin-bottom: 1rem;
-}
-
-.signup-subtitle {
-    font-size: 1.5rem;
-    color: var(--primary-green);
-    font-weight: 600;
-    margin-bottom: 1rem;
-}
-
-.signup-description {
-    font-size: 1.1rem;
-    color: #666;
-    margin-bottom: 2rem;
-    line-height: 1.6;
-}
-
-.btn-primary-custom {
-    background: linear-gradient(45deg, var(--primary-green), var(--dark-green));
-    border: none;
-    padding: 15px 30px;
-    font-size: 1.1rem;
-    font-weight: 600;
-    border-radius: 25px;
-    transition: all 0.3s ease;
-    box-shadow: 0 4px 15px rgba(46, 204, 113, 0.3);
-    color: white;
-}
-
-.btn-primary-custom:hover {
-    transform: translateY(-2px);
-    box-shadow: 0 6px 20px rgba(46, 204, 113, 0.4);
-    background: linear-gradient(45deg, var(--dark-green), var(--primary-green));
-    color: white;
-}
-
-.floating-elements {
-    position: absolute;
-    width: 100%;
-    height: 100%;
-    overflow: hidden;
-    pointer-events: none;
-}
-
-.floating-leaf {
-    position: absolute;
-    color: var(--light-green);
-    opacity: 0.3;
-    animation: float 6s ease-in-out infinite;
-}
-
-@keyframes float {
-    0%, 100% { transform: translateY(0px) rotate(0deg); }
-    50% { transform: translateY(-20px) rotate(10deg); }
-}
-
-
-.share-recipe-section {
-    padding: 6rem 0;
-    background: white;
-    margin-bottom: 4rem;
-    border-radius: 50px;
-}
-
-.share-title {
-    font-size: 2.5rem;
-    font-weight: bold;
-    color: var(--dark-gray);
-    margin-bottom: 1rem;
-}
-
-.share-description {
-    font-size: 1.1rem;
-    color: #666;
-    margin-bottom: 2rem;
-    line-height: 1.6;
-}
-
-.sample-recipe {
-    background: linear-gradient(145deg, #f8f9fa, #e9ecef);
-    border-radius: 30px;
-    padding: 2rem;
-    box-shadow: 0 20px 40px rgba(0,0,0,0.1);
-    position: relative;
-    max-width: 300px;
-    margin: 0 auto;
-}
-
-.sample-screen {
-    background: white;
-    border-radius: 20px;
-    padding: 1.5rem;
-    box-shadow: inset 0 2px 10px rgba(0,0,0,0.1);
-}
-
-.btn-create-recipe {
-    background: var(--primary-green);
-    color: white;
-    border: none;
-    padding: 12px 25px;
-    border-radius: 20px;
-    font-weight: 600;
-    transition: all 0.3s ease;
-}
-
-.btn-create-recipe:hover {
-    background: var(--dark-green);
-    transform: translateY(-2px);
-    color: white;
-}
-
-
-trending-section {
-    border-radius: 50px;
-    padding: 4rem 0;
-    background: linear-gradient(135deg, rgba(245, 247, 250, 0.8) 0%, rgba(255, 255, 255, 0.9) 100%);
-}
-
-.section-title {
-    font-size: 2.5rem;
-    font-weight: bold;
-    color: var(--dark-gray);
-    margin-bottom: 1rem;
-    text-align: center;
-}
-
-.section-subtitle {
-    text-align: center;
-    color: #666;
-    margin-bottom: 3rem;
-    font-size: 1.1rem;
-}
-
-.recipe-card {
-    background: white;
-    border-radius: 15px;
-    overflow: hidden;
-    box-shadow: 0 8px 25px rgba(0,0,0,0.1);
-    transition: all 0.3s ease;
-    margin-bottom: 2rem;
-    position: relative;
-    width: 100%;
-    max-width: 417.953px;
-    height: 380px;
-}
-
-.recipe-card:hover {
-    transform: translateY(-5px);
-    box-shadow: 0 15px 35px rgba(0,0,0,0.15);
-}
-
-.recipe-image {
-    width: 100%;
-    height: 200px;
-    object-fit: cover;
-    border-radius: 15px 15px 0 0;
-}
-
-.recipe-content {
-    padding: 1.5rem;
-    position: relative;
-    z-index: 1;
-}
-
-.recipe-title {
-    font-size: 1.3rem;
-    font-weight: bold;
-    color: var(--dark-gray);
-    margin-bottom: 0.5rem;
-}
-
-.recipe-meta {
-    display: flex;
-    align-items: center;
-    gap: 1rem;
-    margin-bottom: 1rem;
-    color: #666;
-    font-size: 0.9rem;
-}
-
-.rating {
-    color: #FFD700;
-}
-
-.favorite-btn {
-            position: absolute;
-            top: 12px;
-            right: 12px;
-            background: rgba(255, 255, 255, 0.9);
-            border: none;
-            border-radius: 50%;
-            width: 40px;
-            height: 40px;
-            display: flex;
-            align-items: center;
-            justify-content: center;
-            cursor: pointer;
-            transition: all 0.3s ease;
-            z-index: 10;
-            backdrop-filter: blur(10px);
-        }
-
-.favorite-btn:hover {
-    background: rgba(255, 255, 255, 1);
-    transform: scale(1.1);
-}
-
-.favorite-btn i {
-    font-size: 18px;
-    color: #ef4444;
-    transition: all 0.3s ease;
-}
-
-.favorite-btn:hover i {
-    color: #dc2626;
-}
-
-.favorite-btn.active i {
-    color: #ef4444;
-    font-weight: 900;
-}
-
-.chef-badge {
-    background: var(--primary-green);
-    color: white;
-    padding: 0.3rem 0.8rem;
-    border-radius: 15px;
-    font-size: 0.8rem;
-    font-weight: 600;
-    display: inline-block;
-    margin-bottom: 0.5rem;
-}
-
-
-.calories-info {
-    margin-top: 0.5rem;
-    padding-top: 0.9rem;
-    border-top: 1px solid #eee;
-}
-
-.calories {
-    color: #ff6b35;
-    font-weight: 600;
-    font-size: 0.9rem;
-    display: flex;
-    align-items: center;
-    gap: 0.3rem;
-}
-
-.calories i {
-    font-size: 0.8rem;
-}
-
-
-.nutrition-overlay {
-    position: absolute;
-    top: 0;
-    left: 0;
-    width: 100%;
-    height: 100%;
-    background: rgba(255, 255, 255, 0.98);
-    backdrop-filter: blur(10px);
-    opacity: 0;
-    visibility: hidden;
-    transition: all 0.3s ease;
-    display: flex;
-    align-items: center;
-    justify-content: center;
-    z-index: 2;
-    border-radius: 15px;
-}
-
-.recipe-card:hover .nutrition-overlay {
-    opacity: 1;
-    visibility: visible;
-}
-
-.nutrition-content {
-    text-align: center;
-    padding: 2rem 1.5rem;
-}
-
-.nutrition-content h4 {
-    color: var(--dark-gray);
-    font-size: 1.2rem;
-    font-weight: bold;
-    margin-bottom: 1.5rem;
-}
-
-.nutrition-grid {
-    display: grid;
-    grid-template-columns: 1fr 1fr;
-    gap: 1rem;
-    max-width: 200px;
-    margin: 0 auto;
-}
-
-.nutrition-item {
-    display: flex;
-    flex-direction: column;
-    align-items: center;
-    gap: 0.3rem;
-}
-
-.nutrition-label {
-    font-size: 0.8rem;
-    color: #666;
-    font-weight: 500;
-    text-transform: uppercase;
-    letter-spacing: 0.5px;
-}
-
-.nutrition-value {
-    font-size: 1.1rem;
-    font-weight: bold;
-    color: var(--primary-green);
-}
-.recipe-card:hover .recipe-content {
-    transform: translateZ(0);
-}
-
-
-.restaurants-section {
-    padding: 4rem 0;
-    background: white;
-}
-
-.restaurants-container {
-    position: relative;
-    height: 300px;
-    overflow: hidden;
-}
-
-.restaurant-card {
-    position: absolute;
-    background: white;
-    border-radius: 20px;
-    padding: 1.5rem;
-    box-shadow: 0 10px 30px rgba(0,0,0,0.1);
-    transition: all 0.3s ease;
-    min-width: 200px;
-    text-align: center;
-    cursor: pointer;
-    animation: floatAround 20s infinite linear;
-}
-
-.restaurant-card:hover {
-    transform: translateY(-10px);
-    box-shadow: 0 20px 50px rgba(0,0,0,0.2);
-}
-
-.restaurant-logo {
-    width: 80px;
-    height: 80px;
-    border-radius: 50%;
-    margin: 0 auto 1rem;
-    background-size: cover;
-    background-position: center;
-    border: 3px solid #f8f9fa;
-}
-
-.restaurant-name {
-    font-size: 1.1rem;
-    font-weight: bold;
-    color: var(--dark-gray);
-    margin-bottom: 0.5rem;
-}
-
-.restaurant-items {
-    font-size: 0.9rem;
-    color: #666;
-    margin-bottom: 1rem;
-}
-
-.restaurant-rating {
-    color: #FFD700;
-    font-size: 0.9rem;
-}
-
-@keyframes floatAround {
-    0% { transform: translateX(-100px) translateY(0px); }
-    25% { transform: translateX(20vw) translateY(-20px); }
-    50% { transform: translateX(50vw) translateY(10px); }
-    75% { transform: translateX(80vw) translateY(-15px); }
-    100% { transform: translateX(100vw) translateY(0px); }
-}
-
-
-
-
-
-.daily-dish {
-    margin-left: 100px;
-}
-
-
-
-.recipe-macros {
-    display: grid;
-    grid-template-columns: repeat(4, 1fr);
-    gap: 0.5rem;
-}
-
-.macro-item {
-    text-align: center;
-    padding: 0.5rem;
-    background: var(--nutri-light-gray);
-    border-radius: 10px;
-}
-
-.macro-value {
-    font-weight: 700;
-    color: var(--nutri-green-dark);
-    font-size: 1rem;
-    line-height: 1.2;
-}
-
-.macro-label {
-    font-size: 0.8rem;
-    color: var(--nutri-gray);
-    text-transform: uppercase;
-    font-weight: 600;
-    line-height: 1;
-}
-
-
-
-
-@keyframes float {
-    0%, 100% { 
-        transform: translateY(0px) rotate(0deg); 
-        opacity: 0.6;
-    }
-    50% { 
-        transform: translateY(-15px) rotate(5deg); 
-        opacity: 0.3;
-    }
-}
-
-
-.welcome-back-section .btn-primary-custom:hover {
-    background: #45a049 !important;
-    transform: translateY(-1px);
-    box-shadow: 0 4px 12px rgba(76, 175, 80, 0.3);
-}
-
-.welcome-back-section .btn-outline:hover {
-    background: #4CAF50;
-    color: white;
-    transform: translateY(-1px);
-}
-
-
-.user-summary-card:hover {
-    transform: translateY(-2px);
-    box-shadow: 0 8px 25px rgba(0, 0, 0, 0.12);
-    transition: all 0.3s ease;
-}
-
-
-.quick-action a:hover {
-    color: #45a049;
-}
-
-.quick-action a:hover i {
-    transform: translateX(4px);
-    transition: transform 0.2s ease;
-}
-
-
-@media (max-width: 768px) {
-    .welcome-title {
-        font-size: 2.2rem !important;
-        text-align: center;
-    }
-    
-    .welcome-subtitle {
-        text-align: center;
-        font-size: 1.1rem !important;
-    }
-    
-    .welcome-actions {
-        justify-content: center;
-        margin-top: 24px;
-    }
-    
-    .welcome-actions a {
-        flex: 1;
-        min-width: 140px;
-        justify-content: center;
-    }
-    
-    .user-summary-card {
-        margin-top: 40px;
-    }
-    
-    .status-badge {
-        display: flex !important;
-        justify-content: center;
-    }
-}
-
-@media (max-width: 576px) {
-    .welcome-actions {
-        flex-direction: column;
-        width: 100%;
-    }
-    
-    .welcome-actions a {
-        width: 100%;
-        justify-content: center;
-    }
-}
Index: triMatch/wwwroot/css/MealPlanCreate.css
===================================================================
--- NutriMatch/wwwroot/css/MealPlanCreate.css	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,314 +1,0 @@
-
-body {
-    background: #c3d5c4;
-     font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
-    margin: 0;
-    padding: 0;
-    min-height: 100vh;
-}
-
-
-.container {
-    margin: 0 auto;
-    padding: 40px 20px;
-}
-
-.header-section {
-    text-align: center;
-    margin-bottom: 40px;
-    color: #2c5530;
-}
-
-.header-section h1 {
-    font-size: 2.5rem;
-    font-weight: 700;
-    margin-bottom: 10px;
-}
-
-.header-section p {
-    font-size: 1.1rem;
-    color: #6b7280;
-    margin: 0;
-}
-
-.main-card {
-    background: rgba(255, 255, 255, 0.95);
-    border-radius: 24px;
-    padding: 40px;
-    box-shadow: 0 8px 32px rgba(0, 0, 0, 0.1);
-    backdrop-filter: blur(10px);
-    border: 1px solid rgba(255, 255, 255, 0.2);
-}
-
-.section-title {
-    display: flex;
-    align-items: center;
-    font-size: 1.3rem;
-    font-weight: 600;
-    color: #2c5530;
-    margin-bottom: 20px;
-    padding-bottom: 12px;
-    border-bottom: 2px solid #e5e7eb;
-}
-
-.section-title i {
-    color: #4ade80;
-    margin-right: 12px;
-    font-size: 1.1rem;
-}
-
-.form-group {
-    margin-bottom: 24px;
-}
-
-.form-label {
-    font-weight: 600;
-    color: #374151;
-    margin-bottom: 8px;
-    display: flex;
-    align-items: center;
-    font-size: 0.95rem;
-}
-
-.form-label i {
-    margin-right: 8px;
-    width: 16px;
-    text-align: center;
-}
-
-.form-control {
-    border: 2px solid #e5e7eb;
-    border-radius: 12px;
-    padding: 14px 16px;
-    font-size: 0.95rem;
-    transition: all 0.2s ease;
-    background: white;
-}
-
-.form-control:focus {
-    border-color: #4ade80;
-    box-shadow: 0 0 0 3px rgba(74, 222, 128, 0.1);
-}
-
-.macro-grid {
-    display: grid;
-    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
-    gap: 20px;
-    margin-bottom: 30px;
-}
-
-.macro-item {
-    background: #f8fafc;
-    border: 2px solid #e5e7eb;
-    border-radius: 16px;
-    padding: 20px;
-    transition: all 0.2s ease;
-}
-
-.macro-item:hover {
-    border-color: #4ade80;
-    background: #f0fdf4;
-}
-
-.macro-item .form-control {
-    border: 1px solid #d1d5db;
-    margin-top: 8px;
-}
-
-.help-text {
-    font-size: 0.8rem;
-    color: #6b7280;
-    margin-top: 4px;
-}
-
-.submit-section {
-    text-align: center;
-    margin-top: 40px;
-    padding-top: 30px;
-    border-top: 2px solid #e5e7eb;
-}
-
-.btn-create {
-    background: #4ade80;
-    color: white;
-    border: none;
-    border-radius: 16px;
-    padding: 16px 40px;
-    font-size: 1.1rem;
-    font-weight: 600;
-    transition: all 0.3s ease;
-    box-shadow: 0 4px 12px rgba(74, 222, 128, 0.3);
-}
-
-.btn-create:hover {
-    background: #22c55e;
-    transform: translateY(-2px);
-    box-shadow: 0 8px 25px rgba(74, 222, 128, 0.4);
-    color: white;
-}
-
-.btn-create:disabled {
-    background: #9ca3af;
-    transform: none;
-    box-shadow: none;
-}
-
-.success-message {
-    background: #d1f2d9;
-    color: #0d5016;
-    padding: 16px 20px;
-    border-radius: 12px;
-    border: 1px solid #7dd87f;
-    margin-bottom: 24px;
-    display: flex;
-    align-items: center;
-}
-
-.success-message i {
-    margin-right: 12px;
-    color: #16a34a;
-}
-
-.error-message {
-    background: #fed7d7;
-    color: #9b2c2c;
-    padding: 16px 20px;
-    border-radius: 12px;
-    border: 1px solid #feb2b2;
-    margin-bottom: 24px;
-}
-
-.error-message i {
-    margin-right: 12px;
-}
-
-.error-message ul {
-    margin: 8px 0 0 0;
-    padding-left: 20px;
-}
-
-.icon-fire {
-    color: #ef4444;
-}
-
-.icon-protein {
-    color: #8b5cf6;
-}
-
-.icon-carbs {
-    color: #f59e0b;
-}
-
-.icon-fat {
-    color: #06b6d4;
-}
-
-.icon-restaurant {
-    color: #ec4899;
-}
-
-@media (max-width: 768px) {
-    .container {
-        padding: 20px 16px;
-    }
-
-    .main-card {
-        padding: 24px;
-        border-radius: 20px;
-    }
-
-    .macro-grid {
-        grid-template-columns: 1fr;
-        gap: 16px;
-    }
-
-    .header-section h1 {
-        font-size: 2rem;
-    }
-}
-
-
-.modal {
-    position: fixed;
-    z-index: 1000;
-    left: 0;
-    top: 0;
-    width: 100%;
-    height: 100%;
-    background-color: rgba(0, 0, 0, 0.5);
-    display: flex;
-    align-items: center;
-    justify-content: center;
-}
-
-.modal-content {
-    background-color: white;
-    border-radius: 8px;
-    padding: 0;
-    width: 90%;
-    max-width: 500px;
-    max-height: 90vh;
-    overflow-y: auto;
-    box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15);
-}
-
-.modal-header {
-    padding: 1.5rem;
-    border-bottom: 1px solid #eee;
-    display: flex;
-    justify-content: space-between;
-    align-items: center;
-}
-
-.modal-header h3 {
-    margin: 0;
-    color: #333;
-}
-
-.close {
-    font-size: 24px;
-    font-weight: bold;
-    color: #999;
-    cursor: pointer;
-    transition: color 0.2s;
-}
-
-.close:hover {
-    color: #333;
-}
-
-.modal-body {
-    padding: 1.5rem;
-}
-
-.btn-secondary {
-    background-color: #6c757d;
-    color: white;
-    border: none;
-    padding: 0.75rem 1.5rem;
-    border-radius: 4px;
-    cursor: pointer;
-    margin-right: 0.5rem;
-    transition: background-color 0.2s;
-}
-
-.btn-secondary:hover {
-    background-color: #5a6268;
-}
-
-.add-ingredient-option {
-    padding: 12px;
-    cursor: pointer;
-    border-bottom: 1px solid #eee;
-    color: #007bff;
-    font-weight: 500;
-    transition: background-color 0.2s;
-}
-
-.add-ingredient-option:hover {
-    background-color: #f8f9fa;
-}
-
-.add-ingredient-option:last-child {
-    border-bottom: none;
-}
Index: triMatch/wwwroot/css/MealPlanDetails.css
===================================================================
--- NutriMatch/wwwroot/css/MealPlanDetails.css	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,490 +1,0 @@
-:root {
---primary-green: #2ECC71;
---dark-green: #27AE60;
---light-green: #58D68D;
---light-green-gray: #bbcabe;
---dark-gray: #2C3E50;
---light-gray: #ECF0F1;
---nutri-light-gray: #f3f4f6;
---nutri-green-dark: #22c55e;
---danger-red: #dc2626;
---danger-red-hover: #b91c1c;
-}
-
-body {
-    font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
-    background: linear-gradient(135deg, var(--light-pink) 0%, white 50%, var(--light-green-gray) 100%);
-    min-height: 100vh;
-}
-
-.container {
-    margin: 0 auto;
-    padding: 40px 20px;
-}
-
-.header-section {
-    text-align: center;
-    margin-bottom: 30px;
-    color: #2c5530;
-}
-
-.header-section h1 {
-    margin-top: 3rem;
-    font-size: 2.5rem;
-    font-weight: 700;
-    margin-bottom: 8px;
-}
-
-.header-section p {
-    font-size: 1.1rem;
-    color: #6b7280;
-    margin-bottom: 8px;
-}
-
-.generated-date {
-    color: #9ca3af;
-    font-size: 0.9rem;
-    margin-bottom: 0;
-}
-
-.navigation-bar {
-    display: flex;
-    justify-content: space-between;
-    align-items: center;
-    margin-bottom: 30px;
-    gap: 16px;
-}
-
-.nav-btn {
-    display: inline-flex;
-    align-items: center;
-    gap: 8px;
-    background: rgba(255, 255, 255, 0.95);
-    color: #374151;
-    text-decoration: none;
-    border: none;
-    padding: 12px 20px;
-    border-radius: 12px;
-    font-weight: 600;
-    font-size: 0.95rem;
-    transition: all 0.2s ease;
-    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
-    cursor: pointer;
-}
-
-.nav-btn:hover {
-    background: white;
-    color: #374151;
-    transform: translateY(-1px);
-    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
-}
-
-.nav-btn.delete {
-    background: var(--danger-red);
-    color: white;
-}
-
-.nav-btn.delete:hover {
-    background: var(--danger-red-hover);
-    color: white;
-}
-
-.days-container {
-    display: grid;
-    grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
-    gap: 24px;
-    margin-bottom: 40px;
-}
-
-.day-card {
-    background: rgba(255, 255, 255, 0.95);
-    border-radius: 20px;
-    padding: 24px;
-    box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08);
-    transition: all 0.2s ease;
-    border: 1px solid rgba(255, 255, 255, 0.2);
-}
-
-.day-card:hover {
-    transform: translateY(-2px);
-    box-shadow: 0 8px 30px rgba(0, 0, 0, 0.12);
-}
-
-.day-header {
-    display: flex;
-    justify-content: space-between;
-    align-items: center;
-    margin-bottom: 20px;
-    padding-bottom: 16px;
-    border-bottom: 2px solid #f1f5f9;
-}
-
-.day-name {
-    font-size: 1.4rem;
-    font-weight: 700;
-    color: #2c5530;
-}
-
-.day-calories {
-    background: #4ade80;
-    color: white;
-    padding: 6px 14px;
-    border-radius: 20px;
-    font-size: 0.85rem;
-    font-weight: 600;
-}
-
-.meals-container {
-    display: flex;
-    flex-direction: column;
-    gap: 12px;
-}
-
-.meal-card {
-    background: #f8fafc;
-    border-radius: 12px;
-    padding: 16px;
-    border-left: 4px solid #4ade80;
-    transition: all 0.2s ease;
-    position: relative;
-    min-height: 10rem;
-}
-
-.meal-card.breakfast {
-    background: #fef3c7;
-    border-left-color: #f59e0b;
-}
-
-.meal-card.lunch {
-    background: #dbeafe;
-    border-left-color: #3b82f6;
-}
-
-.meal-card.dinner {
-    background: #fce7f3;
-    border-left-color: #ec4899;
-}
-
-.meal-card.snack {
-    background: #ede9fe;
-    border-left-color: #8b5cf6;
-}
-
-.meal-card:hover {
-    transform: translateX(2px);
-}
-
-.meal-card.clickable {
-    cursor: pointer;
-}
-
-.meal-card.clickable:hover {
-    transform: translateX(4px);
-    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
-}
-
-.meal-card.loading {
-    opacity: 0.6;
-    pointer-events: none;
-}
-
-.meal-card.loading::after {
-    content: '';
-    position: absolute;
-    top: 50%;
-    left: 50%;
-    width: 20px;
-    height: 20px;
-    margin: -10px 0 0 -10px;
-    border: 2px solid #f3f3f3;
-    border-top: 2px solid #4ade80;
-    border-radius: 50%;
-    animation: spin 1s linear infinite;
-}
-
-@keyframes spin {
-    0% { transform: rotate(0deg); }
-    100% { transform: rotate(360deg); }
-}
-
-.meal-header {
-    display: flex;
-    justify-content: space-between;
-    align-items: center;
-    margin-bottom: 8px;
-}
-
-.meal-type {
-    font-weight: 700;
-    font-size: 0.8rem;
-    text-transform: uppercase;
-    letter-spacing: 0.5px;
-}
-
-.meal-type.breakfast { color: #d97706; }
-.meal-type.lunch { color: #2563eb; }
-.meal-type.dinner { color: #db2777; }
-.meal-type.snack { color: #7c3aed; }
-
-.restaurant-badge {
-    position:absolute;
-    top: 1.5rem;
-    left: 6rem;
-    background: #ef4444;
-    color: white;
-    padding: 3px 8px;
-    border-radius: 12px;
-    font-size: 0.7rem;
-    font-weight: 600;
-    text-transform: uppercase;
-    letter-spacing: 0.3px;
-}
-
-.recipe-badge {
-    position:absolute;
-    top: 1.5rem;
-    left: 6rem;
-    background: #4ade80;
-    color: white;
-    padding: 3px 8px;
-    border-radius: 12px;
-    font-size: 0.7rem;
-    font-weight: 600;
-    text-transform: uppercase;
-    letter-spacing: 0.3px;
-}
-
-.meal-name {
-    font-size: 1.05rem;
-    font-weight: 600;
-    color: #374151;
-    margin-bottom: 4px;
-    line-height: 1.3;
-    margin-top: 5px;
-}
-
-.meal-restaurant {
-    font-size: 0.85rem;
-    color: #6b7280;
-    font-style: italic;
-    margin-bottom: 8px;
-}
-
-.meal-macros {
-    display: flex;
-    gap: 8px;
-    flex-wrap: wrap;
-}
-
-.macro-badge {
-    background: rgba(255, 255, 255, 0.8);
-    padding: 4px 10px;
-    border-radius: 16px;
-    font-size: 0.75rem;
-    font-weight: 600;
-    color: #374151;
-    border: 1px solid rgba(255, 255, 255, 0.5);
-}
-
-.empty-day {
-    text-align: center;
-    color: #9ca3af;
-    font-style: italic;
-    padding: 20px;
-    background: #f8fafc;
-    border-radius: 12px;
-}
-
-.summary-card {
-    background: rgba(255, 255, 255, 0.95);
-    border-radius: 20px;
-    padding: 32px;
-    box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08);
-    border: 1px solid rgba(255, 255, 255, 0.2);
-}
-
-.summary-header {
-    text-align: center;
-    margin-bottom: 24px;
-}
-
-.summary-header h2 {
-    color: #2c5530;
-    font-size: 1.8rem;
-    font-weight: 700;
-    margin-bottom: 8px;
-}
-
-.summary-header p {
-    color: #6b7280;
-    margin: 0;
-}
-
-.summary-grid {
-    display: grid;
-    grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
-    gap: 16px;
-}
-
-.summary-item {
-    background: #f0fdf4;
-    border: 2px solid #bbf7d0;
-    border-radius: 16px;
-    padding: 20px;
-    text-align: center;
-    transition: all 0.2s ease;
-}
-
-.summary-item:hover {
-    background: #dcfce7;
-    border-color: #4ade80;
-}
-
-.summary-label {
-    font-size: 0.8rem;
-    color: #6b7280;
-    margin-bottom: 8px;
-    text-transform: uppercase;
-    letter-spacing: 0.5px;
-    font-weight: 600;
-}
-
-.summary-value {
-    font-size: 1.6rem;
-    font-weight: 700;
-    color: #16a34a;
-    line-height: 1;
-}
-
-.modal {
-    display: none;
-    position: fixed;
-    left: 0;
-    top: 0;
-    width: 100%;
-    height: 100%;
-    overflow: auto;
-    background-color: rgba(0, 0, 0, 0.5);
-    backdrop-filter: blur(4px);
-}
-
-.modal-content {
-    background-color: #fefefe;
-    margin: 15% auto;
-    padding: 30px;
-    border: none;
-    border-radius: 20px;
-    width: 90%;
-    box-shadow: 0 10px 40px rgba(0, 0, 0, 0.3);
-}
-
-.delete-modal-content {
-    max-width: 450px;
-    text-align: center;
-}
-
-.modal-header {
-    color: var(--danger-red);
-    font-size: 1.5rem;
-    font-weight: 700;
-    margin-bottom: 16px;
-    display: flex;
-    justify-content: center;
-}
-
-.modal-body {
-    color: #374151;
-    font-size: 1rem;
-    line-height: 1.5;
-    margin-bottom: 24px;
-}
-
-.modal-buttons {
-    display: flex;
-    gap: 12px;
-    justify-content: center;
-}
-
-.modal-btn {
-    padding: 10px 24px;
-    border: none;
-    border-radius: 8px;
-    font-weight: 600;
-    cursor: pointer;
-    transition: all 0.2s ease;
-    font-size: 0.9rem;
-}
-
-.modal-btn.confirm {
-    background: var(--danger-red);
-    color: white;
-}
-
-.modal-btn.confirm:hover {
-    background: var(--danger-red-hover);
-}
-
-.modal-btn.cancel {
-    background: #f3f4f6;
-    color: #374151;
-}
-
-.modal-btn.cancel:hover {
-    background: #e5e7eb;
-}
-
-@media (max-width: 768px) {
-    .container {
-        padding: 20px 16px;
-    }
-
-    .days-container {
-        grid-template-columns: 1fr;
-        gap: 20px;
-    }
-    
-    .navigation-bar {
-        flex-direction: column;
-        align-items: stretch;
-    }
-    
-    .header-section h1 {
-        font-size: 2rem;
-    }
-    
-    .summary-grid {
-        grid-template-columns: repeat(2, 1fr);
-    }
-
-    .meal-macros {
-        justify-content: center;
-    }
-
-    .day-card, .summary-card {
-        padding: 20px;
-    }
-
-    .modal-content {
-        margin: 30% auto;
-        padding: 24px;
-    }
-
-    .modal-buttons {
-        flex-direction: column;
-    }
-}
-
-@keyframes fadeInUp {
-    from {
-        opacity: 0;
-        transform: translateY(20px);
-    }
-    to {
-        opacity: 1;
-        transform: translateY(0);
-    }
-}
-
-.day-card {
-    animation: fadeInUp 0.5s ease forwards;
-}
Index: triMatch/wwwroot/css/MealPlanIndex.css
===================================================================
--- NutriMatch/wwwroot/css/MealPlanIndex.css	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,372 +1,0 @@
-:root {
-    --primary-green: #2ECC71;
-    --dark-green: #27AE60;
-    --light-green: #58D68D;
-    --light-green-gray: #bbcabe;
-    --dark-gray: #2C3E50;
-    --light-gray: #ECF0F1;
-    --nutri-light-gray: #f3f4f6;
-    --nutri-green-dark: #22c55e;
-}
-
-body {
-    font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
-    background: linear-gradient(135deg, var(--light-pink) 0%, white 50%, var(--light-green-gray) 100%);
-    min-height: 100vh;
-}
-
-.container {
-    margin: 0 auto;
-    padding: 40px 20px;
-}
-
-.header-section {
-    margin-top: 3rem;
-    text-align: center;
-    margin-bottom: 40px;
-    color: #2c5530;
-}
-
-.header-section h1 {
-    font-size: 2.8rem;
-    font-weight: 700;
-    margin-bottom: 12px;
-}
-
-.header-section p {
-    font-size: 1.1rem;
-    color: #6b7280;
-    margin: 0;
-}
-
-.alert-message {
-    padding: 16px 20px;
-    border-radius: 12px;
-    margin-bottom: 30px;
-    display: flex;
-    align-items: center;
-    font-weight: 500;
-}
-
-.alert-message i {
-    margin-right: 12px;
-}
-
-.alert-success {
-    background: rgba(209, 250, 229, 0.9);
-    color: #065f46;
-    border: 1px solid #6ee7b7;
-}
-
-.alert-error {
-    background: rgba(254, 226, 226, 0.9);
-    color: #991b1b;
-    border: 1px solid #fca5a5;
-}
-
-.plans-grid {
-    display: grid;
-    grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
-    gap: 24px;
-}
-
-.plan-card {
-    background: rgba(255, 255, 255, 0.95);
-    border-radius: 20px;
-    overflow: hidden;
-    box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08);
-    transition: all 0.3s ease;
-    cursor: pointer;
-    border: 1px solid rgba(255, 255, 255, 0.2);
-    height: 100%;
-}
-
-.plan-card:hover {
-    transform: translateY(-4px);
-    box-shadow: 0 12px 40px rgba(0, 0, 0, 0.15);
-}
-
-.plan-card-header {
-    background: linear-gradient(135deg, #4ade80 0%, #22c55e 100%);
-    color: white;
-    padding: 20px;
-    position: relative;
-    overflow: hidden;
-    border-top-left-radius:12px;
-    border-top-right-radius: 12px;
-}
-
-.plan-card-header::before {
-    content: '';
-    position: absolute;
-    top: 0;
-    left: -100%;
-    width: 100%;
-    height: 100%;
-    background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent);
-    transition: left 0.5s ease;
-}
-
-.plan-card:hover .plan-card-header::before {
-    left: 100%;
-}
-
-.plan-title {
-    font-size: 1.2rem;
-    font-weight: 700;
-    margin-bottom: 4px;
-    display: flex;
-    align-items: center;
-    gap: 8px;
-}
-
-.plan-date {
-    font-size: 0.85rem;
-    opacity: 0.9;
-    display: flex;
-    align-items: center;
-    gap: 6px;
-}
-
-.plan-card-body {
-    padding: 20px;
-    flex: 1;
-    display: flex;
-    flex-direction: column;
-}
-
-.plan-stats {
-    display: grid;
-    grid-template-columns: 1fr 1fr;
-    gap: 12px;
-    margin-bottom: 16px;
-}
-
-.stat-box {
-    background: #f8fafc;
-    border: 1px solid #e2e8f0;
-    border-radius: 12px;
-    padding: 12px;
-    text-align: center;
-    transition: all 0.2s ease;
-}
-
-.stat-box:hover {
-    background: #f0fdf4;
-    border-color: #4ade80;
-}
-
-.stat-number {
-    font-size: 1.4rem;
-    font-weight: 700;
-    color: #16a34a;
-    display: block;
-    line-height: 1;
-}
-
-.stat-label {
-    font-size: 0.75rem;
-    color: #6b7280;
-    text-transform: uppercase;
-    font-weight: 600;
-    letter-spacing: 0.5px;
-    margin-top: 4px;
-}
-
-.meal-preview {
-    background: #f8fafc;
-    border-radius: 12px;
-    padding: 14px;
-    margin-bottom: 16px;
-    flex: 1;
-}
-
-.meal-preview h6 {
-    color: #374151;
-    font-weight: 600;
-    margin-bottom: 8px;
-    font-size: 0.85rem;
-    display: flex;
-    align-items: center;
-    gap: 6px;
-}
-
-.meal-list {
-    font-size: 0.8rem;
-    color: #6b7280;
-    line-height: 1.4;
-}
-
-.meal-list div {
-    margin-bottom: 2px;
-    overflow: hidden;
-    text-overflow: ellipsis;
-    white-space: nowrap;
-}
-
-.view-plan-btn {
-    background: #4ade80;
-    color: white;
-    text-decoration: none;
-    border: none;
-    padding: 12px 16px;
-    border-radius: 12px;
-    font-weight: 600;
-    text-align: center;
-    transition: all 0.2s ease;
-    display: flex;
-    align-items: center;
-    justify-content: center;
-    gap: 8px;
-    font-size: 0.9rem;
-    margin-top: 2rem;
-}
-
-.view-plan-btn:hover {
-    background: #22c55e;
-    color: white;
-    text-decoration: none;
-}
-
-.create-new-card {
-    background: rgba(255, 255, 255, 0.7);
-    border: 3px dashed #4ade80;
-    border-radius: 20px;
-    display: flex;
-    align-items: center;
-    justify-content: center;
-    min-height: 300px;
-    transition: all 0.3s ease;
-    cursor: pointer;
-    text-decoration: none;
-    color: #16a34a;
-}
-
-.create-new-card:hover {
-    background: rgba(255, 255, 255, 0.9);
-    border-color: #22c55e;
-    color: #15803d;
-    transform: translateY(-2px);
-    box-shadow: 0 8px 25px rgba(0, 0, 0, 0.1);
-}
-
-.create-new-content {
-    text-align: center;
-    padding: 20px;
-}
-
-.create-new-content i {
-    font-size: 3.5rem;
-    margin-bottom: 16px;
-    display: block;
-    color: #4ade80;
-}
-
-.create-new-content h4 {
-    font-weight: 700;
-    margin-bottom: 8px;
-    font-size: 1.2rem;
-}
-
-.create-new-content p {
-    margin: 0;
-    font-size: 0.9rem;
-    color: #6b7280;
-}
-
-.empty-state {
-    text-align: center;
-    padding: 60px 20px;
-    color: #374151;
-}
-
-.empty-state i {
-    font-size: 4rem;
-    margin-bottom: 24px;
-    color: #9ca3af;
-}
-
-.empty-state h3 {
-    font-size: 1.8rem;
-    font-weight: 700;
-    margin-bottom: 12px;
-    color: #2c5530;
-}
-
-.empty-state p {
-    font-size: 1rem;
-    margin-bottom: 30px;
-    color: #6b7280;
-    max-width: 500px;
-    margin-left: auto;
-    margin-right: auto;
-}
-
-.btn-create-first {
-    background: rgba(255, 255, 255, 0.9);
-    color: #16a34a;
-    border: 2px solid #4ade80;
-    padding: 16px 32px;
-    border-radius: 16px;
-    font-size: 1rem;
-    font-weight: 600;
-    transition: all 0.3s ease;
-    text-decoration: none;
-    display: inline-flex;
-    align-items: center;
-    gap: 10px;
-}
-
-.btn-create-first:hover {
-    background: #4ade80;
-    color: white;
-    border-color: #22c55e;
-    transform: translateY(-2px);
-    box-shadow: 0 8px 25px rgba(74, 222, 128, 0.3);
-}
-
-@media (max-width: 768px) {
-    .container {
-        padding: 20px 16px;
-    }
-
-    .plans-grid {
-        grid-template-columns: 1fr;
-        gap: 20px;
-    }
-
-    .header-section h1 {
-        font-size: 2.2rem;
-    }
-
-    .plan-card-header,
-    .plan-card-body {
-        padding: 16px;
-    }
-
-    .empty-state {
-        padding: 40px 16px;
-    }
-}
-
-@keyframes slideInUp {
-    from {
-        opacity: 0;
-        transform: translateY(30px);
-    }
-
-    to {
-        opacity: 1;
-        transform: translateY(0);
-    }
-}
-
-.plan-card {
-    animation: slideInUp 0.6s ease forwards;
-    opacity: 0;
-}
-
-.create-new-card {
-    animation: slideInUp 0.6s ease forwards;
-    opacity: 0;
-}
Index: triMatch/wwwroot/css/MyRecipes.css
===================================================================
--- NutriMatch/wwwroot/css/MyRecipes.css	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,364 +1,0 @@
-
-    :root {
-    --primary-green: #2ECC71;
-    --dark-green: #27AE60;
-    --light-green: #58D68D;
-    --light-green-gray: #bbcabe;
-    --dark-gray: #2C3E50;
-    --light-gray: #ECF0F1;
-    --nutri-light-gray: #f3f4f6;
-    --nutri-green-dark: #22c55e;
-    }
-
-    body {
-         font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
-        background: linear-gradient(135deg, var(--light-pink) 0%, white 50%, var(--light-green-gray) 100%);
-        margin: 0;
-        padding: 0;
-        min-height: 100vh;
-    }
-
-    .container {
-        margin: 0 auto;
-        padding: 40px 20px;
-    }
-
-    .header-section {
-        background: rgba(255, 255, 255, 0.9);
-        border-radius: 20px;
-        padding: 40px;
-        margin-bottom: 30px;
-        box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1);
-        backdrop-filter: blur(10px);
-        text-align: center;
-    }
-
-    .header-section h1 {
-        color: #2c3e50;
-        font-size: 2.5rem;
-        font-weight: 600;
-        margin: 0 0 15px 0;
-    }
-
-    .header-section p {
-        color: #7f8c8d;
-        font-size: 1.1rem;
-        margin: 0 0 30px 0;
-        line-height: 1.6;
-    }
-
-    .create-recipe-btn {
-        background: #52c96b;
-        color: white;
-        padding: 15px 30px;
-        border: none;
-        border-radius: 25px;
-        font-size: 1.1rem;
-        font-weight: 600;
-        text-decoration: none;
-        display: inline-block;
-        transition: all 0.3s ease;
-        box-shadow: 0 5px 15px rgba(82, 201, 107, 0.3);
-    }
-
-    .create-recipe-btn:hover {
-        background: #47b35f;
-        transform: translateY(-2px);
-        box-shadow: 0 8px 25px rgba(82, 201, 107, 0.4);
-        color: white;
-        text-decoration: none;
-    }
-
-    .stats-section {
-        display: grid;
-        grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
-        gap: 20px;
-        margin-bottom: 30px;
-    }
-
-    .stat-card {
-        background: rgba(255, 255, 255, 0.8);
-        border-radius: 15px;
-        padding: 25px;
-        text-align: center;
-        box-shadow: 0 5px 20px rgba(0, 0, 0, 0.08);
-        backdrop-filter: blur(5px);
-    }
-
-    .stat-number {
-        font-size: 2rem;
-        font-weight: 700;
-        color: #52c96b;
-        margin-bottom: 5px;
-    }
-
-    .stat-label {
-        color: #7f8c8d;
-        font-size: 0.9rem;
-        text-transform: uppercase;
-        letter-spacing: 1px;
-    }
-
-   .recipe-grid {
-    display: grid;
-    gap: 1.5rem;
-    margin-top: 2rem;
-    justify-items: center;
-    grid-template-columns: 1fr; 
-}
-
-
-@media (min-width: 768px) {
-    .recipe-grid {
-        grid-template-columns: repeat(2, 1fr); 
-    }
-}
-
-@media (min-width: 992px) {
-    .recipe-grid {
-        grid-template-columns: repeat(3, 1fr); 
-    }
-}
-
-.recipe-card {
-    width: 100%;
-    max-width: 417.953px;
-    height: 380px;
-    background: white;
-    border-radius: 20px;
-    overflow: hidden;
-    box-shadow: 0 8px 32px rgba(0, 0, 0, 0.1);
-    transition: transform 0.3s ease, box-shadow 0.3s ease;
-    position: relative !important;
-    cursor: pointer;
-    flex-shrink: 0;
-    box-sizing: border-box;
-}
-
-.recipe-card:hover {
-    transform: translateY(-8px);
-    box-shadow: 0 20px 40px rgba(0,0,0,0.15);
-}
-
-
-.recipe-card.loading {
-    pointer-events: none;
-}
-
-.recipe-card.loading * {
-    transition: none !important;
-    animation: none !important;
-}
-
-.recipe-image {
-    width: 100% !important;
-    height: 200px !important;
-    object-fit: cover;
-    background: linear-gradient(45deg, var(--nutri-green), var(--nutri-green-dark));
-    position: relative;
-    display: block !important;
-    flex-shrink: 0;
-    box-sizing: border-box;
-}
-
-.favorite-btn {
-    position: absolute;
-    top: 12px;
-    right: 12px;
-    background: rgba(255, 255, 255, 0.9);
-    border: none;
-    border-radius: 50%;
-    width: 40px;
-    height: 40px;
-    display: flex;
-    align-items: center;
-    justify-content: center;
-    cursor: pointer;
-    transition: all 0.3s ease;
-    z-index: 10;
-    backdrop-filter: blur(10px);
-}
-
-.favorite-btn:hover {
-    background: rgba(255, 255, 255, 1);
-    transform: scale(1.1);
-}
-
-.favorite-btn i {
-    font-size: 18px;
-    color: #ef4444;
-    transition: all 0.3s ease;
-}
-
-.favorite-btn:hover i {
-    color: #dc2626;
-}
-
-.favorite-btn.active i {
-    color: #ef4444;
-    font-weight: 900;
-}
-
-.badge {
-    position: absolute;
-    top: 5px;
-    right: 7px;
-    padding: 6px 12px;
-    font-size: 0.8rem;
-    font-weight: 600;
-    z-index: 15;
-}
-
-.recipe-content {
-    padding: 1.5rem !important;
-    height: calc(100% - 200px) !important;
-    display: flex !important;
-    flex-direction: column !important;
-    box-sizing: border-box;
-    position: relative;
-    flex-shrink: 0;
-    
-}
-
-.recipe-title {
-    font-size: 1.3rem !important;
-    font-weight: 700 !important;
-    color: #1f2937 !important;
-    margin-bottom: 0.5rem !important;
-    line-height: 1.3 !important;
-    transition: none !important;
-    animation: none !important;
-}
-
-
-.recipe-card .recipe-title,
-.recipe-card:hover .recipe-title,
-.recipe-card:active .recipe-title,
-.recipe-card:focus .recipe-title,
-.recipe-card.loading .recipe-title {
-    font-size: 1.3rem !important;
-    font-weight: 700 !important;
-    color: #1f2937 !important;
-    margin-bottom: 0.5rem !important;
-    line-height: 1.3 !important;
-    transition: none !important;
-    animation: none !important;
-}
-
-.recipe-meta {
-    display: flex;
-    align-items: center;
-    gap: 1rem;
-    margin-bottom: 1rem;
-    font-size: 0.9rem;
-    color: var(--nutri-gray);
-    flex-wrap: wrap;
-}
-
-.recipe-meta .rating {
-    color: #fbbf24;
-    font-weight: 600;
-}
-
-.recipe-meta i {
-    margin-right: 4px;
-}
-
-.recipe-macros {
-    display: grid;
-    grid-template-columns: repeat(4, 1fr);
-    gap: 0.5rem;
-    margin-top: 1px;
-    padding-top: 0.7rem;
-    border-top: 1px solid #eee;
-}
-
-.macro-item {
-    text-align: center;
-    padding: 0.5rem;
-    background: var(--nutri-light-gray);
-    border-radius: 10px;
-}
-
-.macro-value {
-    font-weight: 700;
-    color: var(--nutri-green-dark);
-    font-size: 1rem;
-    line-height: 1.2;
-}
-
-.macro-label {
-    font-size: 0.8rem;
-    color: var(--nutri-gray);
-    text-transform: uppercase;
-    font-weight: 600;
-    line-height: 1;
-}
-
-    .empty-state {
-        text-align: center;
-        padding: 60px 20px;
-        background: rgba(255, 255, 255, 0.8);
-        border-radius: 20px;
-        backdrop-filter: blur(10px);
-    }
-
-    .empty-icon {
-        font-size: 4rem;
-        color: #bdc3c7;
-        margin-bottom: 20px;
-    }
-
-    .empty-title {
-        font-size: 1.5rem;
-        color: #7f8c8d;
-        margin-bottom: 10px;
-    }
-
-    .empty-text {
-        color: #95a5a6;
-        margin-bottom: 30px;
-    }
-
-    .nutrition-tags {
-        display: flex;
-        flex-wrap: wrap;
-        gap: 8px;
-        margin-top: 15px;
-    }
-
-    .nutrition-tag {
-        background: rgba(82, 201, 107, 0.1);
-        color: #52c96b;
-        padding: 4px 12px;
-        border-radius: 12px;
-        font-size: 0.8rem;
-        font-weight: 500;
-    }
-
-
-
-    #modalWindow {
-    position: fixed;
-    top: 0;
-    left: 0;
-    z-index: 9999;
-    pointer-events: none;
-}
-
-#modalWindow .modal {
-    pointer-events: all;
-}
-
-
-
-
-.recipe-card h3.recipe-title {
-    font-size: 1.3rem !important;
-    font-weight: 700 !important;
-    color: #1f2937 !important;
-    margin-bottom: 0.5rem !important;
-    line-height: 1.3 !important;
-}
-
-
Index: triMatch/wwwroot/css/Notifications.css
===================================================================
--- NutriMatch/wwwroot/css/Notifications.css	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,295 +1,0 @@
-#notification-bell {
-    position: fixed;
-    bottom: 20px;
-    right: 20px;
-    z-index: 1000;
-}
-
-.notification-icon {
-    background: #4CAF50;
-    width: 60px;
-    height: 60px;
-    border-radius: 50%;
-    display: flex;
-    align-items: center;
-    justify-content: center;
-    cursor: pointer;
-    box-shadow: 0 4px 8px rgba(0,0,0,0.3);
-    transition: all 0.3s ease;
-    position: relative;
-}
-
-.notification-icon:hover {
-    transform: scale(1.1);
-    box-shadow: 0 6px 12px rgba(0,0,0,0.4);
-}
-
-.notification-icon i {
-    color: white;
-    font-size: 24px;
-}
-
-.notification-badge {
-    position: absolute;
-    top: -5px;
-    right: -5px;
-    background: #f44336 ;
-    color: white;
-    border-radius: 50%;
-    width: 24px;
-    height: 24px;
-    display: flex;
-    align-items: center;
-    justify-content: center;
-    font-size: 12px;
-    font-weight: bold;
-}
-
-.notification-badge.hidden {
-    display: none;
-}
-
-.notification-panel {
-    position: absolute;
-    bottom: 70px;
-    right: 0;
-    width: 350px;
-    max-height: 500px;
-    background: white;
-    border-radius: 8px;
-    box-shadow: 0 4px 12px rgba(0,0,0,0.3);
-    display: none;
-    flex-direction: column;
-}
-
-.notification-panel.show {
-    display: flex;
-}
-
-.notification-header {
-    padding: 15px;
-    border-bottom: 1px solid #eee;
-    display: flex;
-    justify-content: space-between;
-    align-items: center;
-}
-
-.notification-header h4 {
-    margin: 0;
-    font-size: 18px;
-}
-
-.notification-list {
-    overflow-y: auto;
-    max-height: 400px;
-}
-
-.notification-item {
-    padding: 15px;
-    border-bottom: 1px solid #f0f0f0;
-    cursor: pointer;
-    transition: background 0.2s;
-}
-
-.notification-item:hover {
-    background: #f9f9f9;
-}
-
-.notification-item.unread {
-    background: #e3f2fd;
-}
-
-.notification-item .notification-message {
-    font-size: 14px;
-    margin-bottom: 5px;
-    color: #333;
-}
-
-.notification-item .notification-time {
-    font-size: 12px;
-    color: #999;
-}
-
-.btn-link {
-    background: none;
-    border: none;
-    color: #4CAF50;
-    cursor: pointer;
-    font-size: 14px;
-}
-
-.btn-link:hover {
-    text-decoration: underline;
-}
-
-
-
-.notification-item {
-    display: flex;
-    align-items: flex-start;
-    padding: 15px;
-    border-bottom: 1px solid #f0f0f0;
-    cursor: pointer;
-    transition: background 0.2s;
-}
-
-.notification-item:last-child {
-    border-bottom: none;
-}
-
-.notification-item:hover {
-    background: #f9f9f9;
-}
-
-.notification-item.unread {
-    background: #e3f2fd;
-}
-
-.notification-item.unread:hover {
-    background: #d1e7fd;
-}
-
-.notification-icon-wrapper {
-    flex-shrink: 0;
-    margin-right: 12px;
-    margin-top: 2px;
-}
-
-.notification-type-icon {
-    font-size: 20px;
-}
-
-.notification-content {
-    flex: 1;
-}
-
-.notification-message {
-    font-size: 14px;
-    margin-bottom: 5px;
-    color: #333;
-    line-height: 1.4;
-}
-
-.notification-time {
-    font-size: 12px;
-    color: #999;
-}
-
-.no-notifications {
-    text-align: center;
-    padding: 40px 20px;
-    color: #999;
-    display: flex;
-    flex-direction: column;
-    align-items: center;
-    cursor: default;
-}
-
-.no-notifications:hover {
-    background: white;
-}
-
-.no-notifications i {
-    font-size: 48px;
-    margin-bottom: 15px;
-    opacity: 0.5;
-}
-
-.no-notifications p {
-    margin: 0;
-    font-size: 14px;
-}
-
-.notification-error {
-    padding: 20px;
-    text-align: center;
-    color: #f44336;
-}
-
-#notification-panel-content {
-    display: flex;
-    flex-direction: column;
-    height: 100%;
-}
-
-.notification-item {
-    display: flex;
-    align-items: flex-start;
-    padding: 15px;
-    border-bottom: 1px solid #f0f0f0;
-    cursor: pointer;
-    transition: background 0.2s;
-    position: relative;
-}
-
-.notification-delete-btn {
-    position: absolute;
-    right: 10px;
-    top: 50%;
-    transform: translateY(-50%);
-    background: none;
-    border: none;
-    color: #999;
-    cursor: pointer;
-    padding: 5px 8px;
-    border-radius: 4px;
-    opacity: 0;
-    transition: all 0.2s ease;
-    font-size: 16px;
-}
-
-.notification-item:hover .notification-delete-btn {
-    opacity: 1;
-}
-
-
-.notification-item {
-    transition: all 0.3s ease;
-}
-
-.notification-delete-btn {
-    position: absolute;
-    right: 10px;
-    top: 50%;
-    transform: translateY(-50%);
-    background: none;
-    border: none;
-    color: #ccc;
-    cursor: pointer;
-    padding: 5px 8px;
-    opacity: 0;
-    transition: all 0.2s ease;
-    font-size: 14px;
-    font-weight: normal;
-}
-
-.notification-item:hover .notification-delete-btn {
-    opacity: 1;
-}
-
-.notification-delete-btn:hover {
-    color: #f44336;
-    font-weight: bold;
-    transform: translateY(-50%) scale(1.2);
-}
-
-.notification-delete-btn i {
-    pointer-events: none;
-    transition: all 0.2s ease;
-}
-
-
-.text-danger {
-    color: #dc3545 !important;
-}
-
-.text-danger:hover {
-    color: #c82333 !important;
-    background-color: rgba(220, 53, 69, 0.1);
-}
-
-.notification-actions {
-    display: flex;
-    align-items: center;
-    gap: 0.75rem;
-}
Index: triMatch/wwwroot/css/RecipeCreate.css
===================================================================
--- NutriMatch/wwwroot/css/RecipeCreate.css	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,646 +1,0 @@
-* {
-    margin: 0;
-    padding: 0;
-    box-sizing: border-box;
-}
-
-
-body {
-  font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
-    background: #fafbfc;
-    color: #1a1a1a;
-    line-height: 1.6;
-}
-
-.main-container {
-    max-width: 1200px;
-    margin: 0 auto;
-    padding: 2rem;
-}
-
-.page-header {
-    margin-bottom: 2.5rem;
-}
-
-.page-title {
-    font-size: 2.5rem;
-    font-weight: 700;
-    color: #1a1a1a;
-    margin-bottom: 0.5rem;
-    letter-spacing: -0.02em;
-}
-
-.page-subtitle {
-    font-size: 1.125rem;
-    color: #6b7280;
-    font-weight: 400;
-}
-
-.form-card {
-    background: white;
-    border-radius: 16px;
-    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
-    border: 1px solid #e5e7eb;
-    overflow: hidden;
-}
-
-.highlighted {
-    background: #bcbcbd;
-    
-}
-
-.form-content {
-    padding: 2.5rem;
-}
-
-.form-group {
-    margin-bottom: 2rem;
-}
-
-.form-group:last-child {
-    margin-bottom: 0;
-}
-
-.label {
-    display: block;
-    font-size: 0.875rem;
-    font-weight: 600;
-    color: #374151;
-    margin-bottom: 0.5rem;
-    text-transform: uppercase;
-    letter-spacing: 0.05em;
-}
-
-.input {
-    width: 100%;
-    padding: 0.875rem 1rem;
-    border: 1px solid #d1d5db;
-    border-radius: 8px;
-    font-size: 1rem;
-    background: white;
-    transition: all 0.2s ease;
-    font-family: inherit;
-}
-
-.input:focus {
-    outline: none;
-    border-color: #10b981;
-    box-shadow: 0 0 0 3px rgba(16, 185, 129, 0.1);
-}
-
-.input::placeholder {
-    color: #9ca3af;
-}
-
-.textarea {
-    min-height: 120px;
-    resize: vertical;
-    font-family: inherit;
-}
-
-.flex-row {
-    display: flex;
-    gap: 1rem;
-    align-items: flex-end;
-}
-
-.flex-1 { flex: 1; }
-.flex-2 { flex: 2; }
-
-.btn {
-    display: inline-flex;
-    align-items: center;
-    justify-content: center;
-    padding: 0.875rem 1.5rem;
-    border-radius: 8px;
-    font-size: 0.875rem;
-    font-weight: 600;
-    text-decoration: none;
-    border: none;
-    cursor: pointer;
-    transition: all 0.2s ease;
-    font-family: inherit;
-    white-space: nowrap;
-}
-
-.btn-primary {
-    background: #10b981;
-    color: white;
-}
-
-.btn-primary:hover {
-    background: #059669;
-    transform: translateY(-1px);
-}
-
-.btn-secondary {
-    background: #f3f4f6;
-    color: #6b7280;
-    border: 1px solid #d1d5db;
-}
-
-.btn-secondary:hover {
-    background: #e5e7eb;
-    color: #374151;
-}
-
-.btn-large {
-    padding: 1rem 2rem;
-    font-size: 1rem;
-}
-
-.items-container {
-    margin-top: 1rem;
-    border: 1px solid #e5e7eb;
-    border-radius: 8px;
-    background: #f9fafb;
-    min-height: 120px;
-    
-}
-
-
-.items-empty {
-    display: flex;
-    align-items: center;
-    justify-content: center;
-    height: 120px;
-    color: #9ca3af;
-    font-size: 0.875rem;
-}
-
-.item {
-    display: flex;
-    align-items: center;
-    justify-content: space-between;
-    padding: 0.875rem 1rem;
-    background: white;
-    border-bottom: 1px solid #e5e7eb;
-    transition: background-color 0.2s ease;
-}
-
-.item:last-child {
-    border-bottom: none;
-}
-
-.item:hover {
-    background: #f9fafb;
-}
-
-.item-content {
-    flex: 1;
-    font-size: 0.875rem;
-    color: #374151;
-}
-
-.item-remove {
-    width: 32px;
-    height: 32px;
-    border-radius: 50%;
-    background: #fef2f2;
-    border: 1px solid #fecaca;
-    color: #dc2626;
-    display: flex;
-    align-items: center;
-    justify-content: center;
-    cursor: pointer;
-    transition: all 0.2s ease;
-    font-size: 0.75rem;
-}
-
-.item-remove:hover {
-    background: #fee2e2;
-    transform: scale(1.05);
-}
-
-.search-container {
-    position: relative;
-}
-
-.dropdown {
-    position: absolute;
-    top: 100%;
-    left: 0;
-    right: 0;
-    background: white;
-    border: 1px solid #d1d5db;
-    border-top: none;
-    border-radius: 0 0 8px 8px;
-    max-height: 200px;
-    overflow-y: auto;
-    z-index: 100;
-    box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
-    display: none;
-}
-
-.dropdown.show {
-    display: block;
-}
-
-.dropdown-item {
-    padding: 0.75rem 1rem;
-    cursor: pointer;
-    border-bottom: 1px solid #f3f4f6;
-    font-size: 0.875rem;
-    color: #374151;
-    transition: background-color 0.2s ease;
-}
-
-.dropdown-item:hover {
-    background: #f9fafb;
-}
-
-.dropdown-item:last-child {
-    border-bottom: none;
-}
-
-.file-upload-area {
-    border: 2px dashed #d1d5db;
-    border-radius: 8px;
-    padding: 2rem;
-    text-align: center;
-    cursor: pointer;
-    transition: all 0.2s ease;
-    background: #fafbfc;
-    position: relative;
-}
-
-.file-upload-area:hover {
-    border-color: #10b981;
-    background: #f0fdf4;
-}
-
-.file-upload-area.dragover {
-    border-color: #10b981;
-    background: #f0fdf4;
-}
-
-.file-upload-icon {
-    width: 48px;
-    height: 48px;
-    margin: 0 auto 1rem;
-    background: #f3f4f6;
-    border-radius: 50%;
-    display: flex;
-    align-items: center;
-    justify-content: center;
-    font-size: 1.5rem;
-    color: #6b7280;
-}
-
-.file-upload-text {
-    font-size: 0.875rem;
-    color: #6b7280;
-    margin-bottom: 0.5rem;
-}
-
-.file-upload-hint {
-    font-size: 0.75rem;
-    color: #9ca3af;
-}
-
-.file-input {
-    position: absolute;
-    inset: 0;
-    opacity: 0;
-    cursor: pointer;
-}
-
-.form-actions {
-    margin-top: 2.5rem;
-    padding-top: 2rem;
-    border-top: 1px solid #e5e7eb;
-    display: flex;
-    gap: 1rem;
-    justify-content: flex-end;
-}
-
-.back-link {
-    display: inline-flex;
-    align-items: center;
-    gap: 0.5rem;
-    color: #6b7280;
-    text-decoration: none;
-    font-size: 0.875rem;
-    font-weight: 500;
-    transition: color 0.2s ease;
-    margin-top: 1rem;
-}
-
-.back-link:hover {
-    color: #10b981;
-}
-
-.validation-error {
-    color: #dc2626;
-    font-size: 0.75rem;
-    margin-top: 0.25rem;
-}
-
-@media (max-width: 768px) {
-    .main-container {
-        padding: 1rem;
-    }
-
-    .form-content {
-        padding: 1.5rem;
-    }
-
-    .page-title {
-        font-size: 2rem;
-    }
-
-    .flex-row {
-        flex-direction: column;
-        align-items: stretch;
-    }
-
-    .form-actions {
-        flex-direction: column-reverse;
-    }
-
-    .btn {
-        width: 100%;
-        justify-content: center;
-    }
-}
-
-.item {
-    animation: slideIn 0.3s ease;
-}
-
-@keyframes slideIn {
-    from {
-        opacity: 0;
-        transform: translateY(-10px);
-    }
-    to {
-        opacity: 1;
-        transform: translateY(0);
-    }
-}
-
-.dropdown::-webkit-scrollbar {
-    width: 4px;
-}
-
-.dropdown::-webkit-scrollbar-track {
-    background: #f1f1f1;
-}
-
-.dropdown::-webkit-scrollbar-thumb {
-    background: #c1c1c1;
-    border-radius: 2px;
-}
-
-.btn:focus,
-.input:focus {
-    outline: 2px solid #10b981;
-    outline-offset: 2px;
-}
-
-.ingredient-tag {
-    display: inline-block;
-     background-color: #e3f2fd; 
-     padding: 5px 10px;
-     margin: 2px;
-    border-radius: 15px; 
-    font-size: 14px;
-}
-
-.instruction-item{
-    display: flex; 
-    flex-wrap: wrap; 
-    align-items: flex-start; 
-    background-color: #f8f9fa; 
-    padding: 10px; margin: 5px 0; 
-    border-radius: 8px; 
-    border-left: 4px solid #10b981;
-}
-
-.instruction-number{
-    background-color: #10b981; 
-    color: white; 
-    border-radius: 50%; 
-    width: 24px; height: 24px; 
-    display: flex; 
-    align-items: center; 
-    justify-content: center; 
-    font-size: 12px; 
-    font-weight: bold; 
-    margin-right: 10px; 
-    flex-shrink: 0
-}
-
-
-.instruction-text{
-    flex: 1; 
-    min-width: 0; 
-    word-wrap: break-word; 
-    overflow-wrap: break-word; 
-    line-height: 1.4;
-}
-
-.remove {
-    cursor: pointer; 
-    margin-left: 8px; 
-    color: #dc3545;
-    font-weight: bold;
-}
-
-#image-preview {
-    max-width: 300px; 
-    max-height: 200px; 
-    border-radius: 10px; 
-    box-shadow: 0 4px 8px rgba(0,0,0,0.1);
-}
-
-
-.add-new-ingredient-btn {
-    
-    background-color: #10b981;
-    color: white;
-    border: none;
-    border-radius: 4px;
-    cursor: pointer;
-    font-size: 14px;
-    transition: background-color 0.2s;
-}
-
-.add-new-ingredient-btn:hover {
-    background-color: rgb(24, 99, 40);
-}
-
-.search-container {
-    position: relative;
-}
-
-
-
-
-.modal {
-    display: none;
-    position: fixed;
-    z-index: 1000;
-    left: 0;
-    top: 0;
-    width: 100%;
-    height: 100%;
-    background-color: rgba(0, 0, 0, 0.5);
-    backdrop-filter: blur(2px);
-    align-items: center;
-    justify-content: center;
-    animation: fadeIn 0.3s ease;
-}
-
-.modal.show {
-    display: flex;
-}
-
-.modal-content {
-    background: white;
-    border-radius: 16px;
-    box-shadow: 0 20px 40px rgba(0, 0, 0, 0.2);
-    width: 90%;
-    max-width: 500px;
-    max-height: 90vh;
-    overflow-y: auto;
-    animation: slideUp 0.3s ease;
-    position: relative;
-}
-
-.modal-header {
-    display: flex;
-    justify-content: space-between;
-    align-items: center;
-    padding: 1.5rem 2rem;
-    border-bottom: 1px solid #e5e7eb;
-    background: #f9fafb;
-    border-radius: 16px 16px 0 0;
-}
-
-.modal-header h3 {
-    margin: 0;
-    font-size: 1.25rem;
-    font-weight: 600;
-    color: #1a1a1a;
-}
-
-.close {
-    font-size: 24px;
-    font-weight: bold;
-    color: #6b7280;
-    cursor: pointer;
-    transition: color 0.2s ease;
-    line-height: 1;
-    background: none;
-    border: none;
-    padding: 0;
-    width: 30px;
-    height: 30px;
-    display: flex;
-    align-items: center;
-    justify-content: center;
-    border-radius: 50%;
-}
-
-.close:hover {
-    color: #dc2626;
-    background: #fef2f2;
-}
-
-.modal-body {
-    padding: 2rem;
-}
-
-.modal .form-group {
-    margin-bottom: 1.5rem;
-}
-
-.modal .form-group:last-child {
-    margin-bottom: 0;
-}
-
-.modal .form-actions {
-    margin-top: 2rem;
-    padding-top: 1.5rem;
-    border-top: 1px solid #e5e7eb;
-    display: flex;
-    gap: 1rem;
-    justify-content: flex-end;
-}
-
-@keyframes fadeIn {
-    from {
-        opacity: 0;
-    }
-    to {
-        opacity: 1;
-    }
-}
-
-@keyframes slideUp {
-    from {
-        opacity: 0;
-        transform: translateY(30px) scale(0.95);
-    }
-    to {
-        opacity: 1;
-        transform: translateY(0) scale(1);
-    }
-}
-
-
-@media (max-width: 768px) {
-    .modal-content {
-        width: 95%;
-        margin: 1rem;
-    }
-    
-    .modal-header {
-        padding: 1rem 1.5rem;
-    }
-    
-    .modal-body {
-        padding: 1.5rem;
-    }
-    
-    .modal .form-actions {
-        flex-direction: column-reverse;
-    }
-    
-    .modal .btn {
-        width: 100%;
-        justify-content: center;
-    }
-}
-
-
-.modal .btn:disabled {
-    opacity: 0.6;
-    cursor: not-allowed;
-}
-
-.modal .btn.loading {
-    position: relative;
-    color: transparent;
-}
-
-.modal .btn.loading::after {
-    content: '';
-    position: absolute;
-    width: 16px;
-    height: 16px;
-    top: 50%;
-    left: 50%;
-    margin-left: -8px;
-    margin-top: -8px;
-    border: 2px solid transparent;
-    border-top: 2px solid currentColor;
-    border-radius: 50%;
-    animation: spin 1s linear infinite;
-}
-
-@keyframes spin {
-    0% { transform: rotate(0deg); }
-    100% { transform: rotate(360deg); }
-}
Index: triMatch/wwwroot/css/RecipeIndex.css
===================================================================
--- NutriMatch/wwwroot/css/RecipeIndex.css	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,561 +1,0 @@
-:root {
-            --nutri-green: #4ade80;
-            --nutri-green-dark: #22c55e;
-            --nutri-gray: #6b7280;
-            --nutri-light-gray: #f3f4f6;
-}
-
-body {
-    font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
-    background: linear-gradient(135deg, var(--light-pink) 0%, white 50%, var(--light-gray) 100%); 
-    padding-top: 5%;
-}
-
-.search-container {
-    background: white;
-    border-radius: 20px;
-    box-shadow: 0 8px 32px rgba(0,0,0,0.1);
-    padding: 2rem;
-    margin: 2rem 0;
-    
-}
-
-.search-input {
-    border: 2px solid #e5e7eb;
-    border-radius: 50px;
-    padding: 1rem 1.5rem;
-    font-size: 1.1rem;
-    transition: all 0.3s ease;
-}
-
-.search-input:focus {
-    border-color: var(--nutri-green);
-    box-shadow: 0 0 0 0.2rem rgba(74, 222, 128, 0.25);
-}
-
-.search-btn {
-    background: var(--nutri-green);
-    border: none;
-    border-radius: 50px;
-    padding: 1rem 2rem;
-    color: white;
-    font-weight: 600;
-    transition: all 0.3s ease;
-}
-
-.search-btn:hover {
-    background: var(--nutri-green-dark);
-    transform: translateY(-2px);
-    box-shadow: 0 8px 25px rgba(74, 222, 128, 0.3);
-}
-
-.filter-section {
-    background: white;
-    border-radius: 20px;
-    box-shadow: 0 8px 32px rgba(0,0,0,0.1);
-    padding: 2rem;
-    margin-bottom: 2rem;
-}
-
-.slider-container {
-    margin: 1.5rem 0;
-}
-
-.slider-label {
-    font-weight: 600;
-    color: #374151;
-    margin-bottom: 1rem;
-    display: flex;
-    justify-content: space-between;
-    align-items: center;
-}
-
-.range-slider {
-    position: relative;
-    height: 6px;
-    background: #e5e7eb;
-    border-radius: 3px;
-    margin: 1rem 0;
-}
-
-.range-input {
-    position: absolute;
-    width: 100%;
-    height: 6px;
-    top: 0;
-    background: none;
-    pointer-events: none;
-    -webkit-appearance: none;
-    -moz-appearance: none;
-}
-
-.range-input::-webkit-slider-thumb {
-    height: 20px;
-    width: 20px;
-    border-radius: 50%;
-    background: var(--nutri-green);
-    cursor: pointer;
-    border: 2px solid white;
-    box-shadow: 0 2px 8px rgba(0,0,0,0.2);
-    -webkit-appearance: none;
-    pointer-events: all;
-    position: relative;
-    z-index: 2;
-}
-
-.range-input::-moz-range-thumb {
-    height: 20px;
-    width: 20px;
-    border-radius: 50%;
-    background: var(--nutri-green) !important;
-    cursor: pointer;
-    border: 2px solid white;
-    box-shadow: 0 2px 8px rgba(0,0,0,0.2);
-    pointer-events: all;
-    position: relative;
-    z-index: 2;
-}
-
-.range-fill {
-    position: absolute;
-    height: 6px;
-    background: var(--nutri-green) !important;
-    border-radius: 3px;
-    top: 0;
-    width: 100%;
-}
-
-.recipe-grid {
-    display: grid;
-    gap: 1rem;
-    margin-top: 2rem;
-    justify-items: center;
-    grid-template-columns: 1fr; 
-}
-
-@media (min-width: 768px) {
-    .recipe-grid {
-        grid-template-columns: repeat(2, 1fr); 
-    }
-}
-
-@media (min-width: 992px) {
-    .recipe-grid {
-        grid-template-columns: repeat(3, 1fr); 
-    }
-}
-
-.recipe-card {
-    width: 100%;
-    max-width: 417.953px;
-    height: 380px;
-    background: white;
-    border-radius: 20px;
-    overflow: hidden;
-    box-shadow: 0 8px 32px rgba(0, 0, 0, 0.1);
-    transition: transform 0.3s ease, box-shadow 0.3s ease;
-    position: relative;
-    cursor: pointer;
-    flex-shrink: 0;
-    box-sizing: border-box;
-}
-
-.recipe-card:hover {
-    transform: translateY(-8px);
-    box-shadow: 0 20px 40px rgba(0,0,0,0.15);
-}
-
-
-.recipe-card.loading {
-    pointer-events: none;
-}
-
-.recipe-card.loading * {
-    transition: none !important;
-    animation: none !important;
-}
-
-.recipe-image {
-    width: 100% !important;
-    height: 200px !important;
-    object-fit: cover;
-    background: linear-gradient(45deg, var(--nutri-green), var(--nutri-green-dark));
-    position: relative;
-    display: block !important;
-    flex-shrink: 0;
-    box-sizing: border-box;
-}
-
-.favorite-btn {
-    position: absolute;
-    top: 12px;
-    right: 12px;
-    background: rgba(255, 255, 255, 0.9);
-    border: none;
-    border-radius: 50%;
-    width: 40px;
-    height: 40px;
-    display: flex;
-    align-items: center;
-    justify-content: center;
-    cursor: pointer;
-    transition: all 0.3s ease;
-    z-index: 10;
-    backdrop-filter: blur(10px);
-}
-
-.favorite-btn:hover {
-    background: rgba(255, 255, 255, 1);
-    transform: scale(1.1);
-}
-
-.favorite-btn i {
-    font-size: 18px;
-    color: #ef4444;
-    transition: all 0.3s ease;
-}
-
-.favorite-btn:hover i {
-    color: #dc2626;
-}
-
-.favorite-btn.active i {
-    color: #ef4444;
-    font-weight: 900;
-}
-
-.recipe-content {
-    padding: 1.5rem !important;
-    height: calc(100% - 200px) !important;
-    display: flex !important;
-    flex-direction: column !important;
-    box-sizing: border-box;
-    position: relative;
-    flex-shrink: 0;
-    
-}
-
-.recipe-title {
-    font-size: 1.3rem !important;
-    font-weight: 700 !important;
-    color: #1f2937 !important;
-    margin-bottom: 0.5rem !important;
-    line-height: 1.3 !important;
-    transition: none !important;
-    animation: none !important;
-}
-
-
-.recipe-card .recipe-title,
-.recipe-card:hover .recipe-title,
-.recipe-card:active .recipe-title,
-.recipe-card:focus .recipe-title,
-.recipe-card.loading .recipe-title {
-    font-size: 1.3rem !important;
-    font-weight: 700 !important;
-    color: #1f2937 !important;
-    margin-bottom: 0.5rem !important;
-    line-height: 1.3 !important;
-    transition: none !important;
-    animation: none !important;
-}
-
-.recipe-meta {
-    display: flex;
-    align-items: center;
-    gap: 1rem;
-    margin-bottom: 1rem;
-    font-size: 0.9rem;
-    color: var(--nutri-gray);
-    flex-wrap: wrap;
-}
-
-.recipe-meta .rating {
-    color: #fbbf24;
-    font-weight: 600;
-}
-
-.recipe-meta i {
-    margin-right: 4px;
-}
-
-.recipe-macros {
-    display: grid;
-    grid-template-columns: repeat(4, 1fr);
-    gap: 0.5rem;
-    margin-top: 1px;
-    padding-top: 0.7rem;
-    border-top: 1px solid #eee;
-}
-
-.macro-item {
-    text-align: center;
-    padding: 0.5rem;
-    background: var(--nutri-light-gray);
-    border-radius: 10px;
-}
-
-.macro-value {
-    font-weight: 700;
-    color: var(--nutri-green-dark);
-    font-size: 1rem;
-    line-height: 1.2;
-}
-
-.macro-label {
-    font-size: 0.8rem;
-    color: var(--nutri-gray);
-    text-transform: uppercase;
-    font-weight: 600;
-    line-height: 1;
-}
-
-.results-count {
-    margin: 1rem 0;
-    font-size: 1.1rem;
-    color: var(--nutri-gray);
-    font-weight: 600;
-}
-
-
-#modalWindow {
-    position: fixed;
-    top: 0;
-    left: 0;
-    z-index: 9999;
-    pointer-events: none;
-}
-
-#modalWindow .modal {
-    pointer-events: all;
-}
-
-.recipe-card * {
-    box-sizing: border-box;
-}
-
-
-.recipe-card[style*="none"] {
-    display: none !important;
-}
-
-.recipe-card[style*="block"] {
-    display: block !important;
-}
-
-
-.recipe-card h3.recipe-title {
-    font-size: 1.3rem !important;
-    font-weight: 700 !important;
-    color: #1f2937 !important;
-    margin-bottom: 0.5rem !important;
-    line-height: 1.3 !important;
-}
-
-
-
-.favorite-btn {
-    position: absolute;
-    top: 10px;
-    right: 10px;
-    background: rgba(255, 255, 255, 0.9);
-    border: none;
-    border-radius: 50%;
-    width: 40px;
-    height: 40px;
-    display: flex;
-    align-items: center;
-    justify-content: center;
-    cursor: pointer;
-    transition: all 0.3s ease;
-    z-index: 2;
-    backdrop-filter: blur(10px);
-}
-
-.favorite-btn:hover {
-    background: rgba(255, 255, 255, 1);
-    transform: scale(1.1);
-    box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2);
-}
-
-.favorite-btn i {
-    font-size: 18px;
-    transition: all 0.3s ease;
-}
-
-.favorite-btn i.far {
-    color: #6b7280;
-}
-
-.favorite-btn i.fas {
-    color: #ef4444;
-    animation: heartBeat 0.6s ease;
-}
-
-.favorite-btn:hover i.far {
-    color: #ef4444;
-}
-
-@keyframes heartBeat {
-    0% { transform: scale(1); }
-    25% { transform: scale(1.2); }
-    50% { transform: scale(1); }
-    75% { transform: scale(1.1); }
-    100% { transform: scale(1); }
-}
-
-
-.recipe-card {
-    position: relative;
-}
-
-.tag-selection {
-            display: grid;
-            grid-template-columns: repeat(2, 1fr);
-            gap: 12px;
-        }
-
-        .tag-item-wrapper {
-            display: flex;
-            flex-direction: column;
-            background: #f8f9fa;
-            border-radius: 8px;
-            overflow: hidden;
-            transition: all 0.3s ease;
-            align-self: start;
-        }
-
-        .tag-item {
-            display: flex;
-            align-items: center;
-            justify-content: space-between;
-            padding: 12px;
-            cursor: pointer;
-            transition: all 0.2s;
-            position: relative;
-        }
-
-        .tag-item:hover {
-            background: #e9ecef;
-        }
-
-        .tag-item input[type="checkbox"] {
-            display: none;
-        }
-
-        .tag-item label {
-            cursor: pointer;
-            margin: 0;
-            font-weight: 500;
-            flex-grow: 1;
-        }
-
-        .tag-item input[type="checkbox"]:checked + label {
-            color: #31cf6b;
-        }
-
-        .tag-item input[type="checkbox"]:checked ~ label::before {
-            content: '✓ ';
-            margin-right: 4px;
-        }
-
-        .expand-icon {
-            font-size: 0.8rem;
-            color: #6c757d;
-            transition: transform 0.3s ease;
-            margin-left: 8px;
-        }
-
-        .tag-item.expanded .expand-icon {
-            transform: rotate(180deg);
-        }
-
-        .tag-threshold {
-            max-height: 0;
-            overflow: hidden;
-            padding: 0 12px;
-            transition: all 0.3s ease;
-            background: white;
-            border-top: 1px solid transparent;
-        }
-
-        .tag-threshold.show {
-            max-height: 100px;
-            padding: 12px;
-            border-top-color: #e9ecef;
-        }
-
-        .tag-threshold label {
-            display: block;
-            margin-bottom: 6px;
-            font-weight: 500;
-        }
-
-        .tag-threshold input[type="number"] {
-            width: 100%;
-        }
-
-        .modal-dialog.modal-lg {
-            max-width: 700px;
-        }
-
-        .tag-item-wrapper:has(#tag-balanced) .tag-item {
-            cursor: default;
-        }
-
-        .tag-item-wrapper:has(#tag-balanced) .expand-icon {
-            display: none;
-        }
-
-        .tag-selection {
-            display: grid;
-            grid-template-columns: repeat(2, 1fr);
-            gap: 12px;
-        }
-
-        .tag-item {
-            display: flex;
-            align-items: center;
-            padding: 12px;
-            background: #f8f9fa;
-            border-radius: 8px;
-            cursor: pointer;
-            transition: all 0.2s;
-        }
-
-        .tag-item:hover {
-            background: #e9ecef;
-        }
-
-        .tag-item input[type="checkbox"] {
-            display: none;
-        }
-
-        .tag-item label {
-            cursor: pointer;
-            margin: 0;
-            width: 100%;
-            font-weight: 500;
-        }
-
-        .tag-item input[type="checkbox"]:checked + label {
-            color: #31cf6b;
-        }
-
-        .tag-item input[type="checkbox"]:checked ~ label::before {
-            content: '✓ ';
-            margin-right: 4px;
-        }
-
-        .modal-header-preferences {
-            background: linear-gradient(135deg, #4ade80, #22c55e);
-            color: white;
-            border-radius: 20px 20px 0 0;
-            border: none;
-        }
-
-        .modal-content-preferences {
-            border-radius: 20px;
-            border: none;
-            box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);
-        }
Index: triMatch/wwwroot/css/RestaurantIndex.css
===================================================================
--- NutriMatch/wwwroot/css/RestaurantIndex.css	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,421 +1,0 @@
-    :root {
-            --nutri-green: #4ade80;
-            --nutri-dark-green: #22c55e;
-            --nutri-light-blue: #e0f2fe;
-            --nutri-gray: #64748b;
-        }
-        
-        body {
-            font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
-            background: linear-gradient(135deg, var(--light-pink) 0%, white 50%, var(--light-gray) 100%);
-            padding-top: 5%;
-        }
-    
-        .page-header {
-            background: white;
-            border-radius: 20px;
-            box-shadow: 0 4px 20px rgba(0,0,0,0.1);
-            margin: 2rem 0;
-            padding: 2rem;
-        }
-        
-        .restaurant-card {
-            background: white;
-            border-radius: 20px;
-            padding: 1.5rem;
-            box-shadow: 0 10px 30px rgba(0,0,0,0.1);
-            transition: all 0.3s ease;
-            min-width: 200px;
-            text-align: center;
-            cursor: pointer;
-            height: 100%;
-            position: relative;
-
-        }
-        
-        .restaurant-card:hover {
-            transform: translateY(-5px);
-            box-shadow: 0 8px 30px rgba(0,0,0,0.15);
-        }
-        
-        .restaurant-info {
-            padding: 1.5rem;
-            height: 70%;
-        }
-        
-        .modal-content {
-            border-radius: 20px;
-            border: none;
-            box-shadow: 0 20px 60px rgba(0,0,0,0.3);
-        }
-        
-        .modal-header {
-            background: linear-gradient(135deg, var(--nutri-green), var(--nutri-dark-green));
-            color: white;
-            border-radius: 20px 20px 0 0;
-            border: none;
-        }
-        
-        .menu-item {
-            background: #f8fafc;
-            border-radius: 8px;
-            margin-bottom: 0.75rem;
-            transition: all 0.3s ease;
-            border: 2px solid transparent;
-            
-            
-        }
-
-        
-        .menu-item:hover {
-            border-color: var(--nutri-green);
-            transform: translateX(3px);
-        }
-        
-        .menu-item-header {
-            padding: 0.75rem;
-            cursor: pointer;
-        }
-        
-        .menu-item-details {
-            background: white;
-            border-radius: 0 0 8px 8px;
-            padding: 0.75rem;
-            border-top: 1px solid #e2e8f0;
-        }
-        
-        .macro-badge {
-            background: var(--nutri-light-blue);
-            color: var(--nutri-gray);
-            padding: 0.25rem 0.75rem;
-            border-radius: 20px;
-            font-size: 0.875rem;
-            font-weight: 600;
-            margin: 0.25rem;
-            display: inline-block;
-        }
-        
-        .macro-badge.calories { background: #fee2e2; color: #dc2626; }
-        .macro-badge.protein { background: #ddd6fe; color: #7c3aed; }
-        .macro-badge.carbs { background: #fed7aa; color: #ea580c; }
-        .macro-badge.fats { background: #bfdbfe; color: #2563eb; }
-        
-        .cuisine-tag {
-            background: var(--nutri-green);
-            color: white;
-            padding: 0.25rem 0.75rem;
-            border-radius: 20px;
-            font-size: 0.75rem;
-            font-weight: 600;
-        }
-          
-       .filter-section {
-            background: white;
-            border-radius: 20px;
-            box-shadow: 0 8px 32px rgba(0,0,0,0.1);
-            padding: 2rem;
-            margin-bottom: 2rem;
-        }
-
-        .filter-info {
-            background: #e0f2fe;
-            border-radius: 8px;
-            padding: 0.75rem;
-            margin-bottom: 1rem;
-            border-left: 4px solid var(--nutri-green);
-        }
-
-        .slider-container {
-            margin: 1.5rem 0;
-        }
-
-        .slider-label {
-            font-weight: 600;
-            color: #374151;
-            margin-bottom: 1rem;
-            display: flex;
-            justify-content: space-between;
-            align-items: center;
-        }
-
-        .range-slider {
-            position: relative;
-            height: 6px;
-            background: #e5e7eb;
-            border-radius: 3px;
-            margin: 1rem 0;
-        }
-
-        .range-input {
-            position: absolute;
-            width: 100%;
-            height: 6px;
-            top: 0;
-            background: none;
-            pointer-events: none;
-            -webkit-appearance: none;
-            -moz-appearance: none;
-        }
-
-        .range-input::-webkit-slider-thumb {
-            height: 20px;
-            width: 20px;
-            border-radius: 50%;
-            background: var(--nutri-green);
-            cursor: pointer;
-            border: 2px solid white;
-            box-shadow: 0 2px 8px rgba(0,0,0,0.2);
-            -webkit-appearance: none;
-            pointer-events: all;
-            position: relative;
-            z-index: 2;
-        }
-
-        .range-input::-moz-range-thumb {
-            height: 20px;
-            width: 20px;
-            border-radius: 50%;
-            background: var(--nutri-green) !important;
-            cursor: pointer;
-            border: 2px solid white;
-            box-shadow: 0 2px 8px rgba(0,0,0,0.2);
-            pointer-events: all;
-            position: relative;
-            z-index: 2;
-        }
-
-        .range-fill {
-            position: absolute;
-            height: 6px;
-            background: var(--nutri-green) !important;
-            border-radius: 3px;
-            top: 0;
-            width: 100%;
-        }
-        
-        .no-items-message {
-            text-align: center;
-            padding: 2rem;
-            color: var(--nutri-gray);
-        }
-        
-
-        .restaurant-name {
-            font-size: 1.1rem;
-            font-weight: bold;
-            color: #2C3E50;
-            margin-bottom: 0.5rem;
-        }
-        
-        .restaurant-items {
-            font-size: 0.9rem;
-            color: #666;
-            margin-bottom: 1rem;
-        }
-        
-        .restaurant-rating {
-            color: #FFD700;
-            font-size: 0.9rem;
-        }
-
-        #restaurantsGrid {
-            justify-content: center;
-        }
-
-        .tag-selection {
-            display: grid;
-            grid-template-columns: repeat(2, 1fr);
-            gap: 12px;
-        }
-
-        .tag-item {
-            display: flex;
-            align-items: center;
-            padding: 12px;
-            background: #f8f9fa;
-            border-radius: 8px;
-            cursor: pointer;
-            transition: all 0.2s;
-        }
-
-        .tag-item:hover {
-            background: #e9ecef;
-        }
-
-        .tag-item input[type="checkbox"] {
-            display: none;
-        }
-
-        .tag-item label {
-            cursor: pointer;
-            margin: 0;
-            width: 100%;
-            font-weight: 500;
-        }
-
-        .tag-item input[type="checkbox"]:checked + label {
-            color: #31cf6b;
-        }
-
-        .tag-item input[type="checkbox"]:checked ~ label::before {
-            content: '✓ ';
-            margin-right: 4px;
-        }
-
-        .follow-btn {
-            margin-top: 10px;
-            width: 100%;
-            transition: all 0.3s;
-        }
-
-        .follow-btn:hover {
-            transform: scale(1.05);
-        }
-
-        .notification-bell {
-            position: absolute;
-            top: 15px;
-            right: 15px;
-            width: 40px;
-            height: 40px;
-            border-radius: 50%;
-            border: none;
-            background: white;
-            color: var(--nutri-green);
-            font-size: 1.2rem;
-            cursor: pointer;
-            transition: all 0.3s ease;
-            z-index: 10;
-            box-shadow: 0 2px 8px rgba(0,0,0,0.1);
-            display: flex;
-            align-items: center;
-            justify-content: center;
-        }
-
-        .notification-bell:hover {
-            transform: scale(1.1);
-            box-shadow: 0 4px 12px rgba(0,0,0,0.15);
-        }
-
-        .notification-bell.active {
-            background: var(--nutri-green);
-            color: white;
-        }
-
-        .notification-bell i {
-            transition: all 0.3s ease;
-        }
-
-        @keyframes bellRing {
-            0%, 100% { transform: rotate(0deg); }
-            10%, 30%, 50%, 70%, 90% { transform: rotate(-10deg); }
-            20%, 40%, 60%, 80% { transform: rotate(10deg); }
-        }
-
-        .notification-bell.just-activated {
-            animation: bellRing 0.5s ease-in-out;
-        }
-        
-
-        .tag-selection {
-            display: grid;
-            grid-template-columns: repeat(2, 1fr);
-            gap: 12px;
-        }
-
-        .tag-item-wrapper {
-            display: flex;
-            flex-direction: column;
-            background: #f8f9fa;
-            border-radius: 8px;
-            overflow: hidden;
-            transition: all 0.3s ease;
-            align-self: start;
-        }
-
-        .tag-item {
-            display: flex;
-            align-items: center;
-            justify-content: space-between;
-            padding: 12px;
-            cursor: pointer;
-            transition: all 0.2s;
-            position: relative;
-        }
-
-        .tag-item:hover {
-            background: #e9ecef;
-        }
-
-        .tag-item input[type="checkbox"] {
-            display: none;
-        }
-
-        .tag-item label {
-            cursor: pointer;
-            margin: 0;
-            font-weight: 500;
-            flex-grow: 1;
-        }
-
-        .tag-item input[type="checkbox"]:checked + label {
-            color: #31cf6b;
-        }
-
-        .tag-item input[type="checkbox"]:checked ~ label::before {
-            content: '✓ ';
-            margin-right: 4px;
-        }
-
-        .expand-icon {
-            font-size: 0.8rem;
-            color: #6c757d;
-            transition: transform 0.3s ease;
-            margin-left: 8px;
-        }
-
-        .tag-item.expanded .expand-icon {
-            transform: rotate(180deg);
-        }
-
-        .tag-threshold {
-            max-height: 0;
-            overflow: hidden;
-            padding: 0 12px;
-            transition: all 0.3s ease;
-            background: white;
-            border-top: 1px solid transparent;
-        }
-
-        .tag-threshold.show {
-            max-height: 100px;
-            padding: 12px;
-            border-top-color: #e9ecef;
-        }
-
-        .tag-threshold label {
-            display: block;
-            margin-bottom: 6px;
-            font-weight: 500;
-        }
-
-        .tag-threshold input[type="number"] {
-            width: 100%;
-        }
-
-        .modal-dialog.modal-lg {
-            max-width: 700px;
-        }
-
-        .tag-item-wrapper:has(#tag-balanced) .tag-item {
-            cursor: default;
-        }
-
-        .tag-item-wrapper:has(#tag-balanced) .expand-icon {
-            display: none;
-        }
-
-        .ct-main {
-            margin-top: 40px;
-        }
-    
Index: triMatch/wwwroot/css/_Layout.css
===================================================================
--- NutriMatch/wwwroot/css/_Layout.css	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,191 +1,0 @@
-﻿:root {
-    --dark-green: #27AE60;
-    --light-green: #58D68D;
-    --accent-pink: #2c3534;
-    --light-pink: #bbcabe;
-    --dark-gray: #11ff00;
-    --light-gray: #ECF0F1;
-}
-
-body {
-    min-height: 100vh;
-    display: flex;
-    flex-direction: column;
-    margin: 0;
-}
-
-.container:has(main) {
-    flex: 1;
-    display: flex;
-    flex-direction: column;
-}
-
-main {
-    flex: 1;
-}
-
-footer {
-    margin-top: auto;
-}
-
-.navbar {
-    background: white !important;
-    box-shadow: 0 2px 10px rgba(0,0,0,0.1);
-    padding: 0px;
-    height: 80px;
-}
-
-.navbar-brand {
-    font-size: 2rem;
-    font-weight: bold;
-    color: var(--primary-green) !important;
-    display: flex;
-    align-items: center;
-    gap: 15px;
-}
-
-.logo-text {
-    background: linear-gradient(45deg, var(--primary-green), var(--dark-green));
-    -webkit-background-clip: text;
-    -webkit-text-fill-color: transparent;
-    background-clip: text;
-}
-
-.nav-link {
-    color: black !important;
-    font-size: 18px !important;
-    margin-left: 15px;
-    position: relative;
-    transition: color 0.3s ease-in-out;
-}
-
-.nav-link::after {
-    content: '';
-    position: absolute;
-    bottom: 0;
-    left: 50%;
-    transform: translateX(-50%);
-    width: 0;
-    height: 2px;
-    background: #2ECC71;
-    transition: width 0.3s ease-in-out;
-}
-
-.nav-link:hover {
-    color: #2ECC71 !important;
-}
-
-.nav-link:hover::after {
-    width: 80%;
-}
-
-
-.user-profile-pic {
-    width: 50px;
-    height: 50px;
-    border-radius: 50%;
-    object-fit: cover;
-    border: 2px solid #ddd;
-    transition: all 0.3s ease-in-out;
-    cursor: pointer;
-}
-
-.user-profile-link {
-    padding: 0 !important;
-    margin-left: -4.5rem !important;
-}
-
-.user-profile-pic:hover {
-    border-color: #2ECC71;
-    transform: scale(1.1);
-    box-shadow: 0 0 15px rgba(46, 204, 113, 0.4);
-}
-
-.user-profile-link.active-glow-border .user-profile-pic {
-    border-color: #2ECC71;
-    box-shadow: 0 0 10px rgba(46, 204, 113, 0.5);
-}
-
-
-.navbar-collapse {
-    align-items: center;
-}
-
-.navbar-nav.mx-auto {
-    display: flex;
-    justify-content: center;
-    align-items: center;
-
-}
-
-.navbar-nav.mx-auto .nav-item {
-    display: flex;
-    align-items: center;
-}
-
-
-footer {
-    background: lightslategray !important;
-    color: white;
-    padding: 4rem 0 2rem;
-    margin-top: auto;
-    flex-shrink: 0;
-}
-
-footer h5, footer h6 {
-    margin-bottom: 1rem;
-}
-
-footer ul {
-    list-style: none;
-    padding: 0;
-}
-
-footer ul li {
-    margin-bottom: 0.5rem;
-}
-
-footer a {
-    color: #bbb;
-    text-decoration: none;
-    transition: color 0.3s ease;
-}
-
-footer a:hover {
-    color: var(--primary-green);
-}
-
-.active-glow {
-    color: #2ECC71 !important;
-    font-weight: bold !important;
-    transition: all 0.3s ease-in-out;
-}
-
-@media (max-width: 768px) {
-    .signup-title {
-        font-size: 2.5rem;
-    }
-    
-    .share-title {
-        font-size: 2rem;
-    }
-
-    .restaurant-card {
-        min-width: 150px;
-        padding: 1rem;
-    }
-
-    .restaurant-logo {
-        width: 60px;
-        height: 60px;
-    }
-    
-    .user-profile-pic {
-        width: 40px;
-        height: 40px;
-    }
-    
-    .navbar-nav.mx-auto {
-        margin-left: 0; 
-    }
-}
Index: triMatch/wwwroot/css/_RecipeDeclinePartial.css
===================================================================
--- NutriMatch/wwwroot/css/_RecipeDeclinePartial.css	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,717 +1,0 @@
-    .recipe-hero {
-        display: flex;
-        gap: 20px;
-        margin-bottom: 30px;
-    }
-
-    .recipe-image-container {
-        position: relative;
-        flex: 1;
-        max-width: 300px;
-    }
-
-    .recipe-image-details {
-        width: 100%;
-        height: 200px;
-        object-fit: cover;
-        border-radius: 12px;
-        box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
-    }
-
-    .recipe-info {
-        flex: 2;
-        display: flex;
-        flex-direction: column;
-        justify-content: space-between;
-    }
-
-    .chef-badge {
-        display: flex;
-        align-items: center;
-        gap: 8px;
-        margin-bottom: 10px;
-        font-size: 14px;
-        color: #6b7280;
-    }
-
-    .chef-avatar {
-        width: 32px;
-        height: 32px;
-        border-radius: 50%;
-        object-fit: cover;
-    }
-
-    .recipe-title-details {
-        font-size: 24px;
-        font-weight: 700;
-        color: #1f2937;
-        margin: 0 0 15px 0;
-        line-height: 1.3;
-    }
-
-    .nutrition-card {
-        background: linear-gradient(135deg, #f8fafc 0%, #e2e8f0 100%);
-        border-radius: 12px;
-        padding: 20px;
-        box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
-    }
-
-    .section-title {
-        display: flex;
-        align-items: center;
-        gap: 8px;
-        font-size: 16px;
-        font-weight: 600;
-        color: #374151;
-        margin-bottom: 15px;
-    }
-
-    .nutrition-grid {
-        display: grid;
-        grid-template-columns: 1fr 1fr;
-        gap: 15px;
-    }
-
-    .nutrition-item {
-        text-align: center;
-        padding: 12px 8px;
-        background: white;
-        border-radius: 8px;
-        box-shadow: 0 1px 4px rgba(0, 0, 0, 0.05);
-        transition: transform 0.2s ease;
-    }
-
-    .nutrition-item:hover {
-        transform: translateY(-2px);
-    }
-
-    .nutrition-icon {
-        margin-bottom: 5px;
-    }
-
-    .nutrition-value {
-        font-size: 18px;
-        font-weight: 700;
-        color: #1f2937;
-        margin-bottom: 2px;
-    }
-
-    .nutrition-label {
-        font-size: 12px;
-        color: #6b7280;
-        font-weight: 500;
-        text-transform: uppercase;
-        letter-spacing: 0.5px;
-    }
-
-    .ingredients-list,
-    .instructions-list {
-        background: white;
-        border-radius: 12px;
-        padding: 20px;
-        margin-bottom: 20px;
-        box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
-    }
-
-    .ingredient-item {
-        padding: 10px 0;
-        border-bottom: 1px solid #f1f5f9;
-        font-size: 14px;
-        color: #374151;
-    }
-
-    .ingredient-item:last-child {
-        border-bottom: none;
-    }
-
-    .ingredient-bullet {
-        color: #10b981;
-        font-weight: bold;
-        font-size: 16px;
-    }
-
-    .instruction-item {
-        display: flex;
-        align-items: flex-start;
-        background-color: #f8f9fa;
-        padding: 15px;
-        margin: 10px 0;
-        border-radius: 10px;
-        border-left: 4px solid #ef4444;
-        box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
-    }
-
-    .instruction-number {
-        background-color: #ef4444;
-        color: white;
-        border-radius: 50%;
-        width: 28px;
-        height: 28px;
-        display: flex;
-        align-items: center;
-        justify-content: center;
-        font-size: 13px;
-        font-weight: bold;
-        margin-right: 15px;
-        flex-shrink: 0;
-        box-shadow: 0 2px 4px rgba(239, 68, 68, 0.3);
-    }
-
-    .instruction-text {
-        flex: 1;
-        line-height: 1.6;
-        color: #374151;
-        font-size: 14px;
-    }
-
-    .decline-overlay {
-        position: absolute;
-        top: 0;
-        left: 0;
-        right: 0;
-        bottom: 0;
-        background: rgba(0, 0, 0, 0.4);
-        display: flex;
-        align-items: center;
-        justify-content: center;
-        border-radius: 12px;
-        backdrop-filter: blur(2px);
-    }
-
-    .decline-badge {
-        background: linear-gradient(135deg, #ef4444, #dc2626);
-        color: white;
-        padding: 10px 20px;
-        border-radius: 25px;
-        font-weight: bold;
-        font-size: 14px;
-        display: flex;
-        align-items: center;
-        gap: 8px;
-        box-shadow: 0 6px 20px rgba(239, 68, 68, 0.4);
-        text-transform: uppercase;
-        letter-spacing: 1px;
-    }
-
-    .decline-status {
-        margin: 15px 0;
-        padding: 15px;
-        background: linear-gradient(135deg, #fef2f2, #fee2e2);
-        border: 1px solid #fecaca;
-        border-radius: 10px;
-    }
-
-    .status-item {
-        display: flex;
-        align-items: center;
-        gap: 10px;
-        margin: 6px 0;
-        font-size: 14px;
-        color: #374151;
-    }
-
-    .status-item i {
-        width: 16px;
-        text-align: center;
-    }
-
-    .feedback-section {
-        margin: 25px 0;
-    }
-
-    .feedback-card {
-        background: white;
-        border: 1px solid #e2e8f0;
-        border-radius: 12px;
-        overflow: hidden;
-        box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
-    }
-
-    .feedback-header {
-        background: linear-gradient(135deg, #1e293b, #334155);
-        color: white;
-        padding: 18px 24px;
-    }
-
-    .feedback-header h4 {
-        margin: 0;
-        display: flex;
-        align-items: center;
-        gap: 10px;
-        font-size: 17px;
-        font-weight: 600;
-    }
-
-    .feedback-content {
-        padding: 24px;
-    }
-
-    .admin-comment {
-        font-size: 15px;
-        line-height: 1.7;
-        color: #374151;
-        background: #fef9f9;
-        padding: 20px;
-        border-radius: 10px;
-        border-left: 4px solid #ef4444;
-        position: relative;
-    }
-
-    .admin-comment::before {
-        content: '"';
-        font-size: 40px;
-        color: #ef4444;
-        position: absolute;
-        top: 10px;
-        left: 15px;
-        opacity: 0.3;
-        font-family: serif;
-    }
-
-    .no-comment {
-        display: flex;
-        align-items: center;
-        gap: 10px;
-        color: #6b7280;
-        font-style: italic;
-        padding: 20px;
-        background: #f8fafc;
-        border-radius: 8px;
-        border: 2px dashed #d1d5db;
-    }
-
-    .recipe-actions {
-        padding-top: 20px;
-        border-top: 2px solid #e5e7eb;
-    }
-
-    .action-btn {
-        background: white;
-        border: 2px solid #e5e7eb;
-        border-radius: 10px;
-        padding: 14px 24px;
-        display: flex;
-        align-items: center;
-        gap: 10px;
-        cursor: pointer;
-        transition: all 0.3s ease;
-        color: #374151;
-        font-weight: 600;
-        text-decoration: none;
-        font-size: 14px;
-        box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
-    }
-
-    .edit-btn:hover {
-        border-color: #3b82f6;
-        background: linear-gradient(135deg, #3b82f6, #2563eb);
-        color: white;
-        transform: translateY(-3px);
-        box-shadow: 0 6px 20px rgba(59, 130, 246, 0.3);
-    }
-
-    .resubmit-btn:hover:not(.disabled) {
-        border-color: #10b981;
-        background: linear-gradient(135deg, #10b981, #059669);
-        color: white;
-        transform: translateY(-3px);
-        box-shadow: 0 6px 20px rgba(16, 185, 129, 0.3);
-    }
-
-    .resubmit-btn.disabled {
-        opacity: 0.6;
-        cursor: not-allowed;
-        border-color: #d1d5db;
-        color: #9ca3af;
-        background: #f9fafb;
-    }
-
-    .resubmit-btn.disabled:hover {
-        transform: none;
-        box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
-    }
-
-    .resubmit-hint {
-        display: flex;
-        align-items: center;
-        gap: 8px;
-        font-size: 13px;
-        color: #6b7280;
-        margin-top: 12px;
-        font-style: italic;
-        padding: 10px 15px;
-        background: #fffbeb;
-        border-radius: 8px;
-        border-left: 3px solid #f59e0b;
-    }
-
-    .decline-toast {
-        position: fixed;
-        top: 20px;
-        right: 20px;
-        background: linear-gradient(135deg, #10b981, #059669);
-        color: white;
-        padding: 16px 24px;
-        border-radius: 10px;
-        font-size: 14px;
-        font-weight: 500;
-        z-index: 9999;
-        transform: translateX(100%);
-        transition: transform 0.3s ease;
-        box-shadow: 0 6px 20px rgba(16, 185, 129, 0.3);
-        max-width: 350px;
-    }
-
-    .decline-toast.show {
-        transform: translateX(0);
-    }
-
-    .decline-toast.error {
-        background: linear-gradient(135deg, #ef4444, #dc2626);
-        box-shadow: 0 6px 20px rgba(239, 68, 68, 0.3);
-    }
-
-    .fa-spinner {
-        animation: spin 1s linear infinite;
-    }
-
-    @keyframes spin {
-        from {
-            transform: rotate(0deg);
-        }
-
-        to {
-            transform: rotate(360deg);
-        }
-    }
-
-    .modal-content {
-        border: none;
-        border-radius: 15px;
-        box-shadow: 0 20px 40px rgba(0, 0, 0, 0.15);
-    }
-
-    .modal-header {
-        background: linear-gradient(135deg, #fee2e2, #fecaca);
-        border-radius: 15px 15px 0 0;
-        padding: 20px 30px;
-    }
-
-    .modal-title {
-        font-weight: 700;
-        font-size: 20px;
-    }
-
-    .modal-body {
-        padding: 30px;
-        max-height: 80vh;
-        overflow-y: auto;
-    }
-
-    .modal-body::-webkit-scrollbar {
-        width: 6px;
-    }
-
-    .modal-body::-webkit-scrollbar-track {
-        background: #f1f5f9;
-        border-radius: 3px;
-    }
-
-    .modal-body::-webkit-scrollbar-thumb {
-        background: #cbd5e1;
-        border-radius: 3px;
-    }
-
-    .modal-body::-webkit-scrollbar-thumb:hover {
-        background: #94a3b8;
-    }
-
-    @media (max-width: 768px) {
-        .recipe-hero {
-            flex-direction: column;
-            gap: 15px;
-        }
-
-        .recipe-image-container {
-            max-width: 100%;
-        }
-
-        .recipe-actions .d-flex {
-            flex-direction: column;
-            gap: 15px !important;
-        }
-
-        .action-btn {
-            justify-content: center;
-            width: 100%;
-            padding: 16px 20px;
-        }
-
-        .nutrition-grid {
-            grid-template-columns: 1fr;
-            gap: 10px;
-        }
-
-        .modal-body {
-            padding: 20px;
-        }
-
-        .feedback-content {
-            padding: 20px;
-        }
-
-        .admin-comment {
-            padding: 16px;
-        }
-
-        .decline-toast {
-            right: 10px;
-            left: 10px;
-            max-width: none;
-            transform: translateY(-100%);
-        }
-
-        .decline-toast.show {
-            transform: translateY(0);
-        }
-    }
-
-    @media (max-width: 576px) {
-        .recipe-title-details {
-            font-size: 20px;
-        }
-
-        .modal-dialog {
-            margin: 10px;
-        }
-
-        .instruction-item {
-            padding: 12px;
-        }
-
-        .instruction-number {
-            width: 24px;
-            height: 24px;
-            font-size: 12px;
-            margin-right: 12px;
-        }
-    }
-
-    .decline-overlay {
-        position: absolute;
-        top: 0;
-        left: 0;
-        right: 0;
-        bottom: 0;
-        background: rgba(0, 0, 0, 0.3);
-        display: flex;
-        align-items: center;
-        justify-content: center;
-        border-radius: 12px;
-    }
-
-    .decline-badge {
-        background: #ef4444;
-        color: white;
-        padding: 8px 16px;
-        border-radius: 20px;
-        font-weight: bold;
-        font-size: 14px;
-        display: flex;
-        align-items: center;
-        gap: 6px;
-        box-shadow: 0 4px 12px rgba(239, 68, 68, 0.3);
-    }
-
-    .decline-status {
-        margin: 15px 0;
-        padding: 12px;
-        background: #fef2f2;
-        border: 1px solid #fecaca;
-        border-radius: 8px;
-    }
-
-    .status-item {
-        display: flex;
-        align-items: center;
-        gap: 8px;
-        margin: 4px 0;
-        font-size: 14px;
-        color: #374151;
-    }
-
-    .feedback-section {
-        margin: 20px 0;
-    }
-
-    .feedback-card {
-        background: #f8fafc;
-        border: 1px solid #e2e8f0;
-        border-radius: 12px;
-        overflow: hidden;
-    }
-
-    .feedback-header {
-        background: #1e293b;
-        color: white;
-        padding: 15px 20px;
-    }
-
-    .feedback-header h4 {
-        margin: 0;
-        display: flex;
-        align-items: center;
-        gap: 8px;
-        font-size: 16px;
-    }
-
-    .feedback-content {
-        padding: 20px;
-    }
-
-    .admin-comment {
-        font-size: 15px;
-        line-height: 1.6;
-        color: #374151;
-        background: white;
-        padding: 16px;
-        border-radius: 8px;
-        border-left: 4px solid #ef4444;
-    }
-
-    .no-comment {
-        display: flex;
-        align-items: center;
-        gap: 8px;
-        color: #6b7280;
-        font-style: italic;
-    }
-
-    .recipe-actions {
-        padding-top: 15px;
-        border-top: 1px solid #e5e7eb;
-    }
-
-    .action-btn {
-        background: none;
-        border: 2px solid #e5e7eb;
-        border-radius: 8px;
-        padding: 12px 20px;
-        display: flex;
-        align-items: center;
-        gap: 8px;
-        cursor: pointer;
-        transition: all 0.3s ease;
-        color: #374151;
-        font-weight: 500;
-        text-decoration: none;
-    }
-
-    .edit-btn:hover {
-        border-color: #3b82f6;
-        background-color: #3b82f6;
-        color: white;
-        transform: translateY(-2px);
-    }
-
-    .resubmit-btn:hover:not(.disabled) {
-        border-color: #10b981;
-        background-color: #10b981;
-        color: white;
-        transform: translateY(-2px);
-    }
-
-    .resubmit-btn.disabled {
-        opacity: 0.5;
-        cursor: not-allowed;
-        border-color: #d1d5db;
-        color: #9ca3af;
-    }
-
-    .resubmit-hint {
-        display: flex;
-        align-items: center;
-        gap: 6px;
-        font-size: 13px;
-        color: #6b7280;
-        margin-top: 8px;
-        font-style: italic;
-    }
-
-    .ingredient-item {
-        display: flex;
-        align-items: flex-start;
-        gap: 8px;
-        padding: 8px 0;
-        border-bottom: 1px solid #f3f4f6;
-    }
-
-    .ingredient-bullet {
-        color: #10b981;
-        font-weight: bold;
-        margin-top: 2px;
-    }
-
-    .instruction-item {
-        display: flex;
-        align-items: flex-start;
-        background-color: #f8f9fa;
-        padding: 12px;
-        margin: 8px 0;
-        border-radius: 8px;
-        border-left: 4px solid #ef4444;
-    }
-
-    .instruction-number {
-        background-color: #ef4444;
-        color: white;
-        border-radius: 50%;
-        width: 24px;
-        height: 24px;
-        display: flex;
-        align-items: center;
-        justify-content: center;
-        font-size: 12px;
-        font-weight: bold;
-        margin-right: 12px;
-        flex-shrink: 0;
-    }
-
-    .instruction-text {
-        flex: 1;
-        line-height: 1.5;
-    }
-
-    .decline-toast {
-        position: fixed;
-        top: 20px;
-        right: 20px;
-        background: #10b981;
-        color: white;
-        padding: 12px 20px;
-        border-radius: 8px;
-        font-size: 14px;
-        z-index: 9999;
-        transform: translateX(100%);
-        transition: transform 0.3s ease;
-    }
-
-    .decline-toast.show {
-        transform: translateX(0);
-    }
-
-    .decline-toast.error {
-        background: #ef4444;
-    }
-
-    @media (max-width: 768px) {
-        .recipe-actions .d-flex {
-            flex-direction: column;
-            gap: 12px !important;
-        }
-
-        .action-btn {
-            justify-content: center;
-            width: 100%;
-        }
-    }
Index: triMatch/wwwroot/css/_RecipeDeletePartial.css
===================================================================
--- NutriMatch/wwwroot/css/_RecipeDeletePartial.css	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,258 +1,0 @@
-
-.delete-modal .modal-content {
-    border-radius: 16px;
-    border: none;
-    box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
-    overflow: hidden;
-    z-index: 1060; 
-}
-.delete-modal {
-    z-index: 1055; 
-}
-.delete-modal .modal-backdrop {
-    z-index: 1050; 
-}
-.delete-modal .modal-header {
-    background: linear-gradient(135deg, #ef4444 0%, #dc2626 100%);
-    color: white;
-    border: none;
-    padding: 1.5rem 2rem;
-    position: relative;
-}
-.delete-modal .modal-header::before {
-    content: '';
-    position: absolute;
-    top: 0;
-    left: 0;
-    right: 0;
-    bottom: 0;
-    background: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><defs><pattern id="grain" width="100" height="100" patternUnits="userSpaceOnUse"><circle cx="25" cy="25" r="1" fill="white" opacity="0.1"/><circle cx="75" cy="75" r="1" fill="white" opacity="0.1"/><circle cx="50" cy="10" r="0.5" fill="white" opacity="0.1"/><circle cx="20" cy="80" r="0.5" fill="white" opacity="0.1"/></pattern></defs><rect width="100" height="100" fill="url(%23grain)"/></svg>');
-    pointer-events: none;
-}
-.delete-modal .modal-title {
-    font-size: 1.5rem;
-    font-weight: 700;
-    display: flex;
-    align-items: center;
-    gap: 0.75rem;
-    margin: 0;
-    position: relative;
-    z-index: 1;
-}
-.delete-modal .modal-title i {
-    font-size: 1.75rem;
-    animation: pulse 2s infinite;
-}
-@keyframes pulse {
-    0%, 100% { transform: scale(1); }
-    50% { transform: scale(1.1); }
-}
-.delete-modal .btn-close {
-    background: rgba(255, 255, 255, 0.2);
-    border-radius: 50%;
-    width: 32px;
-    height: 32px;
-    display: flex;
-    align-items: center;
-    justify-content: center;
-    position: relative;
-    z-index: 1;
-    opacity: 0.8;
-    transition: all 0.2s ease;
-}
-.delete-modal .btn-close:hover {
-    background: rgba(255, 255, 255, 0.3);
-    opacity: 1;
-    transform: scale(1.1);
-}
-.delete-modal .modal-body {
-    padding: 2rem;
-    background: linear-gradient(to bottom, #ffffff 0%, #f8fafc 100%);
-}
-.delete-warning {
-    text-align: center;
-    margin-bottom: 2rem;
-}
-.delete-warning h4 {
-    color: #1f2937;
-    font-weight: 600;
-    margin-bottom: 0.75rem;
-    font-size: 1.25rem;
-}
-.delete-warning p {
-    color: #6b7280;
-    font-size: 1rem;
-    line-height: 1.6;
-    margin: 0;
-}
-.recipe-preview-card {
-    background: white;
-    border-radius: 12px;
-    padding: 1.5rem;
-    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
-    border: 1px solid #e5e7eb;
-    margin-bottom: 1.5rem;
-    transition: all 0.3s ease;
-}
-.recipe-preview-card:hover {
-    box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
-    transform: translateY(-2px);
-}
-.recipe-preview-header {
-    display: flex;
-    align-items: center;
-    gap: 1rem;
-    margin-bottom: 1rem;
-}
-.recipe-preview-image {
-    width: 60px;
-    height: 60px;
-    border-radius: 8px;
-    object-fit: cover;
-    border: 2px solid #e5e7eb;
-}
-.recipe-preview-info h5 {
-    color: #1f2937;
-    font-weight: 600;
-    margin: 0 0 0.25rem 0;
-    font-size: 1.1rem;
-}
-.recipe-preview-info .recipe-meta {
-    display: flex;
-    gap: 1rem;
-    color: #6b7280;
-    font-size: 0.875rem;
-}
-.recipe-preview-info .recipe-meta span {
-    display: flex;
-    align-items: center;
-    gap: 0.25rem;
-}
-.recipe-details-grid {
-    display: grid;
-    grid-template-columns: 1fr 1fr;
-    gap: 1rem;
-    margin-top: 1rem;
-}
-.detail-item {
-    display: flex;
-    justify-content: space-between;
-    align-items: center;
-    padding: 0.5rem 0;
-    border-bottom: 1px solid #f3f4f6;
-}
-.detail-item:last-child {
-    border-bottom: none;
-}
-.detail-label {
-    font-weight: 500;
-    color: #374151;
-    font-size: 0.875rem;
-}
-.detail-value {
-    color: #6b7280;
-    font-size: 0.875rem;
-}
-.delete-actions {
-    display: flex;
-    gap: 1rem;
-    justify-content: center;
-    padding-top: 1rem;
-}
-.btn-delete-confirm {
-    background: linear-gradient(135deg, #ef4444 0%, #dc2626 100%);
-    color: white;
-    border: none;
-    padding: 0.75rem 2rem;
-    border-radius: 8px;
-    font-weight: 600;
-    transition: all 0.3s ease;
-    position: relative;
-    overflow: hidden;
-}
-.btn-delete-confirm::before {
-    content: '';
-    position: absolute;
-    top: 0;
-    left: -100%;
-    width: 100%;
-    height: 100%;
-    background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent);
-    transition: left 0.5s;
-}
-.btn-delete-confirm:hover::before {
-    left: 100%;
-}
-.btn-delete-confirm:hover {
-    background: linear-gradient(135deg, #dc2626 0%, #b91c1c 100%);
-    transform: translateY(-2px);
-    box-shadow: 0 10px 15px -3px rgba(239, 68, 68, 0.3), 0 4px 6px -2px rgba(239, 68, 68, 0.1);
-}
-.btn-delete-confirm:active {
-    transform: translateY(0);
-}
-.btn-cancel {
-    background: #f3f4f6;
-    color: #374151;
-    border: 1px solid #d1d5db;
-    padding: 0.75rem 2rem;
-    border-radius: 8px;
-    font-weight: 500;
-    transition: all 0.3s ease;
-}
-.btn-cancel:hover {
-    background: #e5e7eb;
-    color: #1f2937;
-    transform: translateY(-2px);
-    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
-}
-.btn-cancel:active {
-    transform: translateY(0);
-}
-.btn-delete-confirm.loading {
-    pointer-events: none;
-    opacity: 0.7;
-}
-.btn-delete-confirm.loading::after {
-    content: '';
-    position: absolute;
-    top: 50%;
-    left: 50%;
-    width: 20px;
-    height: 20px;
-    margin: -10px 0 0 -10px;
-    border: 2px solid transparent;
-    border-top: 2px solid white;
-    border-radius: 50%;
-    animation: spin 0.8s linear infinite;
-}
-@keyframes spin {
-    0% { transform: rotate(0deg); }
-    100% { transform: rotate(360deg); }
-}
-@media (max-width: 768px) {
-    .delete-modal .modal-dialog {
-        margin: 1rem;
-    }
-    .recipe-details-grid {
-        grid-template-columns: 1fr;
-    }
-    .delete-actions {
-        flex-direction: column;
-    }
-    .btn-delete-confirm,
-    .btn-cancel {
-        width: 100%;
-    }
-}
-.delete-modal.fade .modal-dialog {
-    transition: transform 0.3s ease-out;
-    transform: translate(0, -50px);
-}
-.delete-modal.show .modal-dialog {
-    transform: none;
-}
-.delete-modal .modal-backdrop {
-    backdrop-filter: blur(4px);
-    background-color: rgba(0, 0, 0, 0.4);
-}
Index: triMatch/wwwroot/css/_RecipeDetailsPartial.css
===================================================================
--- NutriMatch/wwwroot/css/_RecipeDetailsPartial.css	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,737 +1,0 @@
-    :root {
-        --nutri-primary: #4CAF50;
-        --nutri-secondary: #45A049;
-        --nutri-light: #E8F5E8;
-        --nutri-dark: #2E7D32;
-    }
-
-    #view-ingr-btn:hover {
-     color: white;
-    }
-
-    .modal-xl {
-        max-width: 1200px;
-    }
-
-    .recipe-hero {
-        display: flex;
-        gap: 2rem;
-        background: white;
-        border-radius: 15px;
-        overflow: hidden;
-        margin-bottom: 2rem;
-        box-shadow: 0 4px 20px rgba(0,0,0,0.1);
-        min-height: 300px;
-    }
-
-    .recipe-image-container {
-        flex: 0 0 40%;
-        position: relative;
-        overflow: hidden;
-        border-radius: 15px 0 0 15px;
-    }
-
-    .recipe-image-details {
-        width: 100%;
-        height: 100%;
-        max-height: 22rem;
-        object-fit: cover;
-        transition: transform 0.3s ease;
-    }
-
-    .recipe-image:hover {
-        transform: scale(1.05);
-    }
-
-    .recipe-info {
-        flex: 1;
-        padding: 2rem;
-        display: flex;
-        flex-direction: column;
-        justify-content: space-around;
-    }
-
-    .chef-badge {
-        display: inline-flex;
-        align-items: center;
-        background: var(--nutri-primary);
-        color: white;
-        padding: 0.5rem 1rem;
-        border-radius: 25px;
-        font-size: 0.9rem;
-        margin-bottom: 1rem;
-        font-weight: 500;
-    }
-
-    .chef-avatar {
-        width: 30px;
-        height: 30px;
-        border-radius: 50%;
-        margin-right: 0.5rem;
-        border: 2px solid white;
-    }
-
-    .favorite-btn-details {
-        background: #e91e63;
-        color: white;
-        border-radius: 10px !important;
-        height: 40px !important;
-        width: 40px !important;
-    }
-
-    .favorite-btn-details:hover {
-        background: #c2185b;
-        transform: translateY(-2px);
-        box-shadow: 0 4px 8px rgba(233, 30, 99, 0.3);
-    }
-
-    .favorite-btn-details.favorited {
-        background: #8e24aa;
-    }
-
-    .favorite-btn-details.favorited:hover {
-        background: #7b1fa2;
-    }
-
-    .recipe-rating {
-        display: flex;
-        align-items: center;
-        gap: 0.5rem;
-        margin-top: 0.5rem;
-    }
-
-    .rating-label {
-        font-size: 1rem;
-        color: var(--nutri-dark);
-        font-weight: 500;
-    }
-
-    .rating-stars {
-        color: #FFD700;
-    }
-
-    .rating-value {
-        font-size: 1rem;
-        color: #666;
-        font-weight: 500;
-    }
-
-    @media (max-width: 768px) {
-        .recipe-hero {
-            flex-direction: column;
-        }
-        
-        .recipe-image-container {
-            flex: none;
-            height: 250px;
-            border-radius: 15px 15px 0 0;
-        }
-        
-        .recipe-stats {
-            flex-wrap: wrap;
-            gap: 1rem;
-        }
-        
-        .stat-item {
-            min-width: calc(50% - 0.5rem);
-        }
-    }
-
-    .recipe-stats {
-        display: flex;
-        gap: 1.5rem;
-        margin-top: 1.5rem;
-    }
-
-    .stat-item {
-        text-align: center;
-        background: var(--nutri-light);
-        padding: 1rem;
-        border-radius: 10px;
-        flex: 1;
-        min-width: 80px;
-    }
-
-    .stat-value {
-        font-size: 1.5rem;
-        font-weight: bold;
-        display: block;
-        color: var(--nutri-dark);
-    }
-
-    .stat-label {
-        font-size: 0.9rem;
-        color: #666;
-        margin-top: 0.25rem;
-    }
-
-    .recipe-title-details {
-        color: var(--nutri-dark);
-        font-size: 2rem;
-        font-weight: 600;
-        margin-bottom: 1rem;
-        line-height: 1.2;
-    }
-
-    .nutrition-card {
-        background: var(--nutri-light);
-        border-radius: 15px;
-        padding: 1.5rem;
-        margin-bottom: 1.5rem;
-    }
-
-    .nutrition-grid {
-        display: grid;
-        grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
-        gap: 1rem;
-    }
-
-    .nutrition-item {
-        text-align: center;
-        background: white;
-        padding: 1rem;
-        border-radius: 10px;
-        box-shadow: 0 2px 8px rgba(0,0,0,0.1);
-    }
-
-    .nutrition-value {
-        font-size: 1.5rem;
-        font-weight: bold;
-        color: var(--nutri-dark);
-    }
-
-    .nutrition-label {
-        font-size: 0.9rem;
-        color: #666;
-        margin-top: 0.25rem;
-    }
-
-    .ingredients-list {
-        background: white;
-        border-radius: 15px;
-        padding: 1.5rem;
-        margin-bottom: 1.5rem;
-        box-shadow: 0 4px 15px rgba(0,0,0,0.1);
-       
-    }
-    
-
-    .ingredient-item {
-        display: flex;
-        align-items: center;
-        padding: 0.75rem 0;
-        border-bottom: 1px solid #f0f0f0;
-    }
-
-    .ingredient-item:last-child {
-        border-bottom: none;
-    }
-
-    .ingredient-checkbox {
-        margin-right: 1rem;
-        transform: scale(1.2);
-        accent-color: var(--nutri-primary);
-    }
-
-    .instructions-list {
-        background: white;
-        border-radius: 15px;
-        padding: 1.5rem;
-        box-shadow: 0 4px 15px rgba(0,0,0,0.1);
-    }
-
-    .section-title {
-        color: var(--nutri-dark);
-        font-weight: 600;
-        margin-bottom: 1rem;
-        display: flex;
-        align-items: center;
-    }
-
-    .section-title i {
-        margin-right: 0.5rem;
-        color: var(--nutri-primary);
-    }
-
-    .tags-container {
-        display: flex;
-        flex-wrap: wrap;
-        gap: 0.5rem;
-        margin-top: 1rem;
-    }
-
-    .recipe-actions-stats {
-        display: flex;
-        align-items: center;
-        justify-content: space-between;
-        margin-top: 1.5rem;
-    }
-
-    .recipe-actions {
-        display: flex;
-        gap: 0.75rem;
-    }
-
-    .action-btn {
-        width: 40px;
-        height: 40px;
-        border: none;
-        border-radius: 10px;
-        display: flex;
-        align-items: center;
-        justify-content: center;
-        cursor: pointer;
-        transition: all 0.2s ease;
-        font-size: 1rem;
-    }
-
-    .edit-btn {
-        background: #3b82f6;
-        color: white;
-    }
-
-    .edit-btn:hover {
-        background: #2563eb;
-        transform: translateY(-2px);
-        box-shadow: 0 4px 8px rgba(59, 130, 246, 0.3);
-    }
-
-    .delete-btn {
-        background: #ef4444;
-        color: white;
-    }
-
-    .delete-btn:hover {
-        background: #dc2626;
-        transform: translateY(-2px);
-        box-shadow: 0 4px 8px rgba(239, 68, 68, 0.3);
-    }
-
-    .modal-body{
-        margin-top: -20px;
-    }
-
-    .recipe-rating-section {
-    margin: 15px 0;
-}
-
-.current-rating {
-    margin-bottom: 10px;
-}
-
-.rating-display {
-    display: flex;
-    align-items: center;
-    gap: 8px;
-    margin-top: 5px;
-}
-
-.rating-stars {
-    display: flex;
-    gap: 2px;
-}
-
-.rating-stars i {
-    font-size: 18px;
-    color: #ddd;
-    transition: color 0.2s ease;
-}
-
-.rating-stars i.filled {
-    color: #fbbf24;
-}
-
-.rating-value {
-    font-size: 14px;
-    font-weight: 600;
-    color: #374151;
-}
-
-.rating-count {
-    font-size: 12px;
-    color: #6b7280;
-}
-
-.recipe-actions {
-    padding-top: 10px;
-    border-top: 1px solid #e5e7eb;
-    display: flex;
-    justify-content: space-between;
-}
-
-.rate-recipe {
-    display: flex;
-    flex-direction: column;
-    gap: 8px;
-}
-
-.rate-label {
-    font-size: 14px;
-    font-weight: 500;
-    color: #374151;
-}
-
-.rating-input {
-    display: flex;
-    gap: 3px;
-}
-
-.rating-star {
-    font-size: 20px;
-    color: #ddd;
-    cursor: pointer;
-    transition: all 0.2s ease;
-}
-
-.rating-star:hover {
-    color: #fbbf24;
-    transform: scale(1.1);
-}
-
-.rating-star.active {
-    color: #fbbf24;
-}
-
-.remove-rating-btn {
-    background: none;
-    border: none;
-    color: #ef4444;
-    font-size: 12px;
-    cursor: pointer;
-    padding: 5px 0;
-    transition: color 0.2s ease;
-}
-
-.remove-rating-btn:hover {
-    color: #dc2626;
-    text-decoration: underline;
-}
-
-.favorite-btn-details {
-    background: none;
-    border: 2px solid #e5e7eb;
-    border-radius: 50%;
-    width: 45px;
-    height: 45px;
-    display: flex;
-    align-items: center;
-    justify-content: center;
-    cursor: pointer;
-    transition: all 0.3s ease;
-    color: #6b7280;
-}
-
-.favorite-btn-details:hover {
-    border-color: #ef4444;
-    color: #ef4444;
-    transform: scale(1.05);
-}
-
-.favorite-btn-details.favorited {
-    background-color: #ef4444;
-    border-color: #ef4444;
-    color: white;
-}
-
-.favorite-btn-details.favorited:hover {
-    background-color: #dc2626;
-    border-color: #dc2626;
-}
-
-.favorite-btn-details i {
-    font-size: 18px;
-    transition: transform 0.2s ease;
-}
-
-.favorite-btn-details:hover i {
-    transform: scale(1.1);
-}
-
-.rating-toast {
-    position: fixed;
-    top: 20px;
-    right: 20px;
-    background: #10b981;
-    color: white;
-    padding: 12px 20px;
-    border-radius: 8px;
-    font-size: 14px;
-    z-index: 9999;
-    transform: translateX(100%);
-    transition: transform 0.3s ease;
-}
-
-.rating-toast.show {
-    transform: translateX(0);
-}
-
-.rating-toast.error {
-    background: #ef4444;
-}
-
-@media (max-width: 768px) {
-    .rating-display {
-        flex-wrap: wrap;
-        gap: 5px;
-    }
-    
-    .rate-recipe {
-        align-items: flex-start;
-    }
-}
-
-
-
-
-.admin-actions {
-    display: flex;
-    gap: 12px;
-    flex-direction: column;
-}
-
-.admin-btn {
-    display: flex;
-    align-items: center;
-    justify-content: center;
-    gap: 8px;
-    padding: 12px 20px;
-    border: none;
-    border-radius: 8px;
-    font-size: 14px;
-    font-weight: 600;
-    cursor: pointer;
-    transition: all 0.3s ease;
-    text-transform: uppercase;
-    letter-spacing: 0.5px;
-    min-width: 120px;
-}
-
-.approve-btn {
-    background: linear-gradient(135deg, #10b981, #059669);
-    color: white;
-    box-shadow: 0 4px 12px rgba(16, 185, 129, 0.3);
-}
-
-.approve-btn:hover {
-    background: linear-gradient(135deg, #059669, #047857);
-    transform: translateY(-2px);
-    box-shadow: 0 6px 16px rgba(16, 185, 129, 0.4);
-}
-
-.approve-btn:active {
-    transform: translateY(0);
-}
-
-.decline-btn {
-    background: linear-gradient(135deg, #ef4444, #dc2626);
-    color: white;
-    box-shadow: 0 4px 12px rgba(239, 68, 68, 0.3);
-}
-
-.decline-btn:hover {
-    background: linear-gradient(135deg, #dc2626, #b91c1c);
-    transform: translateY(-2px);
-    box-shadow: 0 6px 16px rgba(239, 68, 68, 0.4);
-}
-
-.decline-btn:active {
-    transform: translateY(0);
-}
-
-.admin-btn i {
-    font-size: 16px;
-}
-
-.admin-btn:disabled {
-    opacity: 0.6;
-    cursor: not-allowed;
-    transform: none !important;
-}
-
-.admin-btn.loading {
-    position: relative;
-    color: transparent;
-}
-
-.admin-btn.loading::after {
-    content: '';
-    position: absolute;
-    width: 16px;
-    height: 16px;
-    border: 2px solid transparent;
-    border-top: 2px solid currentColor;
-    border-radius: 50%;
-    animation: spin 1s linear infinite;
-    top: 50%;
-    left: 50%;
-    transform: translate(-50%, -50%);
-    color: white;
-}
-
-@keyframes spin {
-    0% { transform: translate(-50%, -50%) rotate(0deg); }
-    100% { transform: translate(-50%, -50%) rotate(360deg); }
-}
-
-@media (min-width: 768px) {
-    .admin-actions {
-        flex-direction: row;
-    }
-}
-
-
-
-.admin-actions {
-    display: flex;
-    gap: 12px;
-    margin-top: 16px;
-    justify-content: flex-start;
-    align-items: center;
-}
-
-.admin-btn {
-    display: inline-flex;
-    align-items: center;
-    gap: 8px;
-    padding: 10px 18px;
-    border: none;
-    border-radius: 25px;
-    font-family: inherit;
-    font-size: 14px;
-    font-weight: 500;
-    cursor: pointer;
-    transition: all 0.3s ease;
-    text-decoration: none;
-    outline: none;
-    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
-}
-
-.admin-btn:hover {
-    transform: translateY(-1px);
-    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15);
-}
-
-.admin-btn:active {
-    transform: translateY(0);
-    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
-}
-
-.admin-btn i {
-    font-size: 14px;
-    line-height: 1;
-}
-
-.admin-btn span {
-    line-height: 1;
-}
-
-.approve-btn {
-    background: linear-gradient(135deg, #4CAF50 0%, #45a049 100%);
-    color: white;
-}
-
-.approve-btn:hover {
-    background: linear-gradient(135deg, #45a049 0%, #3d8b40 100%);
-}
-
-.approve-btn:focus {
-    box-shadow: 0 0 0 3px rgba(76, 175, 80, 0.3);
-}
-
-.decline-btn {
-    background: linear-gradient(135deg, #f44336 0%, #d32f2f 100%);
-    color: white;
-}
-
-.decline-btn:hover {
-    background: linear-gradient(135deg, #d32f2f 0%, #c62828 100%);
-}
-
-.decline-btn:focus {
-    box-shadow: 0 0 0 3px rgba(244, 67, 54, 0.3);
-}
-
-.admin-btn.subtle {
-    background: #f8f9fa;
-    color: #6c757d;
-    border: 1px solid #e9ecef;
-}
-
-.admin-btn.subtle:hover {
-    background: #e9ecef;
-    color: #495057;
-    border-color: #dee2e6;
-}
-
-.approve-btn.subtle {
-    color: #28a745;
-    border-color: #28a745;
-}
-
-.approve-btn.subtle:hover {
-    background: #28a745;
-    color: white;
-}
-
-.decline-btn.subtle {
-    color: #dc3545;
-    border-color: #dc3545;
-}
-
-.decline-btn.subtle:hover {
-    background: #dc3545;
-    color: white;
-}
-
-@media (max-width: 768px) {
-    .admin-actions {
-        flex-direction: column;
-        gap: 8px;
-        width: 100%;
-    }
-    
-    .admin-btn {
-        width: 100%;
-        justify-content: center;
-        padding: 12px 18px;
-    }
-}
-
-.admin-btn:disabled {
-    opacity: 0.6;
-    cursor: not-allowed;
-    transform: none;
-}
-
-.admin-btn.loading {
-    position: relative;
-    color: transparent;
-}
-
-.admin-btn.loading::after {
-    content: "";
-    position: absolute;
-    top: 50%;
-    left: 50%;
-    margin-top: -8px;
-    margin-left: -8px;
-    width: 16px;
-    height: 16px;
-    border: 2px solid #ffffff;
-    border-radius: 50%;
-    border-top-color: transparent;
-    animation: spin 1s linear infinite;
-}
-
-@keyframes spin {
-    to {
-        transform: rotate(360deg);
-    }
-}
-
-
-
-
-
-    
-    
Index: NutriMatch/wwwroot/css/site.css
===================================================================
--- NutriMatch/wwwroot/css/site.css	(revision 5d48bf93fdd26aa14b8ae7ac68b61e5d60e3e2a8)
+++ NutriMatch/wwwroot/css/site.css	(revision 5d48bf93fdd26aa14b8ae7ac68b61e5d60e3e2a8)
@@ -0,0 +1,31 @@
+html {
+  font-size: 14px;
+}
+
+@media (min-width: 768px) {
+  html {
+    font-size: 16px;
+  }
+}
+
+.btn:focus, .btn:active:focus, .btn-link.nav-link:focus, .form-control:focus, .form-check-input:focus {
+  box-shadow: 0 0 0 0.1rem white, 0 0 0 0.25rem #258cfb;
+}
+
+html {
+  position: relative;
+  min-height: 100%;
+}
+
+body {
+  margin-bottom: 60px;
+}
+
+.form-floating > .form-control-plaintext::placeholder, .form-floating > .form-control::placeholder {
+  color: var(--bs-secondary-color);
+  text-align: end;
+}
+
+.form-floating > .form-control-plaintext:focus::placeholder, .form-floating > .form-control:focus::placeholder {
+  text-align: start;
+}
Index: triMatch/wwwroot/js/AdminIndex.js
===================================================================
--- NutriMatch/wwwroot/js/AdminIndex.js	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,1404 +1,0 @@
-document.addEventListener("DOMContentLoaded", function () {
-  setupBulkActions();
-  setupSearchFunctionality();
-  setupSortingFunctionality();
-  updateDisplayCount();
-});
-
-function setupBulkActions() {
-  const selectAllCheckbox = document.getElementById("selectAll");
-  const recipeCheckboxes = document.querySelectorAll(".recipe-checkbox");
-  const bulkApproveBtn = document.getElementById("bulkApprove");
-
-  selectAllCheckbox.addEventListener("change", function () {
-    recipeCheckboxes.forEach((checkbox) => {
-      checkbox.checked = this.checked;
-      toggleRecipeSelection(checkbox);
-    });
-    updateBulkActionButtons();
-  });
-
-  recipeCheckboxes.forEach((checkbox) => {
-    checkbox.addEventListener("change", function () {
-      toggleRecipeSelection(this);
-      updateBulkActionButtons();
-      updateSelectAllState();
-    });
-  });
-
-  bulkApproveBtn.addEventListener("click", handleBulkApprove);
-}
-
-function toggleRecipeSelection(checkbox) {
-  const recipeCard = checkbox.closest(".recipe-card");
-  if (checkbox.checked) {
-    recipeCard.classList.add("selected");
-  } else {
-    recipeCard.classList.remove("selected");
-  }
-}
-
-function updateBulkActionButtons() {
-  const selectedCheckboxes = document.querySelectorAll(
-    ".recipe-checkbox:checked"
-  );
-  const bulkApproveBtn = document.getElementById("bulkApprove");
-  const bulkActionsSection = document.getElementById("bulkActionsSection");
-
-  const hasSelections = selectedCheckboxes.length > 0;
-  bulkApproveBtn.disabled = !hasSelections;
-
-  if (hasSelections) {
-    bulkActionsSection.classList.add("show");
-  } else {
-    bulkActionsSection.classList.remove("show");
-  }
-}
-
-function updateSelectAllState() {
-  const selectAllCheckbox = document.getElementById("selectAll");
-  const recipeCheckboxes = document.querySelectorAll(".recipe-checkbox");
-  const checkedBoxes = document.querySelectorAll(".recipe-checkbox:checked");
-
-  if (checkedBoxes.length === 0) {
-    selectAllCheckbox.indeterminate = false;
-    selectAllCheckbox.checked = false;
-  } else if (checkedBoxes.length === recipeCheckboxes.length) {
-    selectAllCheckbox.indeterminate = false;
-    selectAllCheckbox.checked = true;
-  } else {
-    selectAllCheckbox.indeterminate = true;
-  }
-}
-
-function approveRecipe(recipeId) {
-  showLoadingOverlay();
-
-  const token = document.querySelector(
-    'input[name="__RequestVerificationToken"]'
-  ).value;
-
-  fetch("/Admin/ApproveRecipe", {
-    method: "POST",
-    headers: {
-      "Content-Type": "application/json",
-      RequestVerificationToken: token,
-    },
-    body: JSON.stringify({ recipeId: recipeId }),
-  })
-    .then((response) => response.json())
-    .then((data) => {
-      hideLoadingOverlay();
-      if (data.success) {
-        showSuccess("Recipe approved successfully!");
-        removeRecipeCard(recipeId);
-        hideRecipeDetails();
-      } else {
-        showError(data.message || "Failed to approve recipe");
-      }
-    })
-    .catch((error) => {
-      hideLoadingOverlay();
-      console.error("Error:", error);
-      showError("An error occurred while approving the recipe");
-    });
-}
-
-function declineRecipe(recipeId) {
-  fetch(`/Admin/DeclineReasonModel/${recipeId}`)
-    .then((response) => {
-      if (!response.ok) {
-        throw new Error("Failed to load decline modal");
-      }
-      return response.text();
-    })
-    .then((html) => {
-      const modalContainer = document.getElementById("declineModalContainer");
-      modalContainer.innerHTML = html;
-
-      const scripts = modalContainer.querySelectorAll("script");
-      scripts.forEach((script) => {
-        const newScript = document.createElement("script");
-        if (script.src) {
-          newScript.src = script.src;
-        } else {
-          newScript.textContent = script.textContent;
-        }
-        document.body.appendChild(newScript);
-        document.body.removeChild(newScript);
-      });
-
-      hideRecipeDetails();
-
-      const modalElement = modalContainer.querySelector("#recipeDeclineModal");
-      if (modalElement) {
-        const modal = new bootstrap.Modal(modalElement);
-        modal.show();
-      }
-    })
-    .catch((error) => {
-      console.error("Error loading decline modal:", error);
-      showError("Failed to load decline modal");
-    });
-}
-
-function cancelDecline(recipeId) {
-  const declineSection = document.getElementById(`declineReason_${recipeId}`);
-  const recipeCard = declineSection.closest(".recipe-card");
-
-  declineSection.style.display = "none";
-
-  const actionButtons = recipeCard.querySelectorAll(
-    ".admin-actions-buttons .btn"
-  );
-  actionButtons.forEach((btn) => {
-    btn.style.display = "";
-  });
-
-  document.getElementById(`declineSelect_${recipeId}`).value = "";
-  document.getElementById(`declineNotes_${recipeId}`).value = "";
-}
-
-function handleBulkApprove() {
-  const selectedRecipes = getSelectedRecipeIds();
-
-  if (selectedRecipes.length === 0) {
-    showError("No recipes selected");
-    return;
-  }
-
-  showLoadingOverlay();
-
-  const token = document.querySelector(
-    'input[name="__RequestVerificationToken"]'
-  ).value;
-
-  fetch("/Admin/BulkApproveRecipes", {
-    method: "POST",
-    headers: {
-      "Content-Type": "application/json",
-      RequestVerificationToken: token,
-    },
-    body: JSON.stringify({ recipeIds: selectedRecipes }),
-  })
-    .then((response) => response.json())
-    .then((data) => {
-      hideLoadingOverlay();
-
-      if (data.success) {
-        showSuccess(`${data.approvedCount} recipe(s) approved successfully!`);
-        selectedRecipes.forEach((recipeId) => removeRecipeCard(recipeId));
-      } else {
-        showError(data.message || "Failed to approve recipes");
-      }
-    })
-    .catch((error) => {
-      hideLoadingOverlay();
-      console.error("Error:", error);
-      showError("An error occurred during bulk approval");
-    });
-}
-
-function getSelectedRecipeIds() {
-  const selectedCheckboxes = document.querySelectorAll(
-    ".recipe-checkbox:checked"
-  );
-  return Array.from(selectedCheckboxes).map((checkbox) =>
-    parseInt(checkbox.dataset.recipeId)
-  );
-}
-
-function setupSearchFunctionality() {
-  const searchInput = document.getElementById("searchInput");
-  let searchTimeout;
-
-  searchInput.addEventListener("input", function () {
-    clearTimeout(searchTimeout);
-    searchTimeout = setTimeout(() => {
-      filterRecipes();
-    }, 300);
-  });
-}
-
-function filterRecipes() {
-  const searchTerm = document.getElementById("searchInput").value.toLowerCase();
-  const recipeCards = document.querySelectorAll(".recipe-card");
-  let visibleCount = 0;
-
-  recipeCards.forEach((card) => {
-    const title = card.querySelector(".recipe-title").textContent.toLowerCase();
-    const author = card
-      .querySelector(".recipe-meta span")
-      .textContent.toLowerCase();
-
-    const isVisible = title.includes(searchTerm) || author.includes(searchTerm);
-    card.style.display = isVisible ? "block" : "none";
-
-    if (isVisible) visibleCount++;
-  });
-
-  updateDisplayCount(visibleCount);
-}
-
-function setupSortingFunctionality() {
-  const sortFilter = document.getElementById("sortFilter");
-  sortFilter.addEventListener("change", function () {
-    sortRecipes(this.value);
-  });
-}
-
-function sortRecipes(sortBy) {
-  const recipeGrid = document.getElementById("recipeGrid");
-  const recipeCards = Array.from(recipeGrid.querySelectorAll(".recipe-card"));
-
-  recipeCards.sort((a, b) => {
-    switch (sortBy) {
-      case "newest":
-        return parseInt(b.dataset.recipeId) - parseInt(a.dataset.recipeId);
-      case "oldest":
-        return parseInt(a.dataset.recipeId) - parseInt(b.dataset.recipeId);
-      case "author":
-        const authorA = a
-          .querySelector(".recipe-meta span")
-          .textContent.toLowerCase();
-        const authorB = b
-          .querySelector(".recipe-meta span")
-          .textContent.toLowerCase();
-        return authorA.localeCompare(authorB);
-      case "calories":
-        return parseInt(a.dataset.calories) - parseInt(b.dataset.calories);
-      default:
-        return 0;
-    }
-  });
-
-  recipeCards.forEach((card) => recipeGrid.appendChild(card));
-}
-
-function showRecipeDetails(recipeId, isAdmin = false, recipeControl = "") {
-  currentRecipeId = recipeId;
-  const params = new URLSearchParams({
-    isOwner: true,
-    recipeDetailsDisplayContorol: recipeControl,
-  });
-
-  fetch(`/Recipes/Details/${recipeId}?${params}`)
-    .then((response) => {
-      if (!response.ok) {
-        throw new Error("Network response was not ok");
-      }
-      return response.text();
-    })
-    .then((html) => {
-      const modalContainer = document.getElementById("modalWindow");
-      modalContainer.innerHTML = html;
-
-      const existingScripts = document.querySelectorAll(
-        "script[data-recipe-modal]"
-      );
-      existingScripts.forEach((script) => script.remove());
-
-      const scripts = modalContainer.querySelectorAll("script");
-      scripts.forEach((script) => {
-        const newScript = document.createElement("script");
-        newScript.setAttribute("data-recipe-modal", "true");
-
-        if (script.src) {
-          newScript.src = script.src;
-        } else {
-          newScript.textContent = `
-            (function() {
-                ${script.textContent}
-            })();
-        `;
-        }
-        document.body.appendChild(newScript);
-        document.body.removeChild(newScript);
-      });
-
-      const modalElement = modalContainer.querySelector(".modal");
-      if (modalElement) {
-        const modal = new bootstrap.Modal(modalElement);
-        modal.show();
-
-        modalElement.addEventListener("hidden.bs.modal", function () {
-          modalContainer.innerHTML = "";
-          if (typeof clickedCard !== "undefined") {
-            clickedCard.classList.remove("loading");
-          }
-        });
-
-        modalElement.addEventListener("shown.bs.modal", function () {
-          if (typeof clickedCard !== "undefined") {
-            clickedCard.classList.remove("loading");
-          }
-        });
-      } else {
-        if (typeof clickedCard !== "undefined") {
-          clickedCard.classList.remove("loading");
-        }
-      }
-    })
-    .catch((err) => {
-      console.error("Failed to fetch recipe details", err);
-      showError("Failed to load recipe details. Please try again.");
-      if (typeof clickedCard !== "undefined") {
-        clickedCard.classList.remove("loading");
-      }
-    });
-}
-
-function removeRecipeCard(recipeId) {
-  const recipeCard = document.querySelector(`[data-recipe-id="${recipeId}"]`);
-  if (recipeCard) {
-    recipeCard.classList.add("removing");
-    setTimeout(() => {
-      recipeCard.remove();
-      updateDisplayCount();
-      updateBulkActionButtons();
-      updateSelectAllState();
-
-      if (document.querySelectorAll(".recipe-card").length === 0) {
-        location.reload();
-      }
-    }, 500);
-  }
-}
-
-function updateDisplayCount(count = null) {
-  const displayCountElement = document.getElementById("displayCount");
-  if (count === null) {
-    count = document.querySelectorAll(
-      '.recipe-card:not([style*="display: none"])'
-    ).length;
-  }
-  displayCountElement.textContent = count;
-}
-
-function showLoadingOverlay() {
-  document.getElementById("loadingOverlay").style.display = "flex";
-}
-
-function hideLoadingOverlay() {
-  document.getElementById("loadingOverlay").style.display = "none";
-}
-
-function createToast(message, type = "info") {
-  const toastContainer =
-    document.getElementById("toast-container") || createToastContainer();
-
-  const toastId = "toast-" + Date.now();
-  const toast = document.createElement("div");
-  toast.id = toastId;
-  toast.className = `toast align-items-center text-white bg-${type} border-0`;
-  toast.setAttribute("role", "alert");
-  toast.setAttribute("aria-live", "assertive");
-  toast.setAttribute("aria-atomic", "true");
-
-  const iconMap = {
-    success: "fas fa-check-circle",
-    danger: "fas fa-exclamation-circle",
-    warning: "fas fa-exclamation-triangle",
-    info: "fas fa-info-circle",
-  };
-
-  toast.innerHTML = `
-    <div class="d-flex">
-        <div class="toast-body">
-            <i class="${iconMap[type] || iconMap.info} me-2"></i>
-            ${message}
-        </div>
-        <button type="button" class="btn-close btn-close-white me-2 m-auto" onclick="removeToast('${toastId}')"></button>
-    </div>
-`;
-
-  toastContainer.appendChild(toast);
-
-  toast.style.display = "block";
-  setTimeout(() => {
-    toast.classList.add("show");
-  }, 100);
-
-  setTimeout(() => {
-    removeToast(toastId);
-  }, 5000);
-}
-
-function removeToast(toastId) {
-  const toast = document.getElementById(toastId);
-  if (toast) {
-    toast.classList.remove("show");
-    setTimeout(() => {
-      if (toast.parentNode) {
-        toast.remove();
-      }
-    }, 300);
-  }
-}
-
-function createToastContainer() {
-  const container = document.createElement("div");
-  container.id = "toast-container";
-  container.className = "toast-container position-fixed top-0 end-0 p-3";
-  container.style.zIndex = "10000";
-  document.body.appendChild(container);
-  return container;
-}
-
-function showSuccess(message) {
-  createToast(message, "success");
-}
-
-function showError(message) {
-  createToast(message, "danger");
-}
-
-function showWarning(message) {
-  createToast(message, "warning");
-}
-
-function showInfo(message) {
-  createToast(message, "info");
-}
-
-function showConfirmation(message, onConfirm, onCancel = null) {
-  const toastContainer =
-    document.getElementById("toast-container") || createToastContainer();
-
-  const toastId = "toast-confirm-" + Date.now();
-  const toast = document.createElement("div");
-  toast.id = toastId;
-  toast.className = "toast align-items-center text-white bg-warning border-0";
-  toast.setAttribute("role", "alert");
-  toast.setAttribute("aria-live", "assertive");
-  toast.setAttribute("aria-atomic", "true");
-  toast.style.minWidth = "350px";
-
-  toast.innerHTML = `
-    <div class="d-flex flex-column p-2">
-        <div class="toast-body mb-2">
-            <i class="fas fa-question-circle me-2"></i>
-            ${message}
-        </div>
-        <div class="d-flex gap-2 px-2 pb-2">
-            <button type="button" class="btn btn-sm btn-light flex-grow-1" onclick="confirmAction('${toastId}', true)">
-                <i class="fas fa-check me-1"></i>Yes
-            </button>
-            <button type="button" class="btn btn-sm btn-secondary flex-grow-1" onclick="confirmAction('${toastId}', false)">
-                <i class="fas fa-times me-1"></i>No
-            </button>
-        </div>
-    </div>
-  `;
-
-  toastContainer.appendChild(toast);
-
-  toast.style.display = "block";
-  setTimeout(() => {
-    toast.classList.add("show");
-  }, 100);
-
-  window[`confirmCallback_${toastId}`] = { onConfirm, onCancel };
-
-  setTimeout(() => {
-    removeToast(toastId);
-    if (window[`confirmCallback_${toastId}`]) {
-      delete window[`confirmCallback_${toastId}`];
-    }
-  }, 10000);
-}
-
-function confirmAction(toastId, confirmed) {
-  const callbacks = window[`confirmCallback_${toastId}`];
-
-  if (callbacks) {
-    if (confirmed && callbacks.onConfirm) {
-      callbacks.onConfirm();
-    } else if (!confirmed && callbacks.onCancel) {
-      callbacks.onCancel();
-    }
-    delete window[`confirmCallback_${toastId}`];
-  }
-
-  removeToast(toastId);
-}
-
-function refreshPendingRecipes() {
-  showLoadingOverlay();
-  location.reload();
-}
-
-document.addEventListener("keydown", function (e) {
-  if (e.key === "Escape") {
-    closeModal();
-  }
-});
-
-console.log("Admin Panel initialized successfully");
-
-function hideRecipeDetails() {
-  const modalWindow = document.getElementById("modalWindow");
-  const recipeDetailsModal = modalWindow?.querySelector(".modal");
-  if (recipeDetailsModal) {
-    const modalInstance = bootstrap.Modal.getInstance(recipeDetailsModal);
-    if (modalInstance) {
-      modalInstance.hide();
-    }
-  }
-}
-
-let currentRecipeId = null;
-
-window.viewIngredientReview = async function (ingredientId) {
-  console.log("Global viewIngredientReview called with ID:", ingredientId);
-
-  const recipeModal = document.getElementById("recipeModal");
-  if (recipeModal) {
-    const recipeModalInstance = bootstrap.Modal.getInstance(recipeModal);
-    if (recipeModalInstance) {
-      recipeModalInstance.hide();
-    }
-  }
-
-  setTimeout(async () => {
-    const modal = document.getElementById("ingredientReviewModal");
-    const content = document.getElementById("ingredientReviewContent");
-
-    if (!modal || !content) {
-      console.error("Modal or content container not found");
-      showError("Modal components not found");
-      return;
-    }
-
-    try {
-      content.innerHTML = `
-        <div class="text-center p-4">
-            <div class="spinner-border text-primary" role="status">
-                <span class="visually-hidden">Loading...</span>
-            </div>
-            <p class="mt-2">Loading ingredient details...</p>
-        </div>
-    `;
-
-      const bootstrapModal = new bootstrap.Modal(modal);
-      bootstrapModal.show();
-
-      const response = await fetch(
-        `/Admin/GetIngredientReview/${ingredientId}`,
-        {
-          method: "GET",
-          headers: {
-            "Content-Type": "application/json",
-            "X-Requested-With": "XMLHttpRequest",
-          },
-        }
-      );
-
-      if (response.ok) {
-        const html = await response.text();
-        content.innerHTML = html;
-      } else {
-        content.innerHTML = `
-            <div class="alert alert-danger">
-                <h6>Error ${response.status}</h6>
-                <p>Failed to load ingredient details.</p>
-            </div>
-        `;
-      }
-    } catch (error) {
-      console.error("Error:", error);
-      content.innerHTML = `
-        <div class="alert alert-danger">
-            <h6>Connection Error</h6>
-            <p>${error.message}</p>
-        </div>
-    `;
-    }
-  }, 300);
-};
-
-function showRecipeModal() {
-  if (currentRecipeId) {
-    showRecipeDetails(currentRecipeId, true, "Buttons");
-  } else {
-    console.error("No recipe ID stored - cannot restore recipe modal");
-  }
-}
-
-function showNotification(message, type) {
-  if (type === "error") {
-    showError(message);
-  } else if (type === "success") {
-    showSuccess(message);
-  } else if (type === "warning") {
-    showWarning(message);
-  } else {
-    showInfo(message);
-  }
-}
-
-function openMealTagsModal() {
-  fetch("/Admin/GetMealTagsPartial")
-    .then((response) => response.text())
-    .then((html) => {
-      document.getElementById("mealTagsModalContainer").innerHTML = html;
-      const modal = new bootstrap.Modal(
-        document.getElementById("mealTagsModal")
-      );
-      modal.show();
-      setTimeout(() => {
-        loadMealKeywords();
-      }, 100);
-    })
-    .catch((error) => {
-      console.error("Error loading meal tags modal:", error);
-      showError("Error loading meal tags");
-    });
-}
-
-function openRestaurantMealsModal() {
-  fetch("/Admin/GetRestaurantMealsPartial")
-    .then((response) => response.text())
-    .then((html) => {
-      document.getElementById("restaurantMealsModalContainer").innerHTML = html;
-      const modal = new bootstrap.Modal(
-        document.getElementById("restaurantMealsModal")
-      );
-      modal.show();
-      setTimeout(() => {
-        loadRestaurants();
-      }, 100);
-    })
-    .catch((error) => {
-      console.error("Error loading restaurant meals modal:", error);
-      showError("Error loading restaurant meals");
-    });
-}
-
-function loadMealKeywords() {
-  const container = document.getElementById("mealKeywordsList");
-  if (!container) {
-    console.error("mealKeywordsList container not found");
-    return;
-  }
-
-  container.innerHTML = `
-        <div class="text-center py-4">
-            <div class="spinner-border text-primary" role="status">
-                <span class="visually-hidden">Loading...</span>
-            </div>
-        </div>
-    `;
-
-  fetch("/Admin/GetMealKeywords")
-    .then((response) => {
-      if (!response.ok) {
-        throw new Error("Network response was not ok");
-      }
-      return response.json();
-    })
-    .then((data) => {
-      console.log("Loaded keywords:", data);
-      displayMealKeywords(data);
-    })
-    .catch((error) => {
-      console.error("Error loading meal keywords:", error);
-      container.innerHTML =
-        '<p class="text-danger text-center">Error loading keywords. Please try again.</p>';
-      showError("Error loading meal keywords");
-    });
-}
-
-function displayMealKeywords(keywords) {
-  const container = document.getElementById("mealKeywordsList");
-  if (!container) return;
-
-  if (!keywords || keywords.length === 0) {
-    container.innerHTML =
-      '<p class="text-muted text-center py-4">No keywords found. Add your first keyword above!</p>';
-    return;
-  }
-
-  const grouped = keywords.reduce((acc, keyword) => {
-    if (!acc[keyword.tag]) {
-      acc[keyword.tag] = [];
-    }
-    acc[keyword.tag].push(keyword);
-    return acc;
-  }, {});
-
-  let html = "";
-  const tagOrder = ["breakfast", "main", "snack"];
-
-  tagOrder.forEach((tag) => {
-    const items = grouped[tag];
-    if (items && items.length > 0) {
-      html += `
-                <div class="tag-group mb-4">
-                    <h5 class="tag-header">
-                        <span class="badge bg-primary">${
-                          tag.charAt(0).toUpperCase() + tag.slice(1)
-                        }</span>
-                    </h5>
-                    <div class="keyword-list">
-                        ${items
-                          .map(
-                            (item) => `
-                            <div class="keyword-item">
-                                <span class="keyword-name">${item.name}</span>
-                                <button class="btn btn-sm btn-outline-danger" onclick="deleteMealKeyword(${
-                                  item.id
-                                }, '${item.name.replace(/'/g, "\\'")}')">
-                                    <i class="fas fa-trash"></i>
-                                </button>
-                            </div>
-                        `
-                          )
-                          .join("")}
-                    </div>
-                </div>
-            `;
-    }
-  });
-
-  if (html === "") {
-    container.innerHTML =
-      '<p class="text-muted text-center py-4">No keywords found. Add your first keyword above!</p>';
-  } else {
-    container.innerHTML = html;
-  }
-}
-
-function addMealKeyword() {
-  const nameInput = document.getElementById("newKeywordName");
-  const tagSelect = document.getElementById("newKeywordTag");
-
-  if (!nameInput || !tagSelect) {
-    console.error("Form elements not found");
-    return;
-  }
-
-  const name = nameInput.value.trim();
-  const tag = tagSelect.value;
-
-  if (!name) {
-    showError("Please enter a keyword name");
-    return;
-  }
-
-  const token = document.querySelector(
-    'input[name="__RequestVerificationToken"]'
-  ).value;
-
-  fetch("/Admin/AddMealKeyword", {
-    method: "POST",
-    headers: {
-      "Content-Type": "application/json",
-      RequestVerificationToken: token,
-    },
-    body: JSON.stringify({ name: name, tag: tag }),
-  })
-    .then((response) => response.json())
-    .then((data) => {
-      if (data.success) {
-        showSuccess("Keyword added successfully");
-        nameInput.value = "";
-        loadMealKeywords();
-      } else {
-        showError(data.message || "Error adding keyword");
-      }
-    })
-    .catch((error) => {
-      console.error("Error adding keyword:", error);
-      showError("Error adding keyword");
-    });
-}
-
-function deleteMealKeyword(id, name) {
-  const token = document.querySelector(
-    'input[name="__RequestVerificationToken"]'
-  ).value;
-
-  fetch(`/Admin/DeleteMealKeyword/${id}`, {
-    method: "DELETE",
-    headers: {
-      RequestVerificationToken: token,
-    },
-  })
-    .then((response) => response.json())
-    .then((data) => {
-      if (data.success) {
-        showError("Keyword deleted");
-        loadMealKeywords();
-      } else {
-        showError(data.message || "Error deleting keyword");
-      }
-    })
-    .catch((error) => {
-      console.error("Error deleting keyword:", error);
-      showError("Error deleting keyword");
-    });
-}
-
-function loadRestaurants() {
-  const select = document.getElementById("restaurantSelect");
-  if (!select) {
-    console.error("restaurantSelect not found");
-    return;
-  }
-
-  select.innerHTML = '<option value="">Loading restaurants...</option>';
-
-  fetch("/Admin/GetRestaurants")
-    .then((response) => {
-      if (!response.ok) {
-        throw new Error("Network response was not ok");
-      }
-      return response.json();
-    })
-    .then((data) => {
-      console.log("Loaded restaurants:", data);
-      if (data && data.length > 0) {
-        select.innerHTML =
-          '<option value="">Select a restaurant...</option>' +
-          data
-            .map((r) => `<option value="${r.id}">${r.name}</option>`)
-            .join("");
-      } else {
-        select.innerHTML = '<option value="">No restaurants found</option>';
-      }
-    })
-    .catch((error) => {
-      console.error("Error loading restaurants:", error);
-      select.innerHTML = '<option value="">Error loading restaurants</option>';
-      showError("Error loading restaurants");
-    });
-}
-
-function loadRestaurantMeals(restaurantId) {
-  const container = document.getElementById("restaurantMealsList");
-  const addMealBtn = document.getElementById("showAddMealBtn");
-  const editRestaurantBtn = document.getElementById("editRestaurantBtn");
-  const deleteRestaurantBtn = document.getElementById("deleteRestaurantBtn");
-
-  if (!container) {
-    console.error("restaurantMealsList container not found");
-    return;
-  }
-
-  if (!restaurantId) {
-    container.innerHTML =
-      '<p class="text-muted text-center">Please select a restaurant</p>';
-    if (addMealBtn) addMealBtn.style.display = "none";
-    if (editRestaurantBtn) editRestaurantBtn.style.display = "none";
-    if (deleteRestaurantBtn) deleteRestaurantBtn.style.display = "none";
-    return;
-  }
-
-  if (addMealBtn) addMealBtn.style.display = "block";
-  if (editRestaurantBtn) editRestaurantBtn.style.display = "block";
-  if (deleteRestaurantBtn) deleteRestaurantBtn.style.display = "block";
-
-  container.innerHTML = `
-        <div class="text-center py-4">
-            <div class="spinner-border text-success" role="status">
-                <span class="visually-hidden">Loading...</span>
-            </div>
-        </div>
-    `;
-
-  fetch(`/Admin/GetRestaurantMeals/${restaurantId}`)
-    .then((response) => {
-      if (!response.ok) {
-        throw new Error("Network response was not ok");
-      }
-      return response.json();
-    })
-    .then((data) => {
-      console.log("Loaded meals:", data);
-      displayRestaurantMeals(data);
-    })
-    .catch((error) => {
-      console.error("Error loading meals:", error);
-      container.innerHTML =
-        '<p class="text-danger text-center">Error loading meals. Please try again.</p>';
-      showError("Error loading meals");
-    });
-}
-
-function displayRestaurantMeals(meals) {
-  const container = document.getElementById("restaurantMealsList");
-
-  if (meals.length === 0) {
-    container.innerHTML =
-      '<p class="text-muted text-center">No meals found for this restaurant</p>';
-    return;
-  }
-
-  let html = '<div class="meals-grid">';
-  meals.forEach((meal) => {
-    html += `
-            <div class="meal-card">
-                <div class="d-flex justify-content-between align-items-start">
-                    <div class="flex-grow-1">
-                        <h6 class="meal-name">${meal.itemName}</h6>
-                        <p class="meal-description text-muted small">${
-                          meal.itemDescription || "No description"
-                        }</p>
-                        <div class="meal-macros mt-2">
-                            <small>
-                                <strong>${meal.calories}</strong> cal | 
-                                <strong>${meal.protein}g</strong> protein | 
-                                <strong>${meal.carbs}g</strong> carbs | 
-                                <strong>${meal.fat}g</strong> fat
-                            </small>
-                        </div>
-                    </div>
-                    <button class="btn btn-sm btn-outline-primary me-2" 
-                            onclick="editRestaurantMeal(${meal.id})">
-                        <i class="fas fa-edit"></i>
-                    </button>
-                    <button class="btn btn-sm btn-outline-danger" onclick="deleteRestaurantMeal(${
-                      meal.id
-                    }, '${meal.itemName.replace(/'/g, "\\'")}')">
-                        <i class="fas fa-trash"></i>
-                    </button>
-                </div>
-            </div>
-        `;
-  });
-  html += "</div>";
-
-  container.innerHTML = html;
-}
-
-function showAddMealForm() {
-  document.getElementById("addMealFormSection").style.display = "block";
-  document.getElementById("showAddMealBtn").style.display = "none";
-  document.getElementById("addMealFormTitle").innerHTML =
-    '<i class="fas fa-plus-circle me-2"></i>Add New Meal';
-
-  const btn = document.querySelector("#addMealForm button.btn-success");
-  btn.innerHTML = '<i class="fas fa-check me-2"></i>Add Meal';
-  btn.setAttribute("onclick", "addRestaurantMeal()");
-}
-
-function cancelAddMeal() {
-  document.getElementById("addMealFormSection").style.display = "none";
-  document.getElementById("showAddMealBtn").style.display = "block";
-  document.getElementById("addMealForm").reset();
-  document.getElementById("editMealId").value = "";
-}
-
-function addRestaurantMeal() {
-  const restaurantId = document.getElementById("restaurantSelect").value;
-
-  if (!restaurantId) {
-    showError("Please select a restaurant first");
-    return;
-  }
-
-  const mealData = {
-    restaurantId: parseInt(restaurantId),
-    itemName: document.getElementById("mealItemName").value.trim(),
-    itemDescription: document
-      .getElementById("mealItemDescription")
-      .value.trim(),
-    type: [],
-    calories: parseFloat(document.getElementById("mealCalories").value),
-    protein: parseFloat(document.getElementById("mealProtein").value),
-    carbs: parseFloat(document.getElementById("mealCarbs").value),
-    fat: parseFloat(document.getElementById("mealFat").value),
-  };
-
-  if (!mealData.itemName) {
-    showError("Please enter a meal name");
-    return;
-  }
-
-  const token = document.querySelector(
-    'input[name="__RequestVerificationToken"]'
-  ).value;
-
-  fetch("/Admin/AddRestaurantMeal", {
-    method: "POST",
-    headers: {
-      "Content-Type": "application/json",
-      RequestVerificationToken: token,
-    },
-    body: JSON.stringify(mealData),
-  })
-    .then((response) => response.json())
-    .then((data) => {
-      if (data.success) {
-        showSuccess("Meal added successfully");
-        cancelAddMeal();
-        loadRestaurantMeals(restaurantId);
-      } else {
-        showError(data.message || "Error adding meal");
-      }
-    })
-    .catch((error) => {
-      console.error("Error adding meal:", error);
-      showError("Error adding meal");
-    });
-}
-
-function deleteRestaurantMeal(id, name) {
-  const token = document.querySelector(
-    'input[name="__RequestVerificationToken"]'
-  ).value;
-  const restaurantId = document.getElementById("restaurantSelect").value;
-
-  fetch(`/Admin/DeleteRestaurantMeal/${id}`, {
-    method: "DELETE",
-    headers: {
-      RequestVerificationToken: token,
-    },
-  })
-    .then((response) => response.json())
-    .then((data) => {
-      if (data.success) {
-        showError("Meal deleted");
-        loadRestaurantMeals(restaurantId);
-      } else {
-        showError(data.message || "Error deleting meal");
-      }
-    })
-    .catch((error) => {
-      console.error("Error deleting meal:", error);
-      showError("Error deleting meal");
-    });
-}
-
-function editRestaurantMeal(id) {
-  const restaurantId = document.getElementById("restaurantSelect").value;
-
-  fetch(`/Admin/GetRestaurantMeals/${restaurantId}`)
-    .then((res) => res.json())
-    .then((meals) => {
-      const meal = meals.find((m) => m.id === id);
-      if (!meal) {
-        showError("Meal not found");
-        return;
-      }
-
-      document.getElementById("editMealId").value = meal.id;
-      document.getElementById("mealItemName").value = meal.itemName;
-      document.getElementById("mealItemDescription").value =
-        meal.itemDescription || "";
-      document.getElementById("mealCalories").value = meal.calories;
-      document.getElementById("mealProtein").value = meal.protein;
-      document.getElementById("mealCarbs").value = meal.carbs;
-      document.getElementById("mealFat").value = meal.fat;
-
-
-      document.getElementById("addMealFormSection").style.display = "block";
-      document.getElementById("showAddMealBtn").style.display = "none";
-      document.getElementById("addMealFormTitle").innerHTML =
-        '<i class="fas fa-edit me-2"></i>Edit Meal';
-
-      const btn = document.querySelector("#addMealForm button.btn-success");
-      btn.innerHTML = '<i class="fas fa-save me-2"></i>Update Meal';
-      btn.setAttribute("onclick", "updateRestaurantMeal()");
-    })
-    .catch((err) => {
-      console.error("Error fetching meals:", err);
-      showError("Error loading meals");
-    });
-}
-
-function updateRestaurantMeal() {
-  const restaurantId = document.getElementById("restaurantSelect").value;
-  const id = parseInt(document.getElementById("editMealId").value);
-
-  const mealData = {
-    id: id,
-    restaurantId: parseInt(restaurantId),
-    itemName: document.getElementById("mealItemName").value.trim(),
-    itemDescription: document
-      .getElementById("mealItemDescription")
-      .value.trim(),
-    type: [],
-    calories: parseFloat(document.getElementById("mealCalories").value),
-    protein: parseFloat(document.getElementById("mealProtein").value),
-    carbs: parseFloat(document.getElementById("mealCarbs").value),
-    fat: parseFloat(document.getElementById("mealFat").value),
-  };
-
-  const token = document.querySelector(
-    'input[name="__RequestVerificationToken"]'
-  ).value;
-
-  fetch("/Admin/EditRestaurantMeal", {
-    method: "POST",
-    headers: {
-      "Content-Type": "application/json",
-      RequestVerificationToken: token,
-    },
-    body: JSON.stringify(mealData),
-  })
-    .then((res) => res.json())
-    .then((data) => {
-      if (data.success) {
-        showSuccess("Meal updated successfully");
-        cancelAddMeal();
-        loadRestaurantMeals(restaurantId);
-      } else {
-        showError(data.message || "Error updating meal");
-      }
-    })
-    .catch((err) => {
-      console.error("Error updating meal:", err);
-      showError("Error updating meal");
-    });
-}
-
-function showAddRestaurantForm() {
-  document.getElementById("addRestaurantFormSection").style.display = "block";
-  document.getElementById("addMealFormSection").style.display = "none";
-  document.getElementById("showAddMealBtn").style.display = "none";
-  document.getElementById("editRestaurantBtn").style.display = "none";
-  document.getElementById("deleteRestaurantBtn").style.display = "none";
-  document.getElementById("restaurantFormTitle").innerHTML =
-    '<i class="fas fa-store-alt me-2"></i>Add New Restaurant';
-
-  const btn = document.querySelector("#addRestaurantForm button.btn-success");
-  btn.innerHTML = '<i class="fas fa-check me-2"></i>Add Restaurant';
-  btn.setAttribute("onclick", "addRestaurant()");
-
-  document.getElementById("editRestaurantId").value = "";
-  document.getElementById("addRestaurantForm").reset();
-  document.getElementById("imagePreview").style.display = "none";
-}
-
-function cancelAddRestaurant() {
-  document.getElementById("addRestaurantFormSection").style.display = "none";
-  document.getElementById("addRestaurantForm").reset();
-  document.getElementById("editRestaurantId").value = "";
-  document.getElementById("imagePreview").style.display = "none";
-
-  const restaurantId = document.getElementById("restaurantSelect").value;
-  if (restaurantId) {
-    document.getElementById("showAddMealBtn").style.display = "block";
-    document.getElementById("editRestaurantBtn").style.display = "block";
-    document.getElementById("deleteRestaurantBtn").style.display = "block";
-  }
-}
-
-function previewImage() {
-  const fileInput = document.getElementById("restaurantImage");
-  const preview = document.getElementById("imagePreview");
-  const previewImg = document.getElementById("previewImg");
-
-  if (fileInput.files && fileInput.files[0]) {
-    const reader = new FileReader();
-
-    reader.onload = function (e) {
-      previewImg.src = e.target.result;
-      preview.style.display = "block";
-    };
-
-    reader.readAsDataURL(fileInput.files[0]);
-  }
-}
-
-function addRestaurant() {
-  const name = document.getElementById("restaurantName").value.trim();
-  const description = document
-    .getElementById("restaurantDescription")
-    .value.trim();
-  const imageFile = document.getElementById("restaurantImage").files[0];
-
-  if (!name) {
-    showError("Please enter a restaurant name");
-    return;
-  }
-
-  if (!imageFile) {
-    showError("Please select an image");
-    return;
-  }
-
-  const token = document.querySelector(
-    'input[name="__RequestVerificationToken"]'
-  ).value;
-  const formData = new FormData();
-  formData.append("name", name);
-  formData.append("description", description);
-  formData.append("image", imageFile);
-
-  fetch("/Admin/AddRestaurant", {
-    method: "POST",
-    headers: {
-      RequestVerificationToken: token,
-    },
-    body: formData,
-  })
-    .then((response) => response.json())
-    .then((data) => {
-      if (data.success) {
-        showSuccess("Restaurant added successfully");
-
-        cancelAddRestaurant();
-        loadRestaurants();
-
-        setTimeout(() => {
-          showAddMealForm();
-
-          const select = document.getElementById("restaurantSelect");
-          select.value = data.restaurantId;
-        }, 500);
-      } else {
-        showError(data.message || "Error adding restaurant");
-      }
-    })
-    .catch((error) => {
-      console.error("Error adding restaurant:", error);
-      showError("Error adding restaurant");
-    });
-}
-
-function showEditRestaurantForm() {
-  const restaurantId = document.getElementById("restaurantSelect").value;
-  if (!restaurantId) {
-    showError("Please select a restaurant");
-    return;
-  }
-
-  fetch(`/Admin/GetRestaurant/${restaurantId}`)
-    .then((response) => response.json())
-    .then((restaurant) => {
-      document.getElementById("editRestaurantId").value = restaurant.id;
-      document.getElementById("restaurantName").value = restaurant.name;
-      document.getElementById("restaurantDescription").value =
-        restaurant.description || "";
-
-      if (restaurant.imageUrl) {
-        const previewImg = document.getElementById("previewImg");
-        previewImg.src = restaurant.imageUrl;
-        document.getElementById("imagePreview").style.display = "block";
-      }
-
-      document.getElementById("addRestaurantFormSection").style.display =
-        "block";
-      document.getElementById("addMealFormSection").style.display = "none";
-      document.getElementById("showAddMealBtn").style.display = "none";
-      document.getElementById("editRestaurantBtn").style.display = "none";
-      document.getElementById("deleteRestaurantBtn").style.display = "none";
-      document.getElementById("restaurantFormTitle").innerHTML =
-        '<i class="fas fa-edit me-2"></i>Edit Restaurant';
-
-      const btn = document.querySelector(
-        "#addRestaurantForm button.btn-success"
-      );
-      btn.innerHTML = '<i class="fas fa-save me-2"></i>Update Restaurant';
-      btn.setAttribute("onclick", "updateRestaurant()");
-    })
-    .catch((error) => {
-      console.error("Error loading restaurant:", error);
-      showError("Error loading restaurant");
-    });
-}
-
-function updateRestaurant() {
-  const id = parseInt(document.getElementById("editRestaurantId").value);
-  const name = document.getElementById("restaurantName").value.trim();
-  const description = document
-    .getElementById("restaurantDescription")
-    .value.trim();
-  const imageFile = document.getElementById("restaurantImage").files[0];
-
-  if (!name) {
-    showError("Please enter a restaurant name");
-    return;
-  }
-
-  const token = document.querySelector(
-    'input[name="__RequestVerificationToken"]'
-  ).value;
-  const formData = new FormData();
-  formData.append("id", id);
-  formData.append("name", name);
-  formData.append("description", description);
-  if (imageFile) {
-    formData.append("image", imageFile);
-  }
-
-  fetch("/Admin/EditRestaurant", {
-    method: "POST",
-    headers: {
-      RequestVerificationToken: token,
-    },
-    body: formData,
-  })
-    .then((response) => response.json())
-    .then((data) => {
-      if (data.success) {
-        showSuccess("Restaurant updated successfully");
-        cancelAddRestaurant();
-        loadRestaurants();
-
-        setTimeout(() => {
-          const select = document.getElementById("restaurantSelect");
-          select.value = id;
-          loadRestaurantMeals(id);
-        }, 500);
-      } else {
-        showError(data.message || "Error updating restaurant");
-      }
-    })
-    .catch((error) => {
-      console.error("Error updating restaurant:", error);
-      showError("Error updating restaurant");
-    });
-}
-
-function deleteRestaurant() {
-  const restaurantId = document.getElementById("restaurantSelect").value;
-  if (!restaurantId) {
-    showError("Please select a restaurant");
-    return;
-  }
-
-  const token = document.querySelector(
-    'input[name="__RequestVerificationToken"]'
-  ).value;
-
-  fetch(`/Admin/DeleteRestaurant/${restaurantId}`, {
-    method: "POST",
-    headers: {
-      "Content-Type": "application/json",
-      RequestVerificationToken: token,
-    },
-  })
-    .then((response) => response.json())
-    .then((data) => {
-      if (data.success) {
-        showError(data.message || "Restaurant deleted");
-
-        const restaurantSelect = document.getElementById("restaurantSelect");
-        restaurantSelect.remove(restaurantSelect.selectedIndex);
-        restaurantSelect.value = "";
-
-        document.getElementById("addRestaurantFormSection").style.display =
-          "none";
-        document.getElementById("addMealFormSection").style.display = "none";
-        document.getElementById("editRestaurantBtn").style.display = "none";
-        document.getElementById("deleteRestaurantBtn").style.display = "none";
-        document.getElementById("showAddMealBtn").style.display = "none";
-
-        const mealsContainer = document.getElementById("restaurantMealsList");
-        if (mealsContainer) {
-          mealsContainer.innerHTML =
-            '<p class="text-muted text-center">Please select a restaurant</p>';
-        }
-      } else {
-        showError(data.message || "Error deleting restaurant");
-      }
-    })
-    .catch((error) => {
-      console.error("Error deleting restaurant:", error);
-      showError("Error deleting restaurant");
-    });
-}
Index: triMatch/wwwroot/js/MealPlanDetails.js
===================================================================
--- NutriMatch/wwwroot/js/MealPlanDetails.js	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,216 +1,0 @@
-document.addEventListener('DOMContentLoaded', function () {
-        const regeneratedMeals = document.querySelectorAll('.meal-card[data-is-regenerated="true"][data-is-viewed="false"]');
-
-        if (regeneratedMeals.length > 0) {
-            const mealIds = Array.from(regeneratedMeals).map(card => parseInt(card.dataset.mealId));
-
-            fetch('@Url.Action("MarkMealsAsViewed", "MealPlan")', {
-                method: 'POST',
-                headers: {
-                    'Content-Type': 'application/json',
-                    'RequestVerificationToken': document.querySelector('input[name="__RequestVerificationToken"]').value
-                },
-                body: JSON.stringify(mealIds)
-            })
-                .then(response => response.json())
-                .then(data => {
-                    if (data.success) {
-                        console.log('Regenerated meals marked as viewed');
-
-                        regeneratedMeals.forEach(card => {
-                            card.dataset.isViewed = 'true';
-                            const indicator = card.querySelector('.regenerated-indicator');
-                            if (indicator) {
-                                indicator.classList.add('fade-out');
-                                setTimeout(() => {
-                                    indicator.remove();
-                                }, 300);
-                            }
-                        });
-                    }
-                })
-                .catch(error => {
-                    console.error('Error marking meals as viewed:', error);
-                });
-        }
-
-        const cards = document.querySelectorAll('.day-card');
-        cards.forEach((card, index) => {
-            card.style.animationDelay = `${index * 0.1}s`;
-        });
-    });
-
-
-
-
-    function regenerateMeal(event, mealSlotId, mealPlanId) {
-        event.stopPropagation();
-        const btn = event.currentTarget;
-        const card = btn.closest('.meal-card');
-        btn.disabled = true;
-        btn.classList.add('loading');
-        btn.innerHTML = '<i class="fas fa-sync-alt"></i> Regenerating...';
-        
-        const formData = new FormData();
-        formData.append('mealSlotId', mealSlotId);
-        formData.append('mealPlanId', mealPlanId);
-        formData.append('__RequestVerificationToken', document.querySelector('input[name="__RequestVerificationToken"]').value);
-        
-        fetch('/MealPlan/RegenerateMeal', {
-            method: 'POST',
-            body: formData
-        })
-        .then(response => {
-            if (!response.ok) {
-                throw new Error(`HTTP error! status: ${response.status}`);
-            }
-            return response.json();
-        })
-        .then(data => {
-            if (data.success) {
-                const existingIndicator = card.querySelector('.regenerated-indicator');
-                if (!existingIndicator) {
-                    const indicator = document.createElement('div');
-                    indicator.className = 'regenerated-indicator';
-                    indicator.innerHTML = '<i class="fas fa-sync-alt"></i>';
-                    card.appendChild(indicator);
-                }
-                setTimeout(() => {
-                    location.reload();
-                }, 1500);
-            } else {
-                alert(data.message || 'Failed to regenerate meal');
-                btn.disabled = false;
-                btn.classList.remove('loading');
-                btn.innerHTML = '<i class="fas fa-sync-alt"></i> Regenerate';
-            }
-        })
-        .catch(error => {
-            console.error('Error:', error);
-            alert('An error occurred while regenerating the meal');
-            btn.disabled = false;
-            btn.classList.remove('loading');
-            btn.innerHTML = '<i class="fas fa-sync-alt"></i> Regenerate';
-        });
-    }
-
-    function showRecipeDetailsFromMealPlan(recipeId) {
-        const clickedCard = event.currentTarget;
-        clickedCard.classList.add('loading');
-
-        fetch(`/Recipes/Details/${recipeId}`)
-            .then(response => {
-                if (!response.ok) {
-                    throw new Error('Network response was not ok');
-                }
-                return response.text();
-            })
-            .then(html => {
-                const modalContainer = document.getElementById('modalWindow');
-                modalContainer.innerHTML = html;
-
-                const scripts = modalContainer.querySelectorAll("script");
-                scripts.forEach(script => {
-                    const newScript = document.createElement("script");
-                    if (script.src) {
-                        newScript.src = script.src;
-                    } else {
-                        newScript.textContent = script.textContent;
-                    }
-                    document.body.appendChild(newScript);
-                    document.body.removeChild(newScript);
-                });
-
-                const modalElement = modalContainer.querySelector('.modal');
-                if (modalElement) {
-                    const modal = new bootstrap.Modal(modalElement);
-                    modal.show();
-
-                    modalElement.addEventListener('hidden.bs.modal', function () {
-                        modalContainer.innerHTML = '';
-                        clickedCard.classList.remove('loading');
-                    });
-
-                    modalElement.addEventListener('shown.bs.modal', function () {
-                        clickedCard.classList.remove('loading');
-                    });
-                } else {
-                    clickedCard.classList.remove('loading');
-                }
-            })
-            .catch(err => {
-                console.error("Failed to fetch recipe details", err);
-                alert("Failed to load recipe details. Please try again.");
-                clickedCard.classList.remove('loading');
-            });
-    }
-
-    function handleMealCardClick(event, recipeId, mealSlotId) {
-        SetIsViewed(event, true, mealSlotId);
-
-        if (event.target.closest('.regenerate-btn')) {
-            return;
-        }
-
-        if (recipeId && recipeId > 0) {
-            showRecipeDetailsFromMealPlan(recipeId);
-        }
-    }
-
-    function SetIsViewed(event, isViewed, mealSlotId) {
-        console.log('SetIsViewed called with mealSlotId:', mealSlotId);
-        const card = event.currentTarget;
-        const currentlyViewed = card.dataset.isViewed === 'true';
-
-        if (isViewed && !currentlyViewed) {
-            fetch(`/MealPlan/MarkMealsAsViewed?mealId=${mealSlotId}`, {
-                method: 'POST',
-                headers: {
-                    'RequestVerificationToken': document.querySelector('input[name="__RequestVerificationToken"]').value
-                }
-            })
-                .then(response => response.json())
-                .then(data => {
-                    if (data.success) {
-                        console.log('Meal marked as viewed');
-                        card.dataset.isViewed = 'true';
-
-                        const indicator = card.querySelector('.regenerated-indicator');
-                        if (indicator) {
-                            indicator.classList.add('fade-out');
-                            setTimeout(() => indicator.remove(), 300);
-                        }
-                    } else {
-                        console.error(data.message);
-                    }
-                })
-                .catch(error => console.error('Error marking meal as viewed:', error));
-        }
-    }
-
-    function showDeleteModal() {
-        document.getElementById('deleteModal').style.display = 'block';
-        document.body.style.overflow = 'hidden';
-    }
-
-    function hideDeleteModal() {
-        document.getElementById('deleteModal').style.display = 'none';
-        document.body.style.overflow = 'auto';
-    }
-
-    function confirmDelete() {
-        document.getElementById('deleteForm').submit();
-    }
-
-    window.onclick = function (event) {
-        const modal = document.getElementById('deleteModal');
-        if (event.target === modal) {
-            hideDeleteModal();
-        }
-    }
-
-    document.addEventListener('keydown', function (event) {
-        if (event.key === 'Escape') {
-            hideDeleteModal();
-        }
-    });
Index: triMatch/wwwroot/js/MyRecipes.js
===================================================================
--- NutriMatch/wwwroot/js/MyRecipes.js	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,136 +1,0 @@
-document.addEventListener("DOMContentLoaded", function () {
-  const urlParams = new URLSearchParams(window.location.search);
-  const openDeclineModalRecipeId = urlParams.get("openDeclineModal");
-
-  if (openDeclineModalRecipeId) {
-    setTimeout(function () {
-      showRecipeDetails(openDeclineModalRecipeId, true, "Declined");
-    }, 300);
-
-    const newUrl = window.location.pathname;
-    window.history.replaceState({}, document.title, newUrl);
-  }
-});
-
-function showRecipeDetails(recipeId, isOwner, recipeStatus) {
-  const clickedCard = event && event.currentTarget ? event.currentTarget : null;
-
-  if (clickedCard) {
-    clickedCard.classList.add("loading");
-  }
-
-  const params = new URLSearchParams({
-    isOwner: isOwner,
-    recipeDetailsDisplayContorol: recipeStatus,
-  });
-
-  fetch(`/Recipes/Details/${recipeId}?${params}`)
-    .then((response) => {
-      if (!response.ok) {
-        throw new Error("Network response was not ok");
-      }
-      return response.text();
-    })
-    .then((html) => {
-      const modalContainer = document.getElementById("modalWindow");
-      modalContainer.innerHTML = html;
-
-      const scripts = modalContainer.querySelectorAll("script");
-      scripts.forEach((script) => {
-        const newScript = document.createElement("script");
-        if (script.src) {
-          newScript.src = script.src;
-        } else {
-          newScript.textContent = script.textContent;
-        }
-        document.body.appendChild(newScript);
-        document.body.removeChild(newScript);
-      });
-
-      const modalElement = modalContainer.querySelector(".modal");
-      if (modalElement) {
-        const modal = new bootstrap.Modal(modalElement);
-        modal.show();
-
-        modalElement.addEventListener("hidden.bs.modal", function () {
-          modalContainer.innerHTML = "";
-          if (clickedCard) {
-            clickedCard.classList.remove("loading");
-          }
-        });
-
-        modalElement.addEventListener("shown.bs.modal", function () {
-          if (clickedCard) {
-            clickedCard.classList.remove("loading");
-          }
-        });
-      } else {
-        if (clickedCard) {
-          clickedCard.classList.remove("loading");
-        }
-      }
-    })
-    .catch((err) => {
-      console.error("Failed to fetch recipe details", err);
-      alert("Failed to load recipe details. Please try again.");
-      if (clickedCard) {
-        clickedCard.classList.remove("loading");
-      }
-    });
-}
-
-function openDeleteModal(recipeId) {
-  const deleteButton = event.target.closest("button");
-  deleteButton.classList.add("loading");
-
-  const recipeModalContainer = document.getElementById("modalWindow");
-  const recipeModalElement = recipeModalContainer.querySelector(".modal");
-  const savedRecipeHtml = recipeModalContainer.innerHTML;
-
-  let recipeModalWasOpen = false;
-  if (recipeModalElement && recipeModalElement.classList.contains("show")) {
-    const recipeModalInstance = bootstrap.Modal.getInstance(recipeModalElement);
-    if (recipeModalInstance) {
-      recipeModalInstance.hide();
-      recipeModalWasOpen = true;
-    }
-  }
-
-  fetch(`/Recipes/Delete/${recipeId}`)
-    .then((response) => response.text())
-    .then((html) => {
-      const deleteModalContainer = document.getElementById("modalWindowDelete");
-      deleteModalContainer.innerHTML = html;
-
-      const deleteModalElement = deleteModalContainer.querySelector(".modal");
-      if (deleteModalElement) {
-        const deleteModal = new bootstrap.Modal(deleteModalElement);
-        deleteModal.show();
-
-        deleteModalElement.addEventListener("hidden.bs.modal", function () {
-          deleteButton.classList.remove("loading");
-          deleteModalContainer.innerHTML = "";
-
-          if (recipeModalWasOpen && savedRecipeHtml.trim() !== "") {
-            recipeModalContainer.innerHTML = savedRecipeHtml;
-            const restoredModal = recipeModalContainer.querySelector(".modal");
-            if (restoredModal) {
-              const restoredInstance = new bootstrap.Modal(restoredModal);
-              restoredInstance.show();
-            }
-          }
-        });
-
-        deleteModalElement.addEventListener("shown.bs.modal", function () {
-          deleteButton.classList.remove("loading");
-        });
-      } else {
-        deleteButton.classList.remove("loading");
-      }
-    })
-    .catch((error) => {
-      console.error("Error loading delete modal:", error);
-      deleteButton.classList.remove("loading");
-      location.href = `/Recipes/Delete/${recipeId}`;
-    });
-}
Index: triMatch/wwwroot/js/Notifications.js
===================================================================
--- NutriMatch/wwwroot/js/Notifications.js	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,357 +1,0 @@
-document.addEventListener("DOMContentLoaded", function () {
-  const notificationPanel = document.getElementById("notification-panel");
-  const notificationIcon = document.querySelector(".notification-icon");
-  let isOpen = false;
-
-  notificationIcon.addEventListener("click", function (e) {
-    e.stopPropagation();
-
-    if (isOpen) {
-      closePanel();
-    } else {
-      openPanel();
-    }
-  });
-
-  function openPanel() {
-    loadNotificationPanel();
-    notificationPanel.classList.add("show");
-    isOpen = true;
-  }
-
-  function closePanel() {
-    notificationPanel.classList.remove("show");
-    isOpen = false;
-  }
-
-  document.addEventListener("click", function (e) {
-    if (!e.target.closest("#notification-bell") && isOpen) {
-      closePanel();
-    }
-  });
-
-  function loadNotificationPanel() {
-    fetch("/Notifications/NotificationPanel", {
-      method: "GET",
-      headers: {
-        "Content-Type": "text/html",
-      },
-    })
-      .then((response) => {
-        if (!response.ok) {
-          throw new Error("Network response was not ok");
-        }
-        return response.text();
-      })
-      .then((html) => {
-        document.getElementById("notification-panel-content").innerHTML = html;
-      })
-      .catch((error) => {
-        console.error("Error loading notifications:", error);
-        document.getElementById("notification-panel-content").innerHTML =
-          '<div class="notification-error">Failed to load notifications</div>';
-      });
-  }
-
-  function loadNotificationCount() {
-    fetch("/Notifications/GetNotifications", {
-      method: "GET",
-      headers: {
-        "Content-Type": "application/json",
-      },
-    })
-      .then((response) => response.json())
-      .then((data) => {
-        updateNotificationBadge(data.unreadCount);
-      })
-      .catch((error) => {
-        console.log("Failed to load notification count:", error);
-      });
-  }
-
-  function updateNotificationBadge(count) {
-    const badge = document.getElementById("notification-count");
-    if (count > 0) {
-      badge.textContent = count > 99 ? "99+" : count;
-      badge.classList.remove("hidden");
-    } else {
-      badge.classList.add("hidden");
-    }
-  }
-
-  document.addEventListener("click", function (e) {
-    const notificationItem = e.target.closest(".notification-item");
-
-    if (notificationItem) {
-      const notifId = notificationItem.getAttribute("data-id");
-      const recipeId = notificationItem.getAttribute("data-recipe-id");
-
-      if (e.target.closest(".notification-delete-btn")) return;
-
-      const notificationType = getNotificationType(notificationItem);
-
-      if (!notifId) return;
-
-      const formData = new FormData();
-      formData.append("notificationId", notifId);
-
-      fetch("/Notifications/MarkAsRead", {
-        method: "POST",
-        body: formData,
-      })
-        .then((response) => response.json())
-        .then((data) => {
-          if (data.success) {
-            notificationItem.classList.remove("unread");
-            updateNotificationBadge(data.unreadCount);
-
-            if (recipeId && recipeId !== "" && recipeId !== "null") {
-              if (notificationType === "RecipeDeclined") {
-                window.location.href =
-                  "/Recipes/MyRecipes?openDeclineModal=" + recipeId;
-              } else if (isRestaurantNotification(notificationType)) {
-                window.location.href =
-                  "/Restaurants/Index?restaurantId=" + recipeId;
-              } else if (isRecipeNotification(notificationType)) {
-                window.location.href = "/Recipes/Index?recipeId=" + recipeId;
-              }
-            } else {
-              if (isMealPlanNotification(notificationType)) {
-                window.location.href = "/MealPlan/";
-                console.log("TEST");
-              }
-            }
-          }
-        })
-        .catch((error) => {
-          console.error("Error marking notification as read:", error);
-        });
-    }
-  });
-
-  function getNotificationType(notificationItem) {
-    const iconWrapper = notificationItem.querySelector(
-      ".notification-icon-wrapper i"
-    );
-    if (!iconWrapper) return null;
-
-    if (iconWrapper.classList.contains("fa-star")) return "RecipeRated";
-    if (iconWrapper.classList.contains("fa-check-circle"))
-      return "RecipeAccepted";
-    if (iconWrapper.classList.contains("fa-times-circle"))
-      return "RecipeDeclined";
-    if (iconWrapper.classList.contains("fa-utensils"))
-      return "RestaurantNewMeal";
-    if (iconWrapper.classList.contains("fa-store")) return "NewRestaurant";
-    if (iconWrapper.classList.contains("fa-calendar-check"))
-      return "MealPlanUpdated";
-
-    if (iconWrapper.classList.contains("fa-tags")) {
-      const messageElement = notificationItem.querySelector(
-        ".notification-message"
-      );
-      if (messageElement) {
-        const message = messageElement.textContent;
-        if (message.includes(" at ")) {
-          return "MealMatchesTags";
-        } else {
-          return "RecipeMatchesTags";
-        }
-      }
-      return "MealMatchesTags";
-    }
-
-    return null;
-  }
-
-  function isRestaurantNotification(type) {
-    return ["RestaurantNewMeal", "MealMatchesTags", "NewRestaurant"].includes(
-      type
-    );
-  }
-
-  function isRecipeNotification(type) {
-    return [
-      "RecipeRated",
-      "RecipeAccepted",
-      "RecipeDeclined",
-      "RecipeMatchesTags",
-    ].includes(type);
-  }
-
-  function isMealPlanNotification(type) {
-    return ["MealPlanUpdated"].includes(type);
-  }
-
-  document.addEventListener("click", function (e) {
-    if (e.target.id === "mark-all-read" || e.target.closest("#mark-all-read")) {
-      e.preventDefault();
-
-      fetch("/Notifications/MarkAllAsRead", {
-        method: "POST",
-        headers: {
-          "Content-Type": "application/json",
-        },
-      })
-        .then((response) => response.json())
-        .then((data) => {
-          if (data.success) {
-            const allNotifications =
-              document.querySelectorAll(".notification-item");
-            allNotifications.forEach((item) => {
-              item.classList.remove("unread");
-            });
-
-            updateNotificationBadge(0);
-
-            const markAllBtn = document.getElementById("mark-all-read");
-            if (markAllBtn) {
-              markAllBtn.style.display = "none";
-            }
-          }
-        })
-        .catch((error) => {
-          console.error("Error marking all as read:", error);
-        });
-    }
-  });
-
-  if (!window.notificationEventSource) {
-    window.notificationEventSource = new EventSource("/Notifications/Stream");
-
-    window.notificationEventSource.onmessage = function (event) {
-      const data = JSON.parse(event.data);
-      updateNotificationBadge(data.unreadCount);
-
-      if (isOpen) {
-        loadNotificationPanel();
-      }
-    };
-
-    window.notificationEventSource.onerror = function (err) {
-      console.warn("SSE error:", err);
-    };
-  }
-
-  window.addEventListener("beforeunload", function () {
-    if (window.notificationEventSource) {
-      window.notificationEventSource.close();
-      window.notificationEventSource = null;
-    }
-  });
-
-  loadNotificationCount();
-
-  document.addEventListener("click", function (e) {
-    const deleteBtn = e.target.closest(".notification-delete-btn");
-
-    if (deleteBtn) {
-      e.stopPropagation();
-
-      const notifId = deleteBtn.getAttribute("data-notification-id");
-      const notificationItem = deleteBtn.closest(".notification-item");
-
-      if (!notifId) return;
-
-      const formData = new FormData();
-      formData.append("notificationId", notifId);
-
-      fetch("/Notifications/Delete", {
-        method: "POST",
-        body: formData,
-      })
-        .then((response) => response.json())
-        .then((data) => {
-          if (data.success) {
-            notificationItem.style.opacity = "0";
-            notificationItem.style.transform = "translateX(100%)";
-
-            setTimeout(() => {
-              notificationItem.remove();
-              updateNotificationBadge(data.unreadCount);
-
-              const remainingNotifications = document.querySelectorAll(
-                ".notification-item:not(.no-notifications)"
-              );
-              if (remainingNotifications.length === 0) {
-                const notificationList =
-                  document.getElementById("notification-list");
-                notificationList.innerHTML = `
-                                <div class="notification-item no-notifications">
-                                    <i class="fas fa-bell-slash"></i>
-                                    <p>No notifications yet</p>
-                                </div>
-                            `;
-              }
-
-              const unreadNotifications = document.querySelectorAll(
-                ".notification-item.unread"
-              );
-              if (unreadNotifications.length === 0) {
-                const markAllBtn = document.getElementById("mark-all-read");
-                if (markAllBtn) {
-                  markAllBtn.style.display = "none";
-                }
-              }
-            }, 300);
-          }
-        })
-        .catch((error) => {
-          console.error("Error deleting notification:", error);
-        });
-    }
-  });
-});
-
-function deleteAllNotifications() {
-  fetch("/Notifications/DeleteAll", {
-    method: "POST",
-    headers: {
-      "Content-Type": "application/json",
-    },
-  })
-    .then((response) => {
-      if (!response.ok) {
-        throw new Error("Network response was not ok");
-      }
-      return response.json();
-    })
-    .then((data) => {
-      if (data.success) {
-        const notificationList = document.getElementById("notification-list");
-        if (notificationList) {
-          notificationList.innerHTML = `
-                    <div class="notification-item no-notifications">
-                        <i class="fas fa-bell-slash"></i>
-                        <p>No notifications yet</p>
-                    </div>
-                `;
-        }
-
-        if (typeof updateNotificationBadge === "function") {
-          updateNotificationBadge(0);
-        }
-
-        const deleteAllBtn = document.getElementById(
-          "delete-all-notifications"
-        );
-        const markAllReadBtn = document.getElementById("mark-all-read");
-
-        if (deleteAllBtn) deleteAllBtn.style.display = "none";
-        if (markAllReadBtn) markAllReadBtn.style.display = "none";
-      } else {
-        throw new Error(data.message || "Failed to delete notifications");
-      }
-    })
-    .catch((error) => {
-      console.error("Error:", error);
-      if (typeof showNotification === "function") {
-        showNotification(
-          "Error deleting notifications: " + error.message,
-          "error"
-        );
-      } else {
-        alert("Error deleting notifications: " + error.message);
-      }
-    });
-}
Index: triMatch/wwwroot/js/RecipeCreate.js
===================================================================
--- NutriMatch/wwwroot/js/RecipeCreate.js	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,754 +1,0 @@
-let selectedIngredients = [];
-let selectedInstructions = [];
-let searchTimeout;
-let currentFocus = -1;
-let selectedIngredient = null;
-
-const ingredientSearch = document.getElementById("ingredientSearch");
-const ingredientDropdown = document.getElementById("ingredientDropdown");
-const ingredientsList = document.getElementById("ingredientsList");
-const hiddenIngredientsInput = document.getElementById("selectedIngredients");
-const addButton = document.getElementById("addIngredientButton");
-const qtyInput = document.getElementById("ingredientQuantity");
-const unitSelect = document.getElementById("ingredientUnit");
-
-const instructionInput = document.getElementById("instructionInput");
-const addInstructionButton = document.getElementById("addInstructionButton");
-const instructionsList = document.getElementById("instructionsList");
-const hiddenInstructionsInput = document.getElementById("selectedInstructions");
-
-const fileUploadArea = document.getElementById("fileUploadArea");
-const fileInput = document.getElementById("RecipeImage");
-const imagePreview = document.getElementById("imagePreview");
-
-const addNewIngredientBtn = document.getElementById("addNewIngredientBtn");
-const addIngredientModal = document.getElementById("addIngredientModal");
-const addIngredientForm = document.getElementById("addIngredientForm");
-const closeModal = document.getElementById("closeModal");
-const cancelAddIngredient = document.getElementById("cancelAddIngredient");
-let lastSearchQuery = "";
-
-document.addEventListener("DOMContentLoaded", function () {
-  initializeSearchFunctionality();
-  initializeInstructionsFunctionality();
-  initializeFileUpload();
-  initializeModalFunctionality();
-});
-
-function initializeFileUpload() {
-  if (fileUploadArea) {
-    fileUploadArea.addEventListener("click", () => fileInput.click());
-
-    fileUploadArea.addEventListener("dragover", (e) => {
-      e.preventDefault();
-      fileUploadArea.classList.add("dragover");
-    });
-
-    fileUploadArea.addEventListener("dragleave", () => {
-      fileUploadArea.classList.remove("dragover");
-    });
-
-    fileUploadArea.addEventListener("drop", (e) => {
-      e.preventDefault();
-      fileUploadArea.classList.remove("dragover");
-      const files = e.dataTransfer.files;
-      if (files.length > 0) {
-        handleFileSelect(files[0]);
-        setFileToInput(files[0]);
-      }
-    });
-
-    fileInput.addEventListener("change", (e) => {
-      if (e.target.files && e.target.files[0]) {
-        handleFileSelect(e.target.files[0]);
-      }
-    });
-  }
-}
-
-function setFileToInput(file) {
-  const dataTransfer = new DataTransfer();
-  dataTransfer.items.add(file);
-
-  fileInput.files = dataTransfer.files;
-}
-
-function initializeSearchFunctionality() {
-  if (addButton) {
-    addButton.addEventListener("click", function () {
-      if (selectedIngredient && qtyInput && unitSelect) {
-        const qty = parseFloat(qtyInput.value);
-        const unit = unitSelect.value;
-
-        if (qty > 0 && unit && selectedIngredient.name) {
-          addIngredient(selectedIngredient, qty, unit);
-        } else {
-          alert("Please enter a valid quantity and select a unit.");
-        }
-      } else {
-        alert("Please search and select an ingredient first.");
-      }
-    });
-  }
-
-  if (ingredientSearch) {
-    ingredientSearch.addEventListener("input", function () {
-      const query = this.value.trim();
-      currentFocus = -1;
-      selectedIngredient = null;
-
-      if (query === "") {
-        hideDropdown(ingredientDropdown);
-        if (addNewIngredientBtn) {
-          addNewIngredientBtn.style.display = "none";
-        }
-        return;
-      }
-
-      clearTimeout(searchTimeout);
-      searchTimeout = setTimeout(() => {
-        searchIngredients(query);
-      }, 300);
-    });
-
-    ingredientSearch.addEventListener("keydown", function (e) {
-      handleKeyNavigation(e, ingredientDropdown);
-    });
-
-    ingredientSearch.addEventListener("focus", function () {
-      if (this.value.trim() !== "") {
-        searchIngredients(this.value.trim());
-      }
-    });
-  }
-
-  document.addEventListener("click", function (e) {
-    if (!e.target.closest(".search-container")) {
-      hideDropdown(ingredientDropdown);
-    }
-  });
-}
-
-function initializeInstructionsFunctionality() {
-  if (addInstructionButton) {
-    addInstructionButton.addEventListener("click", function () {
-      addInstruction();
-    });
-  }
-
-  if (instructionInput) {
-    instructionInput.addEventListener("keydown", function (e) {
-      if (e.key === "Enter") {
-        e.preventDefault();
-        addInstruction();
-      }
-    });
-  }
-}
-
-async function searchIngredients(query) {
-  if (!ingredientDropdown) return;
-
-  try {
-    ingredientDropdown.innerHTML = '<div class="loading">Loading...</div>';
-    showDropdown(ingredientDropdown);
-
-    const response = await fetch(
-      `/Recipes/getSuggestions?query=${encodeURIComponent(query)}`,
-      {
-        method: "GET",
-      }
-    );
-
-    if (!response.ok) {
-      throw new Error(`HTTP error! status: ${response.status}`);
-    }
-
-    const suggestions = await response.json();
-    displaySuggestions(suggestions, query);
-  } catch (error) {
-    console.error("Error fetching suggestions:", error);
-    ingredientDropdown.innerHTML =
-      '<div class="no-results">Error loading suggestions. Please try again.</div>';
-    showDropdown(ingredientDropdown);
-  }
-}
-
-function displaySuggestions(suggestions, query) {
-  if (!ingredientDropdown) return;
-
-  lastSearchQuery = query;
-  ingredientDropdown.innerHTML = "";
-
-  if (!suggestions || suggestions.length === 0) {
-    ingredientDropdown.innerHTML =
-      '<div class="no-results">No results found</div>';
-    showDropdown(ingredientDropdown);
-
-    if (addNewIngredientBtn) {
-      addNewIngredientBtn.style.display = "block";
-      console.log("Showing button for query:", query);
-    }
-    return;
-  }
-
-  if (addNewIngredientBtn) {
-    addNewIngredientBtn.style.display = "none";
-  }
-
-  suggestions.forEach((suggestion, index) => {
-    const item = document.createElement("div");
-    item.className = "dropdown-item";
-    item.setAttribute("data-index", index);
-
-    const name = suggestion.name;
-    const id = suggestion.id;
-
-    const regex = new RegExp(`(${query})`, "gi");
-    const highlightedText = name.replace(regex, "<strong>$1</strong>");
-    item.innerHTML = highlightedText;
-
-    item.addEventListener("click", function () {
-      selectedIngredient = {
-        id: id,
-        name: name,
-      };
-      ingredientSearch.value = name;
-      hideDropdown(ingredientDropdown);
-    });
-
-    ingredientDropdown.appendChild(item);
-  });
-
-  showDropdown(ingredientDropdown);
-}
-
-function handleKeyNavigation(e, dropdownElement) {
-  if (!dropdownElement) return;
-
-  const items = dropdownElement.querySelectorAll(
-    ".dropdown-item:not(.no-results):not(.loading)"
-  );
-
-  switch (e.key) {
-    case "ArrowDown":
-      e.preventDefault();
-      currentFocus++;
-      if (currentFocus >= items.length) currentFocus = 0;
-      setActive(items);
-      break;
-
-    case "ArrowUp":
-      e.preventDefault();
-      currentFocus--;
-      if (currentFocus < 0) currentFocus = items.length - 1;
-      setActive(items);
-      break;
-
-    case "Enter":
-      e.preventDefault();
-      if (currentFocus > -1 && items[currentFocus]) {
-        items[currentFocus].click();
-      }
-      break;
-
-    case "Escape":
-      hideDropdown(dropdownElement);
-      e.target.blur();
-      break;
-  }
-}
-
-function setActive(items) {
-  items.forEach((item) => item.classList.remove("highlighted"));
-
-  if (currentFocus >= 0 && currentFocus < items.length) {
-    items[currentFocus].classList.add("highlighted");
-    items[currentFocus].scrollIntoView({ block: "nearest" });
-  }
-}
-
-function addIngredient(ingredient, quantity, unit) {
-  if (!ingredient || !ingredient.name) {
-    console.error("Invalid ingredient data");
-    return;
-  }
-
-  const existingIngredient = selectedIngredients.find(
-    (item) => item.Id === ingredient.id
-  );
-
-  if (existingIngredient) {
-    alert("This ingredient is already added to the recipe.");
-    return;
-  }
-
-  const newIngredient = {
-    Id: ingredient.id,
-    Name: ingredient.name,
-    Quantity: quantity,
-    Unit: unit,
-  };
-
-  selectedIngredients.push(newIngredient);
-  updateIngredientsDisplay();
-  updateIngredientsInput();
-
-  if (ingredientSearch) ingredientSearch.value = "";
-  if (qtyInput) qtyInput.value = "";
-  if (unitSelect) unitSelect.value = "";
-
-  selectedIngredient = null;
-  hideDropdown(ingredientDropdown);
-  currentFocus = -1;
-}
-
-function removeIngredient(ingredientName) {
-  selectedIngredients = selectedIngredients.filter(
-    (item) => item.Name !== ingredientName
-  );
-  updateIngredientsDisplay();
-  updateIngredientsInput();
-}
-
-function addInstruction() {
-  if (!instructionInput) return;
-
-  const instruction = instructionInput.value.trim();
-
-  if (instruction === "") {
-    alert("Please enter an instruction.");
-    return;
-  }
-
-  if (selectedInstructions.includes(instruction)) {
-    alert("This instruction is already added.");
-    return;
-  }
-
-  selectedInstructions.push(instruction);
-  updateInstructionsDisplay();
-  updateInstructionsInput();
-
-  instructionInput.value = "";
-}
-
-function removeInstruction(instructionIndex) {
-  selectedInstructions.splice(instructionIndex, 1);
-  updateInstructionsDisplay();
-  updateInstructionsInput();
-}
-
-function updateIngredientsDisplay() {
-  if (!ingredientsList) return;
-
-  if (selectedIngredients.length === 0) {
-    ingredientsList.innerHTML =
-      '<small class="text-muted">Selected ingredients will appear here</small>';
-  } else {
-    ingredientsList.innerHTML = selectedIngredients
-      .map(
-        (ingredient) =>
-          `<span class="ingredient-tag">
-                ${ingredient.Quantity} ${ingredient.Unit} of ${ingredient.Name}
-                <span class="remove" onclick="removeIngredient('${ingredient.Name}')" 
-                    title="Remove ingredient">&times;</span>
-            </span>`
-      )
-      .join("");
-  }
-}
-
-function updateInstructionsDisplay() {
-  if (!instructionsList) return;
-
-  if (selectedInstructions.length === 0) {
-    instructionsList.innerHTML =
-      '<small class="text-muted">Added instructions will appear here</small>';
-  } else {
-    instructionsList.innerHTML = selectedInstructions
-      .map(
-        (instruction, index) =>
-          `<div class="instruction-item">
-                <span class="instruction-number">${index + 1}</span>
-                <span class="instruction-text">${instruction}</span>
-                <span class="remove" onclick="removeInstruction(${index})" style="font-size: 18px;" title="Remove instruction">&times;</span>
-            </div>`
-      )
-      .join("");
-  }
-}
-
-function updateIngredientsInput() {
-  if (hiddenIngredientsInput) {
-    hiddenIngredientsInput.value = JSON.stringify(selectedIngredients);
-  }
-}
-
-function updateInstructionsInput() {
-  if (hiddenInstructionsInput) {
-    hiddenInstructionsInput.value = JSON.stringify(selectedInstructions);
-  }
-}
-
-function showDropdown(dropdownElement) {
-  if (dropdownElement) {
-    dropdownElement.style.display = "block";
-  }
-}
-
-function hideDropdown(dropdownElement) {
-  if (dropdownElement) {
-    dropdownElement.style.display = "none";
-  }
-  if (addNewIngredientBtn) {
-    addNewIngredientBtn.style.display = "none";
-  }
-  currentFocus = -1;
-}
-
-function handleFileSelect(file) {
-  if (file.type.startsWith("image/")) {
-    const reader = new FileReader();
-    reader.onload = (e) => {
-      imagePreview.innerHTML = `
-                <img id="image-preview" src="${e.target.result}" alt="Recipe preview">
-                <p style="margin-top: 0.5rem; color: #4CAF50; font-weight: 500;">✓ Image uploaded successfully</p>
-            `;
-    };
-    reader.readAsDataURL(file);
-  }
-}
-
-function validateInstructions() {
-  const instructionsContainer = document.getElementById("instructionsList");
-  const instructionsInput = document.getElementById("selectedInstructions");
-  const hasInstructions =
-    instructionsInput.value &&
-    instructionsInput.value !== "[]" &&
-    instructionsInput.value.trim() !== "";
-
-  if (!hasInstructions) {
-    instructionsContainer.innerHTML =
-      '<div class="items-empty error">Please add at least one instruction step</div>';
-    alert("Please fill in the instructions");
-    return false;
-  }
-  return true;
-}
-
-document.querySelector("form").addEventListener("submit", function (e) {
-  if (!validateInstructions()) {
-    e.preventDefault();
-    return false;
-  }
-});
-
-function initializeModalFunctionality() {
-  console.log("Initializing modal functionality");
-
-  const addNewIngredientBtn = document.getElementById("addNewIngredientBtn");
-  const addIngredientModal = document.getElementById("addIngredientModal");
-  const addIngredientForm = document.getElementById("addIngredientForm");
-  const closeModal = document.getElementById("closeModal");
-  const cancelAddIngredient = document.getElementById("cancelAddIngredient");
-
-  if (addNewIngredientBtn) {
-    addNewIngredientBtn.addEventListener("click", function (e) {
-      e.preventDefault();
-
-      const qty = qtyInput ? parseFloat(qtyInput.value) : 0;
-      const unit = unitSelect ? unitSelect.value : "";
-
-      if (!qty || qty <= 0 || !unit) {
-        showValidationMessage(
-          "Please enter a valid quantity and select a unit before adding a new ingredient."
-        );
-        return;
-      }
-
-      showAddIngredientModal(lastSearchQuery);
-    });
-  }
-
-  if (closeModal) {
-    closeModal.addEventListener("click", hideAddIngredientModal);
-  }
-
-  if (cancelAddIngredient) {
-    cancelAddIngredient.addEventListener("click", function (e) {
-      e.preventDefault();
-      hideAddIngredientModal();
-    });
-  }
-
-  if (addIngredientModal) {
-    addIngredientModal.addEventListener("click", function (e) {
-      if (e.target === addIngredientModal) {
-        hideAddIngredientModal();
-      }
-    });
-
-    document.addEventListener("keydown", function (e) {
-      if (e.key === "Escape" && addIngredientModal.style.display === "flex") {
-        hideAddIngredientModal();
-      }
-    });
-  }
-
-  if (addIngredientForm) {
-    addIngredientForm.addEventListener("submit", handleAddNewIngredient);
-  }
-}
-
-function showAddIngredientModal(ingredientName = "") {
-  const addIngredientModal = document.getElementById("addIngredientModal");
-
-  if (addIngredientModal) {
-    const nameInput = document.getElementById("newIngredientName");
-    if (nameInput) {
-      nameInput.value = ingredientName;
-    }
-
-    addIngredientModal.style.display = "flex";
-    addIngredientModal.classList.add("show");
-
-    setTimeout(() => {
-      if (nameInput) {
-        nameInput.focus();
-        nameInput.select();
-      }
-    }, 100);
-
-    hideDropdown(ingredientDropdown);
-  }
-}
-
-function hideAddIngredientModal() {
-  const addIngredientModal = document.getElementById("addIngredientModal");
-
-  if (addIngredientModal) {
-    addIngredientModal.classList.remove("show");
-
-    setTimeout(() => {
-      addIngredientModal.style.display = "none";
-    }, 300);
-
-    const form = document.getElementById("addIngredientForm");
-    if (form) {
-      form.reset();
-      const submitBtn = form.querySelector('button[type="submit"]');
-      if (submitBtn) {
-        submitBtn.disabled = false;
-        submitBtn.classList.remove("loading");
-      }
-    }
-  }
-}
-
-async function handleAddNewIngredient(e) {
-  e.preventDefault();
-
-  const form = e.target;
-  const submitBtn = form.querySelector('button[type="submit"]');
-
-  if (submitBtn) {
-    submitBtn.disabled = true;
-    submitBtn.classList.add("loading");
-  }
-
-  if (!document.getElementById("newIngredientName").value.trim()) {
-    alert("Please enter an ingredient name");
-    if (submitBtn) {
-      submitBtn.disabled = false;
-      submitBtn.classList.remove("loading");
-    }
-    return;
-  }
-
-  try {
-    let token = document.querySelector(
-      'input[name="__RequestVerificationToken"]'
-    );
-    if (!token) {
-      token = document.querySelector('input[name="RequestVerificationToken"]');
-    }
-    if (!token) {
-      token = form.querySelector('input[name="__RequestVerificationToken"]');
-    }
-
-    const tokenValue = token ? token.value : "";
-
-    const response = await fetch("/Recipes/AddIngredient", {
-      method: "POST",
-      headers: {
-        "Content-Type": "application/json",
-        "X-Requested-With": "XMLHttpRequest",
-        RequestVerificationToken: tokenValue,
-      },
-      body: JSON.stringify({
-        Name: document.getElementById("newIngredientName").value.trim(),
-        Calories:
-          parseFloat(document.getElementById("newIngredientCalories").value) ||
-          0.0,
-        Protein:
-          parseFloat(document.getElementById("newIngredientProtein").value) ||
-          0.0,
-        Carbs:
-          parseFloat(document.getElementById("newIngredientCarbs").value) ||
-          0.0,
-        Fat:
-          parseFloat(document.getElementById("newIngredientFat").value) || 0.0,
-      }),
-    });
-
-    if (!response.ok) {
-      const errorText = await response.text();
-      console.error("Server response:", errorText);
-      throw new Error(errorText || `HTTP error! status: ${response.status}`);
-    }
-
-    const newIngredient = await response.json();
-
-    selectedIngredient = {
-      id: newIngredient.id,
-      name: newIngredient.name,
-    };
-
-    const ingredientSearch = document.getElementById("ingredientSearch");
-    if (ingredientSearch) {
-      ingredientSearch.value = newIngredient.name;
-    }
-
-    hideAddIngredientModal();
-
-    const qtyInput = document.getElementById("ingredientQuantity");
-    const unitSelect = document.getElementById("ingredientUnit");
-
-    if (qtyInput && unitSelect && qtyInput.value && unitSelect.value) {
-      const qty = parseFloat(qtyInput.value);
-      const unit = unitSelect.value;
-
-      if (qty > 0) {
-        addIngredient(selectedIngredient, qty, unit);
-      }
-    }
-
-    showSuccessMessage("Ingredient added successfully!");
-
-    hideDropdown(ingredientDropdown);
-  } catch (error) {
-    console.error("Error adding ingredient:", error);
-
-    let errorMessage = "Error adding ingredient. Please try again.";
-    if (error.message.includes("already exists")) {
-      errorMessage = "An ingredient with this name already exists.";
-    } else if (error.message.includes("required")) {
-      errorMessage = "Please fill in all required fields.";
-    } else if (error.message.includes("Anti-forgery")) {
-      errorMessage =
-        "Security validation failed. Please refresh the page and try again.";
-    }
-
-    alert(errorMessage);
-  } finally {
-    if (submitBtn) {
-      submitBtn.disabled = false;
-      submitBtn.classList.remove("loading");
-    }
-  }
-}
-
-function showSuccessMessage(message) {
-  const successMsg = document.createElement("div");
-  successMsg.style.cssText = `
-        position: fixed;
-        top: 20px;
-        right: 20px;
-        background: #10b981;
-        color: white;
-        padding: 1rem 1.5rem;
-        border-radius: 8px;
-        box-shadow: 0 4px 12px rgba(16, 185, 129, 0.3);
-        z-index: 1001;
-        font-weight: 500;
-        animation: slideInRight 0.3s ease;
-    `;
-  successMsg.textContent = message;
-
-  document.body.appendChild(successMsg);
-
-  setTimeout(() => {
-    successMsg.style.animation = "slideOutRight 0.3s ease forwards";
-    setTimeout(() => {
-      if (successMsg.parentNode) {
-        successMsg.parentNode.removeChild(successMsg);
-      }
-    }, 300);
-  }, 3000);
-}
-
-if (!document.getElementById("success-message-styles")) {
-  const style = document.createElement("style");
-  style.id = "success-message-styles";
-  style.textContent = `
-        @keyframes slideInRight {
-            from {
-                transform: translateX(100%);
-                opacity: 0;
-            }
-            to {
-                transform: translateX(0);
-                opacity: 1;
-            }
-        }
-        
-        @keyframes slideOutRight {
-            from {
-                transform: translateX(0);
-                opacity: 1;
-            }
-            to {
-                transform: translateX(100%);
-                opacity: 0;
-            }
-        }
-    `;
-  document.head.appendChild(style);
-}
-
-function showValidationMessage(message) {
-  const existingMsg = document.getElementById("validation-message");
-  if (existingMsg) {
-    existingMsg.remove();
-  }
-
-  const validationMsg = document.createElement("div");
-  validationMsg.id = "validation-message";
-  validationMsg.style.cssText = `
-        position: fixed;
-        top: 20px;
-        right: 20px;
-        background: #ef4444;
-        color: white;
-        padding: 1rem 1.5rem;
-        border-radius: 8px;
-        box-shadow: 0 4px 12px rgba(239, 68, 68, 0.3);
-        z-index: 1001;
-        font-weight: 500;
-        animation: slideInRight 0.3s ease;
-        max-width: 300px;
-    `;
-  validationMsg.textContent = message;
-
-  document.body.appendChild(validationMsg);
-
-  setTimeout(() => {
-    validationMsg.style.animation = "slideOutRight 0.3s ease forwards";
-    setTimeout(() => {
-      if (validationMsg.parentNode) {
-        validationMsg.parentNode.removeChild(validationMsg);
-      }
-    }, 300);
-  }, 4000);
-}
Index: triMatch/wwwroot/js/RecipeEdit.js
===================================================================
--- NutriMatch/wwwroot/js/RecipeEdit.js	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,432 +1,0 @@
-let selectedIngredients = [];
-let selectedInstructions = [];
-let searchTimeout;
-let currentFocus = -1;
-let selectedIngredient = null;
-
-const ingredientSearch = document.getElementById("ingredientSearch");
-const ingredientDropdown = document.getElementById("ingredientDropdown");
-const ingredientsList = document.getElementById("ingredientsList");
-const hiddenIngredientsInput = document.getElementById("selectedIngredients");
-const addButton = document.getElementById("addIngredientButton");
-const qtyInput = document.getElementById("ingredientQuantity");
-const unitSelect = document.getElementById("ingredientUnit");
-const instructionInput = document.getElementById("instructionInput");
-const addInstructionButton = document.getElementById("addInstructionButton");
-const instructionsList = document.getElementById("instructionsList");
-const hiddenInstructionsInput = document.getElementById("selectedInstructions");
-const fileUploadArea = document.getElementById("fileUploadArea");
-const fileInput = document.getElementById("RecipeImage");
-const imagePreview = document.getElementById("imagePreview");
-
-document.addEventListener("DOMContentLoaded", function () {
-  initializeSearchFunctionality();
-  initializeInstructionsFunctionality();
-  initializeInstructionsAndIngredients();
-
-  updateIngredientsDisplay();
-  updateIngredientsInput();
-  updateInstructionsDisplay();
-  updateInstructionsInput();
-});
-
-function initializeInstructionsAndIngredients() {
-  var existingInstructions = JSON.parse(
-    document.getElementById("selectedInstructionsScript").innerText
-  )[0];
-  existingInstructions = JSON.parse(existingInstructions);
-
-  var existingIngredients = JSON.parse(
-    document.getElementById("selectedIngredientsScript").innerText
-  );
-  console.log(existingIngredients);
-
-  existingIngredients.forEach((element) => {
-    selectedIngredients.push({
-      Id: element.IngredientId,
-      Name: element.Ingredient.Name,
-      Quantity: element.Quantity,
-      Unit: element.Unit,
-    });
-  });
-
-  existingInstructions.forEach((element) => {
-    selectedInstructions.push(element);
-  });
-}
-
-function initializeSearchFunctionality() {
-  if (addButton) {
-    addButton.addEventListener("click", function () {
-      if (selectedIngredient && qtyInput && unitSelect) {
-        const qty = parseFloat(qtyInput.value);
-        const unit = unitSelect.value;
-
-        if (qty > 0 && unit && selectedIngredient.name) {
-          addIngredient(selectedIngredient, qty, unit);
-        } else {
-          alert("Please enter a valid quantity and select a unit.");
-        }
-      } else {
-        alert("Please search and select an ingredient first.");
-      }
-    });
-  }
-
-  if (ingredientSearch) {
-    ingredientSearch.addEventListener("input", function () {
-      const query = this.value.trim();
-      currentFocus = -1;
-      selectedIngredient = null;
-
-      if (query === "") {
-        hideDropdown(ingredientDropdown);
-        return;
-      }
-
-      clearTimeout(searchTimeout);
-      searchTimeout = setTimeout(() => {
-        searchIngredients(query);
-      }, 300);
-    });
-
-    ingredientSearch.addEventListener("keydown", function (e) {
-      handleKeyNavigation(e, ingredientDropdown);
-    });
-
-    ingredientSearch.addEventListener("focus", function () {
-      if (this.value.trim() !== "") {
-        searchIngredients(this.value.trim());
-      }
-    });
-  }
-
-  document.addEventListener("click", function (e) {
-    if (!e.target.closest(".search-container")) {
-      hideDropdown(ingredientDropdown);
-    }
-  });
-}
-
-function initializeInstructionsFunctionality() {
-  if (addInstructionButton) {
-    addInstructionButton.addEventListener("click", function () {
-      addInstruction();
-    });
-  }
-
-  if (instructionInput) {
-    instructionInput.addEventListener("keydown", function (e) {
-      if (e.key === "Enter") {
-        e.preventDefault();
-        addInstruction();
-      }
-    });
-  }
-}
-
-async function searchIngredients(query) {
-  if (!ingredientDropdown) return;
-
-  try {
-    ingredientDropdown.innerHTML = '<div class="loading">Loading...</div>';
-    showDropdown(ingredientDropdown);
-
-    const response = await fetch(
-      `/Recipes/getSuggestions?query=${encodeURIComponent(query)}`,
-      {
-        method: "GET",
-        headers: {
-          "Content-Type": "application/json",
-          "X-Requested-With": "XMLHttpRequest",
-        },
-      }
-    );
-
-    if (!response.ok) {
-      throw new Error(`HTTP error! status: ${response.status}`);
-    }
-
-    const suggestions = await response.json();
-    displaySuggestions(suggestions, query);
-  } catch (error) {
-    console.error("Error fetching suggestions:", error);
-    ingredientDropdown.innerHTML =
-      '<div class="no-results">Error loading suggestions. Please try again.</div>';
-    showDropdown(ingredientDropdown);
-  }
-}
-
-function displaySuggestions(suggestions, query) {
-  if (!ingredientDropdown) return;
-
-  ingredientDropdown.innerHTML = "";
-
-  if (!suggestions || suggestions.length === 0) {
-    ingredientDropdown.innerHTML =
-      '<div class="no-results">No results found</div>';
-    showDropdown(ingredientDropdown);
-    return;
-  }
-
-  suggestions.forEach((suggestion, index) => {
-    const item = document.createElement("div");
-    item.className = "dropdown-item";
-    item.setAttribute("data-index", index);
-
-    const name = typeof suggestion === "string" ? suggestion : suggestion.name;
-    const id = typeof suggestion === "object" ? suggestion.id : null;
-
-    const regex = new RegExp(`(${query})`, "gi");
-    const highlightedText = name.replace(regex, "<strong>$1</strong>");
-    item.innerHTML = highlightedText;
-
-    item.addEventListener("click", function () {
-      selectedIngredient = {
-        id: id,
-        name: name,
-      };
-      ingredientSearch.value = name;
-      hideDropdown(ingredientDropdown);
-    });
-
-    ingredientDropdown.appendChild(item);
-  });
-
-  showDropdown(ingredientDropdown);
-}
-
-function handleKeyNavigation(e, dropdownElement) {
-  if (!dropdownElement) return;
-
-  const items = dropdownElement.querySelectorAll(
-    ".dropdown-item:not(.no-results):not(.loading)"
-  );
-
-  switch (e.key) {
-    case "ArrowDown":
-      e.preventDefault();
-      currentFocus++;
-      if (currentFocus >= items.length) currentFocus = 0;
-      setActive(items);
-      break;
-
-    case "ArrowUp":
-      e.preventDefault();
-      currentFocus--;
-      if (currentFocus < 0) currentFocus = items.length - 1;
-      setActive(items);
-      break;
-
-    case "Enter":
-      e.preventDefault();
-      if (currentFocus > -1 && items[currentFocus]) {
-        items[currentFocus].click();
-      }
-      break;
-
-    case "Escape":
-      hideDropdown(dropdownElement);
-      e.target.blur();
-      break;
-  }
-}
-
-function setActive(items) {
-  items.forEach((item) => item.classList.remove("highlighted"));
-
-  if (currentFocus >= 0 && currentFocus < items.length) {
-    items[currentFocus].classList.add("highlighted");
-    items[currentFocus].scrollIntoView({ block: "nearest" });
-  }
-}
-
-function addIngredient(ingredient, quantity, unit) {
-  if (!ingredient || !ingredient.name) {
-    console.error("Invalid ingredient data");
-    return;
-  }
-
-  const existingIngredient = selectedIngredients.find(
-    (item) => item.Id === ingredient.id
-  );
-
-  if (existingIngredient) {
-    alert("This ingredient is already added to the recipe.");
-    return;
-  }
-
-  const newIngredient = {
-    Id: ingredient.id,
-    Name: ingredient.name,
-    Quantity: quantity,
-    Unit: unit,
-  };
-
-  selectedIngredients.push(newIngredient);
-  updateIngredientsDisplay();
-  updateIngredientsInput();
-
-  if (ingredientSearch) ingredientSearch.value = "";
-  if (qtyInput) qtyInput.value = "";
-  if (unitSelect) unitSelect.value = "";
-
-  selectedIngredient = null;
-  hideDropdown(ingredientDropdown);
-  currentFocus = -1;
-}
-
-function removeIngredient(ingredientName) {
-  selectedIngredients = selectedIngredients.filter(
-    (item) => item.Name !== ingredientName
-  );
-  updateIngredientsDisplay();
-  updateIngredientsInput();
-}
-
-function addInstruction() {
-  if (!instructionInput) return;
-
-  const instruction = instructionInput.value.trim();
-
-  if (instruction === "") {
-    alert("Please enter an instruction.");
-    return;
-  }
-
-  if (selectedInstructions.includes(instruction)) {
-    alert("This instruction is already added.");
-    return;
-  }
-
-  selectedInstructions.push(instruction);
-  updateInstructionsDisplay();
-  updateInstructionsInput();
-
-  instructionInput.value = "";
-}
-
-function removeInstruction(instructionIndex) {
-  selectedInstructions.splice(instructionIndex, 1);
-  updateInstructionsDisplay();
-  updateInstructionsInput();
-}
-
-function updateIngredientsDisplay() {
-  if (!ingredientsList) return;
-
-  if (selectedIngredients.length === 0) {
-    ingredientsList.innerHTML =
-      '<small class="text-muted">Selected ingredients will appear here</small>';
-  } else {
-    ingredientsList.innerHTML = selectedIngredients
-      .map(
-        (ingredient) =>
-          `<span class="ingredient-tag">
-                ${ingredient.Quantity} ${ingredient.Unit} of ${ingredient.Name}
-                <span class="remove" onclick="removeIngredient('${ingredient.Name}')" title="Remove ingredient">&times;</span>
-            </span>`
-      )
-      .join("");
-  }
-}
-
-function updateInstructionsDisplay() {
-  if (!instructionsList) return;
-
-  if (selectedInstructions.length === 0) {
-    instructionsList.innerHTML =
-      '<small class="text-muted">Added instructions will appear here</small>';
-  } else {
-    instructionsList.innerHTML = selectedInstructions
-      .map(
-        (instruction, index) =>
-          `<div class="instruction-item">
-                <span class="instruction-number" ">${index + 1}</span>
-                <span class="instruction-text">${instruction}</span>
-                <span class="remove" onclick="removeInstruction(${index})" style=font-size: 18px;"title="Remove instruction">&times;</span>
-            </div>`
-      )
-      .join("");
-  }
-}
-
-function updateIngredientsInput() {
-  if (hiddenIngredientsInput) {
-    hiddenIngredientsInput.value = JSON.stringify(selectedIngredients);
-    console.log(
-      "Updated hidden ingredients input:",
-      hiddenIngredientsInput.value
-    );
-  }
-}
-
-function updateInstructionsInput() {
-  if (hiddenInstructionsInput) {
-    hiddenInstructionsInput.value = JSON.stringify(selectedInstructions);
-    console.log(
-      "Updated hidden instructions input:",
-      hiddenInstructionsInput.value
-    );
-  }
-}
-
-function showDropdown(dropdownElement) {
-  if (dropdownElement) {
-    dropdownElement.style.display = "block";
-  }
-}
-
-function hideDropdown(dropdownElement) {
-  if (dropdownElement) {
-    dropdownElement.style.display = "none";
-  }
-  currentFocus = -1;
-}
-
-fileUploadArea.addEventListener("click", () => fileInput.click());
-
-fileUploadArea.addEventListener("dragover", (e) => {
-  e.preventDefault();
-  fileUploadArea.classList.add("dragover");
-});
-
-fileUploadArea.addEventListener("dragleave", () => {
-  fileUploadArea.classList.remove("dragover");
-});
-
-fileUploadArea.addEventListener("drop", (e) => {
-  e.preventDefault();
-  fileUploadArea.classList.remove("dragover");
-  const files = e.dataTransfer.files;
-  if (files.length > 0) {
-    handleFileSelect(files[0]);
-    setFileToInput(files[0]);
-  }
-});
-
-fileInput.addEventListener("change", (e) => {
-  if (e.target.files && e.target.files[0]) {
-    handleFileSelect(e.target.files[0]);
-  }
-});
-
-function handleFileSelect(file) {
-  if (file.type.startsWith("image/")) {
-    const reader = new FileReader();
-    reader.onload = (e) => {
-      imagePreview.innerHTML = `
-                <img id="image-preview" src="${e.target.result}" alt="Recipe preview">
-                <p style="margin-top: 0.5rem; color: #4CAF50; font-weight: 500;">✓ Image uploaded successfully</p>
-            `;
-    };
-    reader.readAsDataURL(file);
-  }
-}
-
-function setFileToInput(file) {
-  const dataTransfer = new DataTransfer();
-  dataTransfer.items.add(file);
-
-  fileInput.files = dataTransfer.files;
-}
Index: triMatch/wwwroot/js/RecipeIndex.js
===================================================================
--- NutriMatch/wwwroot/js/RecipeIndex.js	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,775 +1,0 @@
-let currentPage = window.recipeData?.currentPage || 1;
-let hasMorePages = window.recipeData?.hasMorePages || false;
-let isLoading = false;
-let showingFavoritesOnly = false;
-let allLoadedRecipes = [];
-
-document.addEventListener("DOMContentLoaded", function () {
-  const searchInput = document.getElementById("searchInput");
-
-  searchInput.addEventListener("input", function () {
-    filterRecipes();
-  });
-
-  searchInput.addEventListener("keypress", function (e) {
-    if (e.key === "Enter") {
-      filterRecipes();
-    }
-  });
-
-  initializeInfiniteScroll();
-
-  filterRecipes();
-
-  checkForRecipeIdParameter();
-});
-
-function initializeInfiniteScroll() {
-  window.addEventListener("scroll", function () {
-    if (isLoading || !hasMorePages) return;
-
-    const scrollTop = window.pageYOffset || document.documentElement.scrollTop;
-    const windowHeight = window.innerHeight;
-    const documentHeight = document.documentElement.scrollHeight;
-
-    if (scrollTop + windowHeight >= documentHeight - 600) {
-      loadMoreRecipes();
-    }
-  });
-}
-
-async function loadMoreRecipes() {
-  if (isLoading || !hasMorePages) return;
-
-  isLoading = true;
-  const loadingSpinner = document.getElementById("loadingSpinner");
-  loadingSpinner.style.display = "block";
-
-  try {
-    const response = await fetch(
-      `/Recipes/Index?page=${currentPage + 1}&pageSize=6`,
-      {
-        method: "GET",
-        headers: {
-          "X-Requested-With": "XMLHttpRequest",
-        },
-      }
-    );
-
-    if (!response.ok) {
-      throw new Error("Network response was not ok");
-    }
-
-    const data = await response.json();
-
-    if (data.recipes && data.recipes.length > 0) {
-      appendRecipesToGrid(data.recipes);
-      currentPage = data.currentPage;
-      hasMorePages = data.hasMorePages;
-
-      document.getElementById("totalCount").textContent = data.totalRecipes;
-
-      if (!hasMorePages) {
-        document.getElementById("endOfResults").style.display = "block";
-      }
-    }
-  } catch (error) {
-    console.error("Error loading more recipes:", error);
-    showToast("Failed to load more recipes", "error");
-  } finally {
-    isLoading = false;
-    loadingSpinner.style.display = "none";
-  }
-}
-
-function appendRecipesToGrid(recipes) {
-  const recipeGrid = document.getElementById("recipeGrid");
-
-  recipes.forEach((recipe) => {
-    allLoadedRecipes.push(recipe);
-
-    const recipeCard = createRecipeCard(recipe);
-    recipeGrid.appendChild(recipeCard);
-  });
-
-  filterRecipes();
-}
-
-function createRecipeCard(recipe) {
-  const card = document.createElement("div");
-  card.className = "recipe-card";
-  card.setAttribute("data-calories", recipe.calories);
-  card.setAttribute("data-protein", recipe.protein);
-  card.setAttribute("data-carbs", recipe.carbs);
-  card.setAttribute("data-fat", recipe.fat);
-  card.onclick = () => showRecipeDetails(recipe.id, false);
-
-  const truncatedTitle =
-    recipe.title.length > 30
-      ? recipe.title.substring(0, 30) + "…"
-      : recipe.title;
-
-  const truncatedUserName =
-    recipe.userName.length > 23
-      ? recipe.userName.substring(0, 23) + "…"
-      : recipe.userName;
-
-  card.innerHTML = `
-        ${
-          !recipe.isOwner
-            ? `
-            <button class="favorite-btn"
-                onclick="event.stopPropagation(); toggleFavoriteFromIndex(this, ${
-                  recipe.id
-                })"
-                data-recipe-id="${recipe.id}" data-favorited="${
-                recipe.isFavorited
-              }">
-                <i class="${recipe.isFavorited ? "fas" : "far"} fa-heart"></i>
-            </button>
-        `
-            : ""
-        }
-        <img src="${recipe.imageUrl}" alt="${
-    recipe.title
-  }" class="recipe-image">
-        <div class="recipe-content">
-            <h3 class="recipe-title">${truncatedTitle}</h3>
-            <div class="recipe-meta">
-                <span class="rating">
-                    <i class="fas fa-star"></i> ${recipe.rating}
-                </span>
-                <span>
-                    <i class="fas fa-user"></i>
-                    ${truncatedUserName}
-                </span>
-                <span><i class="fas fa-calendar"> </i> ${
-                  recipe.createdAt
-                }</span>
-            </div>
-            <div class="recipe-macros">
-                <div class="macro-item">
-                    <div class="macro-value">${recipe.calories}</div>
-                    <div class="macro-label">Cal</div>
-                </div>
-                <div class="macro-item">
-                    <div class="macro-value">${recipe.protein}</div>
-                    <div class="macro-label">Protein</div>
-                </div>
-                <div class="macro-item">
-                    <div class="macro-value">${recipe.carbs}</div>
-                    <div class="macro-label">Carbs</div>
-                </div>
-                <div class="macro-item">
-                    <div class="macro-value">${recipe.fat}</div>
-                    <div class="macro-label">Fats</div>
-                </div>
-            </div>
-        </div>
-    `;
-
-  return card;
-}
-
-function showRecipeDetails(recipeId) {
-  const clickedCard = event.currentTarget;
-  clickedCard.classList.add("loading");
-
-  const params = new URLSearchParams({
-    isOwner: false,
-    recipeDetailsDisplayContorol: "Index",
-  });
-
-  fetch(`/Recipes/Details/${recipeId}?${params}`)
-    .then((response) => {
-      if (!response.ok) {
-        throw new Error("Network response was not ok");
-      }
-      return response.text();
-    })
-    .then((html) => {
-      const modalContainer = document.getElementById("modalWindow");
-      modalContainer.innerHTML = html;
-
-      const scripts = modalContainer.querySelectorAll("script");
-      scripts.forEach((script) => {
-        const newScript = document.createElement("script");
-        if (script.src) {
-          newScript.src = script.src;
-        } else {
-          newScript.textContent = script.textContent;
-        }
-        document.body.appendChild(newScript);
-        document.body.removeChild(newScript);
-      });
-
-      const modalElement = modalContainer.querySelector(".modal");
-      if (modalElement) {
-        const modal = new bootstrap.Modal(modalElement);
-        modal.show();
-
-        modalElement.addEventListener("hidden.bs.modal", function () {
-          modalContainer.innerHTML = "";
-          clickedCard.classList.remove("loading");
-        });
-
-        modalElement.addEventListener("shown.bs.modal", function () {
-          clickedCard.classList.remove("loading");
-        });
-      } else {
-        clickedCard.classList.remove("loading");
-      }
-    })
-    .catch((err) => {
-      console.error("Failed to fetch recipe details", err);
-      alert("Failed to load recipe details. Please try again.");
-      clickedCard.classList.remove("loading");
-    });
-}
-
-function updateSlider(type) {
-  const minSlider = document.getElementById(type + "Min");
-  const maxSlider = document.getElementById(type + "Max");
-  const valueDisplay = document.getElementById(type + "Value");
-  const fill = document.getElementById(type + "Fill");
-
-  let minVal = parseInt(minSlider.value);
-  let maxVal = parseInt(maxSlider.value);
-
-  if (minVal > maxVal) {
-    if (event.target === minSlider) {
-      maxSlider.value = minVal;
-      maxVal = minVal;
-    } else {
-      minSlider.value = maxVal;
-      minVal = maxVal;
-    }
-  }
-
-  valueDisplay.textContent = minVal + " - " + maxVal;
-
-  const min = parseInt(minSlider.min);
-  const max = parseInt(minSlider.max);
-  const range = max - min;
-
-  const leftPercent = ((minVal - min) / range) * 100;
-  const rightPercent = ((maxVal - min) / range) * 100;
-
-  fill.style.left = leftPercent + "%";
-  fill.style.width = rightPercent - leftPercent + "%";
-
-  filterRecipes();
-}
-
-function filterRecipes() {
-  const calories = {
-    min: parseInt(document.getElementById("caloriesMin").value),
-    max: parseInt(document.getElementById("caloriesMax").value),
-  };
-  const protein = {
-    min: parseInt(document.getElementById("proteinMin").value),
-    max: parseInt(document.getElementById("proteinMax").value),
-  };
-  const carbs = {
-    min: parseInt(document.getElementById("carbsMin").value),
-    max: parseInt(document.getElementById("carbsMax").value),
-  };
-  const fats = {
-    min: parseInt(document.getElementById("fatsMin").value),
-    max: parseInt(document.getElementById("fatsMax").value),
-  };
-
-  const searchTerm = document.getElementById("searchInput").value.toLowerCase();
-
-  const recipeCards = document.querySelectorAll(".recipe-card");
-  let visibleCount = 0;
-
-  recipeCards.forEach((card) => {
-    const title = card.querySelector(".recipe-title").textContent.toLowerCase();
-
-    const recipeCalories = parseInt(card.dataset.calories) || 0;
-    const recipeProtein = parseInt(card.dataset.protein) || 0;
-    const recipeCarbs = parseInt(card.dataset.carbs) || 0;
-    const recipeFats = parseInt(card.dataset.fat) || 0;
-
-    const favoriteButton = card.querySelector(".favorite-btn");
-    const isFavorited = favoriteButton
-      ? favoriteButton.getAttribute("data-favorited") === "true"
-      : false;
-
-    const matchesSearch = searchTerm === "" || title.includes(searchTerm);
-
-    const matchesMacros =
-      recipeCalories >= calories.min &&
-      recipeCalories <= calories.max &&
-      recipeProtein >= protein.min &&
-      recipeProtein <= protein.max &&
-      recipeCarbs >= carbs.min &&
-      recipeCarbs <= carbs.max &&
-      recipeFats >= fats.min &&
-      recipeFats <= fats.max;
-
-    const matchesFavorites = !showingFavoritesOnly || isFavorited;
-
-    if (matchesSearch && matchesMacros && matchesFavorites) {
-      card.style.display = "block";
-      visibleCount++;
-    } else {
-      card.style.display = "none";
-    }
-  });
-
-  document.getElementById("visibleCount").textContent = visibleCount;
-}
-
-function resetFilters() {
-  document.getElementById("caloriesMin").value = 0;
-  document.getElementById("caloriesMax").value = 2000;
-  document.getElementById("proteinMin").value = 0;
-  document.getElementById("proteinMax").value = 150;
-  document.getElementById("carbsMin").value = 0;
-  document.getElementById("carbsMax").value = 200;
-  document.getElementById("fatsMin").value = 0;
-  document.getElementById("fatsMax").value = 150;
-  document.getElementById("searchInput").value = "";
-
-  if (showingFavoritesOnly) {
-    toggleFavoritesFilter();
-  }
-
-  updateSlider("calories");
-  updateSlider("protein");
-  updateSlider("carbs");
-  updateSlider("fats");
-
-  filterRecipes();
-}
-
-function openDeleteModal(recipeId, isOwner) {
-  const deleteButton = event.target.closest("button");
-  deleteButton.classList.add("loading");
-
-  const recipeModalContainer = document.getElementById("modalWindow");
-  const recipeModalElement = recipeModalContainer.querySelector(".modal");
-  const savedRecipeHtml = recipeModalContainer.innerHTML;
-
-  let recipeModalWasOpen = false;
-  if (recipeModalElement && recipeModalElement.classList.contains("show")) {
-    const recipeModalInstance = bootstrap.Modal.getInstance(recipeModalElement);
-    if (recipeModalInstance) {
-      recipeModalInstance.hide();
-      recipeModalWasOpen = true;
-    }
-  }
-
-  fetch(`/Recipes/Details/${recipeId}/${isOwner}`)
-    .then((response) => response.text())
-    .then((html) => {
-      const deleteModalContainer = document.getElementById("modalWindowDelete");
-      deleteModalContainer.innerHTML = html;
-
-      const deleteModalElement = deleteModalContainer.querySelector(".modal");
-      if (deleteModalElement) {
-        const deleteModal = new bootstrap.Modal(deleteModalElement);
-        deleteModal.show();
-
-        deleteModalElement.addEventListener("hidden.bs.modal", function () {
-          deleteButton.classList.remove("loading");
-          deleteModalContainer.innerHTML = "";
-
-          if (recipeModalWasOpen && savedRecipeHtml.trim() !== "") {
-            recipeModalContainer.innerHTML = savedRecipeHtml;
-            const restoredModal = recipeModalContainer.querySelector(".modal");
-            if (restoredModal) {
-              const restoredInstance = new bootstrap.Modal(restoredModal);
-              restoredInstance.show();
-            }
-          }
-        });
-
-        deleteModalElement.addEventListener("shown.bs.modal", function () {
-          deleteButton.classList.remove("loading");
-        });
-      } else {
-        deleteButton.classList.remove("loading");
-      }
-    })
-    .catch((error) => {
-      console.error("Error loading delete modal:", error);
-      deleteButton.classList.remove("loading");
-      location.href = `/Recipes/Delete/${recipeId}`;
-    });
-}
-
-async function toggleFavoriteFromIndex(button, recipeId) {
-  try {
-    const token = document.querySelector(
-      'input[name="__RequestVerificationToken"]'
-    )?.value;
-
-    const response = await fetch("/Recipes/ToggleFavorite", {
-      method: "POST",
-      headers: {
-        "Content-Type": "application/json",
-        RequestVerificationToken: token,
-      },
-      body: JSON.stringify({ recipeId: recipeId }),
-    });
-
-    const result = await response.json();
-
-    if (result.success) {
-      const heartIcon = button.querySelector("i");
-      const isFavorited = result.isFavorited;
-
-      if (isFavorited) {
-        heartIcon.classList.remove("far");
-        heartIcon.classList.add("fas");
-        button.setAttribute("data-favorited", "true");
-      } else {
-        heartIcon.classList.remove("fas");
-        heartIcon.classList.add("far");
-        button.setAttribute("data-favorited", "false");
-      }
-
-      if (showingFavoritesOnly) {
-        setTimeout(() => filterRecipes(), 100);
-      }
-
-      showToast(result.message, "success");
-    } else {
-      showToast(result.message || "Failed to update favorite", "error");
-    }
-  } catch (error) {
-    console.error("Error toggling favorite:", error);
-    showToast("An error occurred while updating favorites", "error");
-  }
-}
-
-function showToast(message, type = "info") {
-  const toast = document.createElement("div");
-  toast.className = `toast toast-${type}`;
-  toast.style.cssText = `
-        position: fixed;
-        top: 20px;
-        right: 20px;
-        padding: 12px 20px;
-        border-radius: 4px;
-        color: white;
-        font-weight: 500;
-        z-index: 10000;
-        opacity: 0;
-        transition: opacity 0.3s ease;
-    `;
-
-  const colors = {
-    success: "#10b981",
-    error: "#ef4444",
-    info: "#3b82f6",
-  };
-  toast.style.backgroundColor = colors[type] || colors.info;
-
-  toast.textContent = message;
-  document.body.appendChild(toast);
-
-  setTimeout(() => (toast.style.opacity = "1"), 100);
-
-  setTimeout(() => {
-    toast.style.opacity = "0";
-    setTimeout(() => document.body.removeChild(toast), 300);
-  }, 3000);
-}
-
-function toggleFavoritesFilter() {
-  const button = document.getElementById("favoritesToggle");
-
-  showingFavoritesOnly = !showingFavoritesOnly;
-
-  if (showingFavoritesOnly) {
-    button.innerHTML = '<i class="fas fa-heart me-2"></i>Show All Recipes';
-    button.className = "btn btn-success w-100";
-  } else {
-    button.innerHTML = '<i class="fas fa-heart me-2"></i>Show Favorites Only';
-    button.className = "btn btn-outline-success w-100";
-  }
-
-  filterRecipes();
-}
-
-let userPreferences = {
-  tags: [],
-  followedRestaurants: [],
-};
-
-window.addEventListener("load", function () {
-  if (document.querySelector(".notification-bell")) {
-    loadUserPreferences();
-  }
-});
-
-async function loadUserPreferences() {
-  try {
-    const response = await fetch("/Restaurants/GetUserPreferences");
-    if (response.ok) {
-      userPreferences = await response.json();
-      updateFollowButtons();
-    }
-  } catch (error) {
-    console.error("Error loading preferences:", error);
-  }
-}
-
-function toggleTagExpansion(tagName) {
-  const threshold = document.getElementById(`threshold-${tagName}`);
-  const tagItem = threshold.previousElementSibling;
-  const checkbox = document.getElementById(`tag-${tagName}`);
-
-  const isExpanded = threshold.classList.contains("show");
-  threshold.classList.toggle("show", !isExpanded);
-  tagItem.classList.toggle("expanded", !isExpanded);
-
-  if (!isExpanded) {
-    checkbox.checked = true;
-  }
-}
-
-document.addEventListener("DOMContentLoaded", function () {
-  const checkboxes = document.querySelectorAll(
-    '.tag-item input[type="checkbox"]'
-  );
-  checkboxes.forEach((checkbox) => {
-    checkbox.addEventListener("click", function (e) {
-      e.stopPropagation();
-
-      const tagName = this.value;
-      const threshold = document.getElementById(`threshold-${tagName}`);
-
-      if (!this.checked && threshold) {
-        threshold.classList.remove("show");
-        threshold.previousElementSibling.classList.remove("expanded");
-      }
-    });
-  });
-});
-
-function openPreferencesModal() {
-  const modal = new bootstrap.Modal(
-    document.getElementById("preferencesModal")
-  );
-
-  loadUserPreferencesForModal();
-
-  modal.show();
-}
-
-async function loadUserPreferencesForModal() {
-  try {
-    const response = await fetch("/Restaurants/GetUserPreferences");
-    if (response.ok) {
-      const data = await response.json();
-
-      document
-        .querySelectorAll('.tag-selection input[type="checkbox"]')
-        .forEach((cb) => {
-          cb.checked = false;
-        });
-      document.querySelectorAll(".tag-threshold").forEach((threshold) => {
-        threshold.classList.remove("show");
-      });
-      document.querySelectorAll(".tag-item").forEach((item) => {
-        item.classList.remove("expanded");
-      });
-
-      data.preferences.forEach((pref) => {
-        const checkbox = document.getElementById(`tag-${pref.tag}`);
-        if (checkbox) {
-          checkbox.checked = true;
-
-          if (
-            pref.thresholdValue !== null &&
-            pref.thresholdValue !== undefined
-          ) {
-            const valueInput = document.getElementById(`value-${pref.tag}`);
-            const threshold = document.getElementById(`threshold-${pref.tag}`);
-
-            if (valueInput && threshold) {
-              valueInput.value = pref.thresholdValue;
-              threshold.classList.add("show");
-              threshold.previousElementSibling.classList.add("expanded");
-            }
-          }
-        }
-      });
-    }
-  } catch (error) {
-    console.error("Error loading preferences:", error);
-  }
-}
-
-async function savePreferences() {
-  const preferences = [];
-
-  document
-    .querySelectorAll('.tag-selection input[type="checkbox"]:checked')
-    .forEach((cb) => {
-      const tagValue = cb.value;
-      const valueInput = document.getElementById(`value-${tagValue}`);
-
-      const preference = {
-        tag: tagValue,
-        thresholdValue: valueInput ? parseInt(valueInput.value) : null,
-      };
-
-      preferences.push(preference);
-    });
-
-  const token = document.querySelector(
-    'input[name="__RequestVerificationToken"]'
-  ).value;
-
-  try {
-    const response = await fetch("/Restaurants/UpdateTagPreferences", {
-      method: "POST",
-      headers: {
-        "Content-Type": "application/json",
-        RequestVerificationToken: token,
-      },
-      body: JSON.stringify(preferences),
-    });
-
-    const data = await response.json();
-    if (data.success) {
-      showSuccess(
-        "Preferences saved! You will receive notifications for matching meals."
-      );
-      bootstrap.Modal.getInstance(
-        document.getElementById("preferencesModal")
-      ).hide();
-    } else {
-      showError("Failed to save preferences");
-    }
-  } catch (error) {
-    console.error("Error saving preferences:", error);
-    showError("Error saving preferences");
-  }
-}
-
-function showSuccess(message) {
-  createToast(message, "success");
-}
-
-function showError(message) {
-  createToast(message, "danger");
-}
-
-function showInfo(message) {
-  createToast(message, "info");
-}
-
-function createToast(message, type = "info") {
-  const toastContainer =
-    document.getElementById("toast-container") || createToastContainer();
-
-  const toastId = "toast-" + Date.now();
-  const toast = document.createElement("div");
-  toast.id = toastId;
-  toast.className = `toast align-items-center text-white bg-${type} border-0`;
-  toast.setAttribute("role", "alert");
-
-  const iconMap = {
-    success: "fas fa-check-circle",
-    danger: "fas fa-exclamation-circle",
-    info: "fas fa-info-circle",
-  };
-
-  toast.innerHTML = `
-        <div class="d-flex">
-            <div class="toast-body">
-                <i class="${iconMap[type]} me-2"></i>
-                ${message}
-            </div>
-            <button type="button" class="btn-close btn-close-white me-2 m-auto" onclick="removeToast('${toastId}')"></button>
-        </div>
-    `;
-
-  toastContainer.appendChild(toast);
-  toast.style.display = "block";
-  setTimeout(() => toast.classList.add("show"), 100);
-  setTimeout(() => removeToast(toastId), 5000);
-}
-
-function removeToast(toastId) {
-  const toast = document.getElementById(toastId);
-  if (toast) {
-    toast.classList.remove("show");
-    setTimeout(() => toast.remove(), 300);
-  }
-}
-
-function createToastContainer() {
-  const container = document.createElement("div");
-  container.id = "toast-container";
-  container.className = "toast-container position-fixed top-0 end-0 p-3";
-  container.style.zIndex = "10000";
-  document.body.appendChild(container);
-  return container;
-}
-
-function checkForRecipeIdParameter() {
-  const urlParams = new URLSearchParams(window.location.search);
-  const recipeId = urlParams.get("recipeId");
-
-  if (recipeId) {
-    const newUrl = window.location.pathname;
-    window.history.replaceState({}, document.title, newUrl);
-    al;
-    setTimeout(() => {
-      showRecipeDetailsFromNotification(recipeId);
-    }, 300);
-  }
-}
-
-function showRecipeDetailsFromNotification(recipeId) {
-  const params = new URLSearchParams({
-    isOwner: false,
-    recipeDetailsDisplayContorol: "Index",
-  });
-
-  fetch(`/Recipes/Details/${recipeId}?${params}`)
-    .then((response) => {
-      if (!response.ok) {
-        throw new Error("Network response was not ok");
-      }
-      return response.text();
-    })
-    .then((html) => {
-      const modalContainer = document.getElementById("modalWindow");
-      modalContainer.innerHTML = html;
-
-      const scripts = modalContainer.querySelectorAll("script");
-      scripts.forEach((script) => {
-        const newScript = document.createElement("script");
-        if (script.src) {
-          newScript.src = script.src;
-        } else {
-          newScript.textContent = script.textContent;
-        }
-        document.body.appendChild(newScript);
-        document.body.removeChild(newScript);
-      });
-
-      const modalElement = modalContainer.querySelector(".modal");
-      if (modalElement) {
-        const modal = new bootstrap.Modal(modalElement);
-        modal.show();
-
-        modalElement.addEventListener("hidden.bs.modal", function () {
-          modalContainer.innerHTML = "";
-        });
-      }
-    })
-    .catch((err) => {
-      console.error("Failed to fetch recipe details", err);
-      showToast("Failed to load recipe details. Please try again.", "error");
-    });
-}
Index: triMatch/wwwroot/js/RestaurantIndex.js
===================================================================
--- NutriMatch/wwwroot/js/RestaurantIndex.js	(revision 7d86a11e63b56e75d10177f1f24be1ddd20f75ee)
+++ 	(revision )
@@ -1,545 +1,0 @@
-let currentFilters = {
-  calories: { min: 0, max: 2000 },
-  protein: { min: 0, max: 150 },
-  carbs: { min: 0, max: 150 },
-  fats: { min: 0, max: 150 },
-};
-
-document.addEventListener("DOMContentLoaded", function () {
-  initializeFilters();
-  updateFilterValues();
-
-  checkForRestaurantIdParameter();
-});
-
-function itemMatchesFilters(item) {
-  return (
-    item.calories >= currentFilters.calories.min &&
-    item.calories <= currentFilters.calories.max &&
-    item.protein >= currentFilters.protein.min &&
-    item.protein <= currentFilters.protein.max &&
-    item.carbs >= currentFilters.carbs.min &&
-    item.carbs <= currentFilters.carbs.max &&
-    item.fats >= currentFilters.fats.min &&
-    item.fats <= currentFilters.fats.max
-  );
-}
-
-function areFiltersDefault() {
-  return (
-    currentFilters.calories.min === 0 &&
-    currentFilters.calories.max === 2000 &&
-    currentFilters.protein.min === 0 &&
-    currentFilters.protein.max === 150 &&
-    currentFilters.carbs.min === 0 &&
-    currentFilters.carbs.max === 150 &&
-    currentFilters.fats.min === 0 &&
-    currentFilters.fats.max === 150
-  );
-}
-
-function updateFilterValues() {
-  document.getElementById(
-    "caloriesValue"
-  ).textContent = `${currentFilters.calories.min} - ${currentFilters.calories.max}`;
-  document.getElementById(
-    "proteinValue"
-  ).textContent = `${currentFilters.protein.min} - ${currentFilters.protein.max}`;
-  document.getElementById(
-    "carbsValue"
-  ).textContent = `${currentFilters.carbs.min} - ${currentFilters.carbs.max}`;
-  document.getElementById(
-    "fatsValue"
-  ).textContent = `${currentFilters.fats.min} - ${currentFilters.fats.max}`;
-}
-
-function applyFilters() {
-  currentFilters.calories.min = parseInt(
-    document.getElementById("caloriesMin").value
-  );
-  currentFilters.calories.max = parseInt(
-    document.getElementById("caloriesMax").value
-  );
-  currentFilters.protein.min = parseInt(
-    document.getElementById("proteinMin").value
-  );
-  currentFilters.protein.max = parseInt(
-    document.getElementById("proteinMax").value
-  );
-  currentFilters.carbs.min = parseInt(
-    document.getElementById("carbsMin").value
-  );
-  currentFilters.carbs.max = parseInt(
-    document.getElementById("carbsMax").value
-  );
-  currentFilters.fats.min = parseInt(document.getElementById("fatsMin").value);
-  currentFilters.fats.max = parseInt(document.getElementById("fatsMax").value);
-
-  updateFilterValues();
-}
-
-function openMenu(restaurantId) {
-  const f = {
-    minCalories: currentFilters.calories.min,
-    maxCalories: currentFilters.calories.max,
-    minProtein: currentFilters.protein.min,
-    maxProtein: currentFilters.protein.max,
-    minCarbs: currentFilters.carbs.min,
-    maxCarbs: currentFilters.carbs.max,
-    minFats: currentFilters.fats.min,
-    maxFats: currentFilters.fats.max,
-  };
-
-  const query = new URLSearchParams(f).toString();
-
-  const menuContainer = document.getElementById("modal-content");
-  menuContainer.innerHTML =
-    '<div class="text-center p-4"><i class="fas fa-spinner fa-spin"></i> Loading menu...</div>';
-
-  const modal = new bootstrap.Modal(document.getElementById("menuModal"));
-  modal.show();
-
-  fetch(`/Restaurants/GetRestaurantMeals/${restaurantId}?${query}`)
-    .then((response) => {
-      console.log("Response status:", response.status);
-      if (!response.ok) {
-        throw new Error(`HTTP error! status: ${response.status}`);
-      }
-      return response.text();
-    })
-    .then((html) => {
-      console.log("Received HTML length:", html.length);
-      menuContainer.innerHTML = html;
-
-      const scripts = menuContainer.querySelectorAll("script");
-      scripts.forEach((script) => {
-        const newScript = document.createElement("script");
-        if (script.src) {
-          newScript.src = script.src;
-        } else {
-          newScript.textContent = script.textContent;
-        }
-        document.body.appendChild(newScript);
-        document.body.removeChild(newScript);
-      });
-    })
-    .catch((err) => {
-      console.error("Failed to fetch menu details:", err);
-      menuContainer.innerHTML = `
-            <div class="alert alert-danger" role="alert">
-                <i class="fas fa-exclamation-triangle me-2"></i>
-                Failed to load menu details. Please try again.
-                <br><small>Error: ${err.message}</small>
-            </div>
-        `;
-    });
-}
-
-function toggleItemDetails(headerElement) {
-  const menuItem = headerElement.closest(".menu-item");
-  const details = menuItem.querySelector(".menu-item-details");
-  const chevron = headerElement.querySelector(".chevron-icon");
-
-  const isShown = details.classList.contains("show");
-
-  details.classList.toggle("show", !isShown);
-  chevron.classList.toggle("fa-chevron-up", !isShown);
-  chevron.classList.toggle("fa-chevron-down", isShown);
-}
-
-function initializeFilters() {
-  const sliders = [
-    "caloriesMin",
-    "caloriesMax",
-    "proteinMin",
-    "proteinMax",
-    "carbsMin",
-    "carbsMax",
-    "fatsMin",
-    "fatsMax",
-  ];
-
-  sliders.forEach((sliderId) => {
-    document.getElementById(sliderId).addEventListener("input", function () {
-      const type = sliderId.replace("Min", "").replace("Max", "");
-      const isMin = sliderId.includes("Min");
-
-      const minSlider = document.getElementById(type + "Min");
-      const maxSlider = document.getElementById(type + "Max");
-
-      if (isMin && parseInt(minSlider.value) > parseInt(maxSlider.value)) {
-        maxSlider.value = minSlider.value;
-      } else if (
-        !isMin &&
-        parseInt(maxSlider.value) < parseInt(minSlider.value)
-      ) {
-        minSlider.value = maxSlider.value;
-      }
-
-      currentFilters[type].min = parseInt(minSlider.value);
-      currentFilters[type].max = parseInt(maxSlider.value);
-
-      updateFilterValues();
-    });
-  });
-}
-
-function updateSlider(type) {
-  const minSlider = document.getElementById(type + "Min");
-  const maxSlider = document.getElementById(type + "Max");
-  const valueDisplay = document.getElementById(type + "Value");
-  const fill = document.getElementById(type + "Fill");
-
-  let minVal = parseInt(minSlider.value);
-  let maxVal = parseInt(maxSlider.value);
-
-  if (minVal > maxVal) {
-    if (event.target === minSlider) {
-      maxSlider.value = minVal;
-      maxVal = minVal;
-    } else {
-      minSlider.value = maxVal;
-      minVal = maxVal;
-    }
-  }
-
-  valueDisplay.textContent = minVal + " - " + maxVal;
-
-  const min = parseInt(minSlider.min);
-  const max = parseInt(minSlider.max);
-  const range = max - min;
-
-  const leftPercent = ((minVal - min) / range) * 100;
-  const rightPercent = ((maxVal - min) / range) * 100;
-
-  fill.style.left = leftPercent + "%";
-  fill.style.width = rightPercent - leftPercent + "%";
-
-  applyFilters();
-}
-
-function resetFilters() {
-  document.getElementById("caloriesMin").value = 0;
-  document.getElementById("caloriesMax").value = 2000;
-  document.getElementById("proteinMin").value = 0;
-  document.getElementById("proteinMax").value = 150;
-  document.getElementById("carbsMin").value = 0;
-  document.getElementById("carbsMax").value = 150;
-  document.getElementById("fatsMin").value = 0;
-  document.getElementById("fatsMax").value = 150;
-
-  updateSlider("calories");
-  updateSlider("protein");
-  updateSlider("carbs");
-  updateSlider("fats");
-}
-
-let userPreferences = {
-  tags: [],
-  followedRestaurants: [],
-};
-
-window.addEventListener("load", function () {
-  if (document.querySelector(".notification-bell")) {
-    loadUserPreferences();
-  }
-});
-
-async function loadUserPreferences() {
-  try {
-    const response = await fetch("/Restaurants/GetUserPreferences");
-    if (response.ok) {
-      userPreferences = await response.json();
-      updateFollowButtons();
-    }
-  } catch (error) {
-    console.error("Error loading preferences:", error);
-  }
-}
-
-function openPreferencesModal() {
-  const modal = new bootstrap.Modal(
-    document.getElementById("preferencesModal")
-  );
-
-  userPreferences.tags.forEach((tag) => {
-    const checkbox = document.getElementById(`tag-${tag}`);
-    if (checkbox) {
-      checkbox.checked = true;
-    }
-  });
-
-  modal.show();
-}
-
-async function toggleFollow(restaurantId, event) {
-  event.stopPropagation();
-
-  const token = document.querySelector(
-    'input[name="__RequestVerificationToken"]'
-  ).value;
-  const btn = event.currentTarget;
-
-  try {
-    const response = await fetch("/Restaurants/ToggleFollowRestaurant", {
-      method: "POST",
-      headers: {
-        "Content-Type": "application/json",
-        RequestVerificationToken: token,
-      },
-      body: JSON.stringify(restaurantId),
-    });
-
-    const data = await response.json();
-    if (data.success) {
-      const icon = btn.querySelector("i");
-
-      if (data.following) {
-        btn.classList.add("active");
-        icon.classList.remove("far");
-        icon.classList.add("fas");
-
-        btn.classList.add("just-activated");
-        setTimeout(() => btn.classList.remove("just-activated"), 500);
-
-        showSuccess("You will be notified when this restaurant adds new meals");
-        userPreferences.followedRestaurants.push(restaurantId);
-      } else {
-        btn.classList.remove("active");
-        icon.classList.remove("fas");
-        icon.classList.add("far");
-
-        showInfo("Notifications disabled for this restaurant");
-        userPreferences.followedRestaurants =
-          userPreferences.followedRestaurants.filter(
-            (id) => id !== restaurantId
-          );
-      }
-    }
-  } catch (error) {
-    console.error("Error toggling follow:", error);
-    showError("Error updating notification settings");
-  }
-}
-
-function updateFollowButtons() {
-  document.querySelectorAll(".notification-bell").forEach((btn) => {
-    const restaurantId = parseInt(btn.dataset.restaurantId);
-    if (userPreferences.followedRestaurants.includes(restaurantId)) {
-      btn.classList.add("active");
-      const icon = btn.querySelector("i");
-      icon.classList.remove("far");
-      icon.classList.add("fas");
-    }
-  });
-}
-
-function showSuccess(message) {
-  createToast(message, "success");
-}
-
-function showError(message) {
-  createToast(message, "danger");
-}
-
-function showInfo(message) {
-  createToast(message, "info");
-}
-
-function createToast(message, type = "info") {
-  const toastContainer =
-    document.getElementById("toast-container") || createToastContainer();
-
-  const toastId = "toast-" + Date.now();
-  const toast = document.createElement("div");
-  toast.id = toastId;
-  toast.className = `toast align-items-center text-white bg-${type} border-0`;
-  toast.setAttribute("role", "alert");
-
-  const iconMap = {
-    success: "fas fa-check-circle",
-    danger: "fas fa-exclamation-circle",
-    info: "fas fa-info-circle",
-  };
-
-  toast.innerHTML = `
-        <div class="d-flex">
-            <div class="toast-body">
-                <i class="${iconMap[type]} me-2"></i>
-                ${message}
-            </div>
-            <button type="button" class="btn-close btn-close-white me-2 m-auto" onclick="removeToast('${toastId}')"></button>
-        </div>
-    `;
-
-  toastContainer.appendChild(toast);
-  toast.style.display = "block";
-  setTimeout(() => toast.classList.add("show"), 100);
-  setTimeout(() => removeToast(toastId), 5000);
-}
-
-function removeToast(toastId) {
-  const toast = document.getElementById(toastId);
-  if (toast) {
-    toast.classList.remove("show");
-    setTimeout(() => toast.remove(), 300);
-  }
-}
-
-function createToastContainer() {
-  const container = document.createElement("div");
-  container.id = "toast-container";
-  container.className = "toast-container position-fixed top-0 end-0 p-3";
-  container.style.zIndex = "10000";
-  document.body.appendChild(container);
-  return container;
-}
-
-function toggleTagExpansion(tagName) {
-  const threshold = document.getElementById(`threshold-${tagName}`);
-  const tagItem = threshold.previousElementSibling;
-  const checkbox = document.getElementById(`tag-${tagName}`);
-
-  const isExpanded = threshold.classList.contains("show");
-  threshold.classList.toggle("show", !isExpanded);
-  tagItem.classList.toggle("expanded", !isExpanded);
-
-  if (!isExpanded) {
-    checkbox.checked = true;
-  }
-}
-
-document.addEventListener("DOMContentLoaded", function () {
-  const checkboxes = document.querySelectorAll(
-    '.tag-item input[type="checkbox"]'
-  );
-  checkboxes.forEach((checkbox) => {
-    checkbox.addEventListener("click", function (e) {
-      e.stopPropagation();
-
-      const tagName = this.value;
-      const threshold = document.getElementById(`threshold-${tagName}`);
-
-      if (!this.checked && threshold) {
-        threshold.classList.remove("show");
-        threshold.previousElementSibling.classList.remove("expanded");
-      }
-    });
-  });
-});
-
-function openPreferencesModal() {
-  const modal = new bootstrap.Modal(
-    document.getElementById("preferencesModal")
-  );
-
-  loadUserPreferencesForModal();
-
-  modal.show();
-}
-
-async function loadUserPreferencesForModal() {
-  try {
-    const response = await fetch("/Restaurants/GetUserPreferences");
-    if (response.ok) {
-      const data = await response.json();
-
-      document
-        .querySelectorAll('.tag-selection input[type="checkbox"]')
-        .forEach((cb) => {
-          cb.checked = false;
-        });
-      document.querySelectorAll(".tag-threshold").forEach((threshold) => {
-        threshold.classList.remove("show");
-      });
-      document.querySelectorAll(".tag-item").forEach((item) => {
-        item.classList.remove("expanded");
-      });
-
-      data.preferences.forEach((pref) => {
-        const checkbox = document.getElementById(`tag-${pref.tag}`);
-        if (checkbox) {
-          checkbox.checked = true;
-
-          if (
-            pref.thresholdValue !== null &&
-            pref.thresholdValue !== undefined
-          ) {
-            const valueInput = document.getElementById(`value-${pref.tag}`);
-            const threshold = document.getElementById(`threshold-${pref.tag}`);
-
-            if (valueInput && threshold) {
-              valueInput.value = pref.thresholdValue;
-              threshold.classList.add("show");
-              threshold.previousElementSibling.classList.add("expanded");
-            }
-          }
-        }
-      });
-    }
-  } catch (error) {
-    console.error("Error loading preferences:", error);
-  }
-}
-
-async function savePreferences() {
-  const preferences = [];
-
-  document
-    .querySelectorAll('.tag-selection input[type="checkbox"]:checked')
-    .forEach((cb) => {
-      const tagValue = cb.value;
-      const valueInput = document.getElementById(`value-${tagValue}`);
-
-      const preference = {
-        tag: tagValue,
-        thresholdValue: valueInput ? parseInt(valueInput.value) : null,
-      };
-
-      preferences.push(preference);
-    });
-
-  const token = document.querySelector(
-    'input[name="__RequestVerificationToken"]'
-  ).value;
-
-  try {
-    const response = await fetch("/Restaurants/UpdateTagPreferences", {
-      method: "POST",
-      headers: {
-        "Content-Type": "application/json",
-        RequestVerificationToken: token,
-      },
-      body: JSON.stringify(preferences),
-    });
-
-    const data = await response.json();
-    if (data.success) {
-      showSuccess(
-        "Preferences saved! You will receive notifications for matching meals."
-      );
-      bootstrap.Modal.getInstance(
-        document.getElementById("preferencesModal")
-      ).hide();
-    } else {
-      showError("Failed to save preferences");
-    }
-  } catch (error) {
-    console.error("Error saving preferences:", error);
-    showError("Error saving preferences");
-  }
-}
-
-function checkForRestaurantIdParameter() {
-  const urlParams = new URLSearchParams(window.location.search);
-  const restaurantId = urlParams.get("restaurantId");
-
-  if (restaurantId) {
-    const newUrl = window.location.pathname;
-    window.history.replaceState({}, document.title, newUrl);
-
-    setTimeout(() => {
-      openMenu(parseInt(restaurantId));
-    }, 300);
-  }
-}
Index: NutriMatch/wwwroot/js/site.js
===================================================================
--- NutriMatch/wwwroot/js/site.js	(revision 5d48bf93fdd26aa14b8ae7ac68b61e5d60e3e2a8)
+++ NutriMatch/wwwroot/js/site.js	(revision 5d48bf93fdd26aa14b8ae7ac68b61e5d60e3e2a8)
@@ -0,0 +1,1 @@
+﻿// Please see documentation at https://learn.microsoft.com/aspnet/core/client-side/bundling-and-minification
