Index: NutriMatch/Controllers/RecipesController.cs
===================================================================
--- NutriMatch/Controllers/RecipesController.cs	(revision 083bca809028a181a47ef56f4cd6e642a84cf9e0)
+++ NutriMatch/Controllers/RecipesController.cs	(revision cb1d033d349ea5fc9a7753731c5747e40f380bc6)
@@ -62,4 +62,18 @@
             if (ModelState.IsValid)
             {
+                var file = Request.Form.Files.GetFile("RecipeImage");
+                if (file != null && file.Length > 0)
+                {
+                    var uploadsFolder = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot", "images");
+                    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);
+                    }
+                    recipe.ImageUrl = "/images/" + uniqueFileName;
+                } else {
+                    Console.WriteLine("No file uploaded or file is empty.");
+                }
                 _context.Add(recipe);
                 await _context.SaveChangesAsync();
@@ -80,8 +94,8 @@
                     });
                     Ingredient tempIngredient = _context.Ingredients.Find(i.Id);
-                    totalCalories += ConvertType(tempIngredient.Calories,i.Unit) * i.Quantity;
-                    totalProtein += ConvertType(tempIngredient.Protein,i.Unit) * i.Quantity;
-                    totalCarbs += ConvertType(tempIngredient.Carbs,i.Unit) * i.Quantity;
-                    totalFat += ConvertType(tempIngredient.Fat,i.Unit) * i.Quantity;
+                    totalCalories += ConvertType(tempIngredient.Calories, i.Unit) * i.Quantity;
+                    totalProtein += ConvertType(tempIngredient.Protein, i.Unit) * i.Quantity;
+                    totalCarbs += ConvertType(tempIngredient.Carbs, i.Unit) * i.Quantity;
+                    totalFat += ConvertType(tempIngredient.Fat, i.Unit) * i.Quantity;
                 }
                 recipe.Calories = totalCalories;
@@ -90,5 +104,5 @@
                 recipe.Fat = totalFat;
                 _context.Update(recipe);
-                await _context.SaveChangesAsync(); 
+                await _context.SaveChangesAsync();
                 return RedirectToAction(nameof(Index));
             }
@@ -189,5 +203,5 @@
             return suggestions;
         }
-        public async Task<ActionResult<List<Recipe>>> Filter()
+        public async Task<ActionResult<List<RestaurantMeal>>> Filter()
         {
             string minCalories = Request.Form["MinCalories"];
@@ -211,5 +225,17 @@
             )
             .ToList();
-            return filteredRecipes;
+            var filteredRecipes2 = _context.RestaurantMeals
+            .Where(r =>
+            (r.Calories >= int.Parse(minCalories)) &&
+            (r.Calories <= int.Parse(maxCalories)) &&
+            (r.Protein >= int.Parse(minProtein)) &&
+            (r.Protein <= int.Parse(maxProtein)) &&
+            (r.Fat >= int.Parse(minFats)) &&
+            (r.Fat <= int.Parse(maxFats)) &&
+            (r.Carbs >= int.Parse(minCarbs)) &&
+            (r.Carbs <= int.Parse(maxCarbs))
+            )
+            .ToList();
+            return filteredRecipes2;
         }
     } 
Index: NutriMatch/Data/AppDbContext.cs
===================================================================
--- NutriMatch/Data/AppDbContext.cs	(revision 083bca809028a181a47ef56f4cd6e642a84cf9e0)
+++ NutriMatch/Data/AppDbContext.cs	(revision cb1d033d349ea5fc9a7753731c5747e40f380bc6)
@@ -9,4 +9,5 @@
         public DbSet<RecipeIngredient> RecipeIngredients { get; set; }
         public DbSet<Ingredient> Ingredients { get; set; }
+        public DbSet<RestaurantMeal> RestaurantMeals { get; set; }
         protected override void OnModelCreating(ModelBuilder modelBuilder)
         {
@@ -31,5 +32,5 @@
             modelBuilder.Entity<Ingredient>()
                 .Property(e => e.Carbs)
-                .HasColumnName("carbohydrates_g");    
+                .HasColumnName("carbohydrates_g");
         }
     }
