Index: NutriMatch.sln
===================================================================
--- NutriMatch.sln	(revision 1ca842b6aaa3634469b43407137ae225dbb00ff6)
+++ NutriMatch.sln	(revision 1ca842b6aaa3634469b43407137ae225dbb00ff6)
@@ -0,0 +1,24 @@
+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: NutriMatch/.gitignore
===================================================================
--- NutriMatch/.gitignore	(revision 1ca842b6aaa3634469b43407137ae225dbb00ff6)
+++ NutriMatch/.gitignore	(revision 1ca842b6aaa3634469b43407137ae225dbb00ff6)
@@ -0,0 +1,3 @@
+bin/
+obj/
+.vscode/
Index: NutriMatch/Controllers/CreateController.cs
===================================================================
--- NutriMatch/Controllers/CreateController.cs	(revision 1ca842b6aaa3634469b43407137ae225dbb00ff6)
+++ NutriMatch/Controllers/CreateController.cs	(revision 1ca842b6aaa3634469b43407137ae225dbb00ff6)
@@ -0,0 +1,11 @@
+using Microsoft.AspNetCore.Mvc;
+namespace MyApp.Namespace
+{
+    public class Create : Controller
+    {
+        public ActionResult Index()
+        {
+            return View();
+        }
+    }
+}
Index: NutriMatch/Controllers/HomeController.cs
===================================================================
--- NutriMatch/Controllers/HomeController.cs	(revision 5d48bf93fdd26aa14b8ae7ac68b61e5d60e3e2a8)
+++ NutriMatch/Controllers/HomeController.cs	(revision 1ca842b6aaa3634469b43407137ae225dbb00ff6)
@@ -1,31 +1,11 @@
-using System.Diagnostics;
 using Microsoft.AspNetCore.Mvc;
-using NutriMatch.Models;
-
-namespace NutriMatch.Controllers;
-
-public class HomeController : Controller
+namespace MyApp.Namespace
 {
-    private readonly ILogger<HomeController> _logger;
-
-    public HomeController(ILogger<HomeController> logger)
+    public class Home : Controller
     {
-        _logger = logger;
-    }
-
-    public IActionResult Index()
-    {
-        return View();
-    }
-
-    public IActionResult Privacy()
-    {
-        return View();
-    }
-
-    [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
-    public IActionResult Error()
-    {
-        return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
+        public ActionResult Index()
+        {
+            return View();
+        }
     }
 }
Index: NutriMatch/Controllers/RecipesController.cs
===================================================================
--- NutriMatch/Controllers/RecipesController.cs	(revision 1ca842b6aaa3634469b43407137ae225dbb00ff6)
+++ NutriMatch/Controllers/RecipesController.cs	(revision 1ca842b6aaa3634469b43407137ae225dbb00ff6)
@@ -0,0 +1,131 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Mvc.Rendering;
+using Microsoft.EntityFrameworkCore;
+using NutriMatch.Data;
+using NutriMatch.Models;
+namespace NutriMatch.Controllers
+{
+    public class RecipesController : Controller
+    {
+        private readonly AppDbContext _context;
+        public RecipesController(AppDbContext context)
+        {
+            _context = context;
+        }
+        public async Task<IActionResult> Index()
+        {
+            return View(await _context.Recipes.ToListAsync());
+        }
+        public async Task<IActionResult> Details(int? id)
+        {
+            if (id == null)
+            {
+                return NotFound();
+            }
+            var recipe = await _context.Recipes
+                .FirstOrDefaultAsync(m => m.Id == id);
+            if (recipe == null)
+            {
+                return NotFound();
+            }
+            return View(recipe);
+        }
+        public IActionResult Create()
+        {
+            return View();
+        }
+        [HttpPost]
+        [ValidateAntiForgeryToken]
+        public async Task<IActionResult> Create([Bind("Id,Title,Instructions,Rating")] Recipe recipe)
+        {
+            if (ModelState.IsValid)
+            {
+                _context.Add(recipe);
+                await _context.SaveChangesAsync();
+                return RedirectToAction(nameof(Index));
+            }
+            else
+            {
+                Console.WriteLine("Model state is invalid. Please check the input data.");
+            }
+            return View(recipe);
+        }
+        public async Task<IActionResult> Edit(int? id)
+        {
+            if (id == null)
+            {
+                return NotFound();
+            }
+            var recipe = await _context.Recipes.FindAsync(id);
+            if (recipe == null)
+            {
+                return NotFound();
+            }
+            return View(recipe);
+        }
+        [HttpPost]
+        [ValidateAntiForgeryToken]
+        public async Task<IActionResult> Edit(int id, [Bind("Id,Title,Instructions,Rating")] Recipe recipe)
+        {
+            if (id != recipe.Id)
+            {
+                return NotFound();
+            }
+            if (ModelState.IsValid)
+            {
+                try
+                {
+                    _context.Update(recipe);
+                    await _context.SaveChangesAsync();
+                }
+                catch (DbUpdateConcurrencyException)
+                {
+                    if (!RecipeExists(recipe.Id))
+                    {
+                        return NotFound();
+                    }
+                    else
+                    {
+                        throw;
+                    }
+                }
+                return RedirectToAction(nameof(Index));
+            }
+            return View(recipe);
+        }
+        public async Task<IActionResult> Delete(int? id)
+        {
+            if (id == null)
+            {
+                return NotFound();
+            }
+            var recipe = await _context.Recipes
+                .FirstOrDefaultAsync(m => m.Id == id);
+            if (recipe == null)
+            {
+                return NotFound();
+            }
+            return View(recipe);
+        }
+        [HttpPost, ActionName("Delete")]
+        [ValidateAntiForgeryToken]
+        public async Task<IActionResult> DeleteConfirmed(int id)
+        {
+            var recipe = await _context.Recipes.FindAsync(id);
+            if (recipe != null)
+            {
+                _context.Recipes.Remove(recipe);
+            }
+            await _context.SaveChangesAsync();
+            return RedirectToAction(nameof(Index));
+        }
+        private bool RecipeExists(int id)
+        {
+            return _context.Recipes.Any(e => e.Id == id);
+        }
+    }
+}
Index: NutriMatch/Data/AppDbContext.cs
===================================================================
--- NutriMatch/Data/AppDbContext.cs	(revision 1ca842b6aaa3634469b43407137ae225dbb00ff6)
+++ NutriMatch/Data/AppDbContext.cs	(revision 1ca842b6aaa3634469b43407137ae225dbb00ff6)
@@ -0,0 +1,15 @@
+using Microsoft.EntityFrameworkCore;
+using NutriMatch.Models;
+
+namespace NutriMatch.Data
+{
+    public class AppDbContext : DbContext
+    {
+        public AppDbContext(DbContextOptions<AppDbContext> options) : base(options) { }
+
+        public DbSet<Recipe> Recipes { get; set; }
+        public DbSet<Ingredient> Ingredients { get; set; }
+
+       
+    }
+}
Index: NutriMatch/Migrations/20250605223011_InitialCreate.Designer.cs
===================================================================
--- NutriMatch/Migrations/20250605223011_InitialCreate.Designer.cs	(revision 1ca842b6aaa3634469b43407137ae225dbb00ff6)
+++ NutriMatch/Migrations/20250605223011_InitialCreate.Designer.cs	(revision 1ca842b6aaa3634469b43407137ae225dbb00ff6)
@@ -0,0 +1,72 @@
+﻿// <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: NutriMatch/Migrations/20250605223011_InitialCreate.cs
===================================================================
--- NutriMatch/Migrations/20250605223011_InitialCreate.cs	(revision 1ca842b6aaa3634469b43407137ae225dbb00ff6)
+++ NutriMatch/Migrations/20250605223011_InitialCreate.cs	(revision 1ca842b6aaa3634469b43407137ae225dbb00ff6)
@@ -0,0 +1,57 @@
+﻿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: NutriMatch/Migrations/AppDbContextModelSnapshot.cs
===================================================================
--- NutriMatch/Migrations/AppDbContextModelSnapshot.cs	(revision 1ca842b6aaa3634469b43407137ae225dbb00ff6)
+++ NutriMatch/Migrations/AppDbContextModelSnapshot.cs	(revision 1ca842b6aaa3634469b43407137ae225dbb00ff6)
@@ -0,0 +1,70 @@
+﻿// <auto-generated />
+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.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: NutriMatch/Models/ErrorViewModel.cs
===================================================================
--- NutriMatch/Models/ErrorViewModel.cs	(revision 5d48bf93fdd26aa14b8ae7ac68b61e5d60e3e2a8)
+++ NutriMatch/Models/ErrorViewModel.cs	(revision 1ca842b6aaa3634469b43407137ae225dbb00ff6)
@@ -1,8 +1,9 @@
-namespace NutriMatch.Models;
+namespace NutriMatch.Models
+{
+    public class ErrorViewModel
+    {
+        public string? RequestId { get; set; }
 
-public class ErrorViewModel
-{
-    public string? RequestId { get; set; }
-
-    public bool ShowRequestId => !string.IsNullOrEmpty(RequestId);
+        public bool ShowRequestId => !string.IsNullOrEmpty(RequestId);
+    }
 }
Index: NutriMatch/Models/Ingredient.cs
===================================================================
--- NutriMatch/Models/Ingredient.cs	(revision 1ca842b6aaa3634469b43407137ae225dbb00ff6)
+++ NutriMatch/Models/Ingredient.cs	(revision 1ca842b6aaa3634469b43407137ae225dbb00ff6)
@@ -0,0 +1,25 @@
+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 String Unit { get; set; }
+
+        public float Quantity { get; set; }
+
+        [NotMapped]
+        public NutritionInfo NutritionInfo { get; set; } 
+    }
+}
Index: NutriMatch/Models/NutritionInfo.cs
===================================================================
--- NutriMatch/Models/NutritionInfo.cs	(revision 1ca842b6aaa3634469b43407137ae225dbb00ff6)
+++ NutriMatch/Models/NutritionInfo.cs	(revision 1ca842b6aaa3634469b43407137ae225dbb00ff6)
@@ -0,0 +1,23 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Threading.Tasks;
+using Microsoft.EntityFrameworkCore;
+
+namespace NutriMatch.Models
+{
+    [Keyless]
+    public class NutritionInfo
+    {
+
+        public float Calories { get; set; }
+        public float Protein { get; set; }
+        public float Carbs { get; set; }
+        public float Fat { get; set; }
+        public float Sugar { get; set; }
+
+
+    }
+}
Index: NutriMatch/Models/Recipe.cs
===================================================================
--- NutriMatch/Models/Recipe.cs	(revision 1ca842b6aaa3634469b43407137ae225dbb00ff6)
+++ NutriMatch/Models/Recipe.cs	(revision 1ca842b6aaa3634469b43407137ae225dbb00ff6)
@@ -0,0 +1,21 @@
+using System;   
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+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; }
+        public float Rating { get; set; }
+        [ValidateNever]
+        public virtual List<Ingredient> Ingredients { get; set; }   
+        
+    }
+}
Index: NutriMatch/NutriMatch.csproj
===================================================================
--- NutriMatch/NutriMatch.csproj	(revision 5d48bf93fdd26aa14b8ae7ac68b61e5d60e3e2a8)
+++ NutriMatch/NutriMatch.csproj	(revision 1ca842b6aaa3634469b43407137ae225dbb00ff6)
@@ -7,3 +7,17 @@
   </PropertyGroup>
 