Index: NutriMatch/Migrations/20250621144429_AddRestaurantMeals.Designer.cs
===================================================================
--- NutriMatch/Migrations/20250621144429_AddRestaurantMeals.Designer.cs	(revision cb1d033d349ea5fc9a7753731c5747e40f380bc6)
+++ NutriMatch/Migrations/20250621144429_AddRestaurantMeals.Designer.cs	(revision cb1d033d349ea5fc9a7753731c5747e40f380bc6)
@@ -0,0 +1,140 @@
+﻿// <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: NutriMatch/Migrations/20250621144429_AddRestaurantMeals.cs
===================================================================
--- NutriMatch/Migrations/20250621144429_AddRestaurantMeals.cs	(revision cb1d033d349ea5fc9a7753731c5747e40f380bc6)
+++ NutriMatch/Migrations/20250621144429_AddRestaurantMeals.cs	(revision cb1d033d349ea5fc9a7753731c5747e40f380bc6)
@@ -0,0 +1,14 @@
+﻿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: NutriMatch/Migrations/20250622130800_AddRecipeImage.Designer.cs
===================================================================
--- NutriMatch/Migrations/20250622130800_AddRecipeImage.Designer.cs	(revision cb1d033d349ea5fc9a7753731c5747e40f380bc6)
+++ NutriMatch/Migrations/20250622130800_AddRecipeImage.Designer.cs	(revision cb1d033d349ea5fc9a7753731c5747e40f380bc6)
@@ -0,0 +1,143 @@
+﻿// <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: NutriMatch/Migrations/20250622130800_AddRecipeImage.cs
===================================================================
--- NutriMatch/Migrations/20250622130800_AddRecipeImage.cs	(revision cb1d033d349ea5fc9a7753731c5747e40f380bc6)
+++ NutriMatch/Migrations/20250622130800_AddRecipeImage.cs	(revision cb1d033d349ea5fc9a7753731c5747e40f380bc6)
@@ -0,0 +1,23 @@
+﻿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: NutriMatch/Migrations/AppDbContextModelSnapshot.cs
===================================================================
--- NutriMatch/Migrations/AppDbContextModelSnapshot.cs	(revision 083bca809028a181a47ef56f4cd6e642a84cf9e0)
+++ NutriMatch/Migrations/AppDbContextModelSnapshot.cs	(revision cb1d033d349ea5fc9a7753731c5747e40f380bc6)
@@ -56,4 +56,7 @@
                     b.Property<float>("Fat")
                         .HasColumnType("real");
+                    b.Property<string>("ImageUrl")
+                        .IsRequired()
+                        .HasColumnType("text");
                     b.Property<string>("Instructions")
                         .IsRequired()
@@ -89,4 +92,30 @@
                     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 =>
                 {
Index: NutriMatch/Models/Recipe.cs
===================================================================
--- NutriMatch/Models/Recipe.cs	(revision 083bca809028a181a47ef56f4cd6e642a84cf9e0)
+++ NutriMatch/Models/Recipe.cs	(revision cb1d033d349ea5fc9a7753731c5747e40f380bc6)
@@ -26,4 +26,6 @@
         [ValidateNever]
         public float Fat { get; set; }
+        [ValidateNever]
+        public String ImageUrl { get; set; } 
         
     }
Index: NutriMatch/Models/RestaurantMeal.cs
===================================================================
--- NutriMatch/Models/RestaurantMeal.cs	(revision cb1d033d349ea5fc9a7753731c5747e40f380bc6)
+++ NutriMatch/Models/RestaurantMeal.cs	(revision cb1d033d349ea5fc9a7753731c5747e40f380bc6)
@@ -0,0 +1,27 @@
+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; }
+
+        public String Restaurant { get; set; }
+
+        public String ItemName { get; set; }
+
+        public String ItemDescription { get; set; }
+        
+        public float Calories { get; set; }
+        public float Protein { get; set; }
+        public float Carbs { get; set; }
+        public float Fat { get; set; }
+
+
+    }
+}
Index: NutriMatch/Views/Recipes/Create.cshtml
===================================================================
--- NutriMatch/Views/Recipes/Create.cshtml	(revision 083bca809028a181a47ef56f4cd6e642a84cf9e0)
+++ NutriMatch/Views/Recipes/Create.cshtml	(revision cb1d033d349ea5fc9a7753731c5747e40f380bc6)
@@ -15,5 +15,5 @@
 <div class="row">
     <div class="col-md-4">
-        <form asp-action="Create">
+        <form asp-action="Create" enctype="multipart/form-data">
             <div asp-validation-summary="ModelOnly" class="text-danger"></div>
             <div class="form-group">
@@ -44,4 +44,7 @@
                     <div class="dropdown" id="ingredientDropdown"></div>
                 </div>
+                <div class="form-group">
+                    <input type="file"  id="recipeImage" name="RecipeImage" />
+                </div>
                 <div class="ingredients-list" id="ingredientsList">
                     <small class="text-muted">Selected ingredients will appear here</small>
Index: NutriMatch/Views/Recipes/Details.cshtml
===================================================================
--- NutriMatch/Views/Recipes/Details.cshtml	(revision 083bca809028a181a47ef56f4cd6e642a84cf9e0)
+++ NutriMatch/Views/Recipes/Details.cshtml	(revision cb1d033d349ea5fc9a7753731c5747e40f380bc6)
@@ -36,4 +36,10 @@
             @Html.DisplayFor(model => model.Rating)
         </dd>
+        <dt class = "col-sm-2">
+            @Html.DisplayNameFor(model => model.ImageUrl)
+        </dt>
+        <dd>
+            <img src="@Model.ImageUrl" width="200" height="200" />
+        </dd>
         <dt>
             <ul>