+  <ItemGroup>
+    <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: NutriMatch/NutriMatch.sln
===================================================================
--- NutriMatch/NutriMatch.sln	(revision 1ca842b6aaa3634469b43407137ae225dbb00ff6)
+++ NutriMatch/NutriMatch.sln	(revision 1ca842b6aaa3634469b43407137ae225dbb00ff6)
@@ -0,0 +1,24 @@
+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 5d48bf93fdd26aa14b8ae7ac68b61e5d60e3e2a8)
+++ NutriMatch/Program.cs	(revision 1ca842b6aaa3634469b43407137ae225dbb00ff6)
@@ -1,4 +1,8 @@
+using Microsoft.EntityFrameworkCore;
+using NutriMatch.Data;
 var builder = WebApplication.CreateBuilder(args);
 builder.Services.AddControllersWithViews();
+builder.Services.AddDbContext<AppDbContext>(options =>
+    options.UseNpgsql(builder.Configuration.GetConnectionString("DefaultConnection")));
 var app = builder.Build();
 if (!app.Environment.IsDevelopment())
Index: NutriMatch/Views/Create/Index.cshtml
===================================================================
--- NutriMatch/Views/Create/Index.cshtml	(revision 1ca842b6aaa3634469b43407137ae225dbb00ff6)
+++ NutriMatch/Views/Create/Index.cshtml	(revision 1ca842b6aaa3634469b43407137ae225dbb00ff6)
@@ -0,0 +1,9 @@
+<div class="text-center">
+    <p>Create new recipe</p>    
+    @using (Html.BeginForm("CreateRecipe", "Create")) {
+        <div>
+            <label>Name:</label>
+            <input type="text" name="Name" required />
+        </div>
+    }
+</div>
Index: NutriMatch/Views/Recipes/Create.cshtml
===================================================================
--- NutriMatch/Views/Recipes/Create.cshtml	(revision 1ca842b6aaa3634469b43407137ae225dbb00ff6)
+++ NutriMatch/Views/Recipes/Create.cshtml	(revision 1ca842b6aaa3634469b43407137ae225dbb00ff6)
@@ -0,0 +1,49 @@
+@model NutriMatch.Models.Recipe
+
+@{
+    Layout = null;
+}
+
+<!DOCTYPE html>
+
+<html>
+<head>
+    <meta name="viewport" content="width=device-width" />
+    <title>Create</title>
+</head>
+<body>
+
+<h4>Recipe</h4>
+<hr />
+<div class="row">
+    <div class="col-md-4">
+        <form asp-action="Create">
+            <div asp-validation-summary="ModelOnly" class="text-danger"></div>
+            <div class="form-group">
+                <label asp-for="Title" class="control-label"></label>
+                <input asp-for="Title" class="form-control" />
+                <span asp-validation-for="Title" class="text-danger"></span>
+            </div>
+            <div class="form-group">
+                <label asp-for="Instructions" class="control-label"></label>
+                <input asp-for="Instructions" class="form-control" />
+                <span asp-validation-for="Instructions" class="text-danger"></span>
+            </div>
+            <div class="form-group">
+                <label asp-for="Rating" class="control-label"></label>
+                <input asp-for="Rating" class="form-control" />
+                <span asp-validation-for="Rating" class="text-danger"></span>
+            </div>
+            <div class="form-group">
+                <input type="submit" value="Create" class="btn btn-primary" />
+            </div>
+        </form>
+    </div>
+</div>
+
+<div>
+    <a asp-action="Index">Back to List</a>
+</div>
+
+</body>
+</html>
Index: NutriMatch/Views/Recipes/Delete.cshtml
===================================================================
--- NutriMatch/Views/Recipes/Delete.cshtml	(revision 1ca842b6aaa3634469b43407137ae225dbb00ff6)
+++ NutriMatch/Views/Recipes/Delete.cshtml	(revision 1ca842b6aaa3634469b43407137ae225dbb00ff6)
@@ -0,0 +1,48 @@
+@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: NutriMatch/Views/Recipes/Details.cshtml
===================================================================
--- NutriMatch/Views/Recipes/Details.cshtml	(revision 1ca842b6aaa3634469b43407137ae225dbb00ff6)
+++ NutriMatch/Views/Recipes/Details.cshtml	(revision 1ca842b6aaa3634469b43407137ae225dbb00ff6)
@@ -0,0 +1,45 @@
+@model NutriMatch.Models.Recipe
+
+@{
+    Layout = null;
+}
+
+<!DOCTYPE html>
+
+<html>
+<head>
+    <meta name="viewport" content="width=device-width" />
+    <title>Details</title>
+</head>
+<body>
+
+<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>
+</div>
+<div>
+    <a asp-action="Edit" asp-route-id="@Model?.Id">Edit</a> |
+    <a asp-action="Index">Back to List</a>
+</div>
+</body>
+</html>
Index: NutriMatch/Views/Recipes/Edit.cshtml
===================================================================
--- NutriMatch/Views/Recipes/Edit.cshtml	(revision 1ca842b6aaa3634469b43407137ae225dbb00ff6)
+++ NutriMatch/Views/Recipes/Edit.cshtml	(revision 1ca842b6aaa3634469b43407137ae225dbb00ff6)
@@ -0,0 +1,50 @@
+@model NutriMatch.Models.Recipe
+
+@{
+    Layout = null;
+}
+
+<!DOCTYPE html>
+
+<html>
+<head>
+    <meta name="viewport" content="width=device-width" />
+    <title>Edit</title>
+</head>
+<body>
+
+<h4>Recipe</h4>
+<hr />
+<div class="row">
+    <div class="col-md-4">
+        <form asp-action="Edit">
+            <div asp-validation-summary="ModelOnly" class="text-danger"></div>
+            <input type="hidden" asp-for="Id" />
+            <div class="form-group">
+                <label asp-for="Title" class="control-label"></label>
+                <input asp-for="Title" class="form-control" />
+                <span asp-validation-for="Title" class="text-danger"></span>
+            </div>
+            <div class="form-group">
+                <label asp-for="Instructions" class="control-label"></label>
+                <input asp-for="Instructions" class="form-control" />
+                <span asp-validation-for="Instructions" class="text-danger"></span>
+            </div>
+            <div class="form-group">
+                <label asp-for="Rating" class="control-label"></label>
+                <input asp-for="Rating" class="form-control" />
+                <span asp-validation-for="Rating" class="text-danger"></span>
+            </div>
+            <div class="form-group">
+                <input type="submit" value="Save" class="btn btn-primary" />
+            </div>
+        </form>
+    </div>
+</div>
+
+<div>
+    <a asp-action="Index">Back to List</a>
+</div>
+
+</body>
+</html>
Index: NutriMatch/Views/Recipes/Index.cshtml
===================================================================
--- NutriMatch/Views/Recipes/Index.cshtml	(revision 1ca842b6aaa3634469b43407137ae225dbb00ff6)
+++ NutriMatch/Views/Recipes/Index.cshtml	(revision 1ca842b6aaa3634469b43407137ae225dbb00ff6)
@@ -0,0 +1,55 @@
+@model IEnumerable<NutriMatch.Models.Recipe>
+
+@{
+    Layout = null;
+}
+
+<!DOCTYPE html>
+
+<html>
+<head>
+    <meta name="viewport" content="width=device-width" />
+    <title>Index</title>
+</head>
+<body>
+<p>
+    <a asp-action="Create">Create New</a>
+</p>
+<table class="table">
+    <thead>
+        <tr>
+            <th>
+                @Html.DisplayNameFor(model => model.Title)
+            </th>
+            <th>
+                @Html.DisplayNameFor(model => model.Instructions)
+            </th>
+            <th>
+                @Html.DisplayNameFor(model => model.Rating)
+            </th>
+            <th></th>
+        </tr>
+    </thead>
+    <tbody>
+@foreach (var item in Model) {
+        <tr>
+            <td>
+                @Html.DisplayFor(modelItem => item.Title)
+            </td>
+            <td>
+                @Html.DisplayFor(modelItem => item.Instructions)
+            </td>
+            <td>
+                @Html.DisplayFor(modelItem => item.Rating)
+            </td>
+            <td>
+                <a asp-action="Edit" asp-route-id="@item.Id">Edit</a> |
+                <a asp-action="Details" asp-route-id="@item.Id">Details</a> |
+                <a asp-action="Delete" asp-route-id="@item.Id">Delete</a>
+            </td>
+        </tr>
+}
+    </tbody>
+</table>
+</body>
+</html>
Index: NutriMatch/Views/Shared/_Layout.cshtml
===================================================================
--- NutriMatch/Views/Shared/_Layout.cshtml	(revision 5d48bf93fdd26aa14b8ae7ac68b61e5d60e3e2a8)
+++ NutriMatch/Views/Shared/_Layout.cshtml	(revision 1ca842b6aaa3634469b43407137ae225dbb00ff6)
@@ -19,14 +19,9 @@
                     <span class="navbar-toggler-icon"></span>
                 </button>
-                <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 text-dark" asp-area="" asp-controller="Home" asp-action="Index">Home</a>
-                        </li>
-                        <li class="nav-item">
-                            <a class="nav-link text-dark" asp-area="" asp-controller="Home" asp-action="Privacy">Privacy</a>
-                        </li>
-                    </ul>
-                </div>
+
+                 
+            </div>
+            <div class="container-fluid">
+               <a asp-controller="Create" asp-action="Index">Create</a>
             </div>
         </nav>
Index: NutriMatch/appsettings.json
===================================================================
--- NutriMatch/appsettings.json	(revision 5d48bf93fdd26aa14b8ae7ac68b61e5d60e3e2a8)
+++ NutriMatch/appsettings.json	(revision 1ca842b6aaa3634469b43407137ae225dbb00ff6)
@@ -1,3 +1,7 @@
 {
+  "ConnectionStrings": {
+    "DefaultConnection": "Host=localhost;Database=nutrimatch_db;Username=postgres;Password=123;Port=5432"
+  },
+
   "Logging": {
     "LogLevel": {
Index: triMatch/obj/NutriMatch.csproj.nuget.dgspec.json
===================================================================
--- NutriMatch/obj/NutriMatch.csproj.nuget.dgspec.json	(revision 5d48bf93fdd26aa14b8ae7ac68b61e5d60e3e2a8)
+++ 	(revision )
@@ -1,76 +1,0 @@
-{
-  "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: triMatch/obj/NutriMatch.csproj.nuget.g.props
===================================================================
--- NutriMatch/obj/NutriMatch.csproj.nuget.g.props	(revision 5d48bf93fdd26aa14b8ae7ac68b61e5d60e3e2a8)
+++ 	(revision )
@@ -1,16 +1,0 @@
-﻿<?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: triMatch/obj/NutriMatch.csproj.nuget.g.targets
===================================================================
--- NutriMatch/obj/NutriMatch.csproj.nuget.g.targets	(revision 5d48bf93fdd26aa14b8ae7ac68b61e5d60e3e2a8)
+++ 	(revision )
@@ -1,2 +1,0 @@
-﻿<?xml version="1.0" encoding="utf-8" standalone="no"?>
-<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
Index: triMatch/obj/project.assets.json
===================================================================
--- NutriMatch/obj/project.assets.json	(revision 5d48bf93fdd26aa14b8ae7ac68b61e5d60e3e2a8)
+++ 	(revision )
@@ -1,82 +1,0 @@
-{
-  "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: triMatch/obj/project.nuget.cache
===================================================================
--- NutriMatch/obj/project.nuget.cache	(revision 5d48bf93fdd26aa14b8ae7ac68b61e5d60e3e2a8)
+++ 	(revision )
@@ -1,8 +1,0 @@
-{
-  "version": 2,
-  "dgSpecHash": "/jx9+Sj3lFg=",
-  "success": true,
-  "projectFilePath": "D:\\VScode\\NutriMatch\\NutriMatch\\NutriMatch.csproj",
-  "expectedPackageFiles": [],
-  "logs": []
-}
