feat: complete mealplanner app (backend + frontend + deployment)
.NET 8 backend with Zitadel JWT auth, TheMealDB integration, weekly meal plan generation, shopping list aggregation. Vue 3 + Tailwind 4 frontend with dark emerald theme, manual OIDC PKCE auth, all views implemented. Multi-stage Dockerfile with nginx reverse proxy. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
10
backend/Models/CheckedShoppingItem.cs
Normal file
10
backend/Models/CheckedShoppingItem.cs
Normal file
@@ -0,0 +1,10 @@
|
||||
namespace MealPlanner.Models;
|
||||
|
||||
public class CheckedShoppingItem
|
||||
{
|
||||
public Guid Id { get; set; }
|
||||
public Guid MealPlanId { get; set; }
|
||||
public string ItemName { get; set; } = "";
|
||||
public string UserId { get; set; } = "";
|
||||
public bool IsChecked { get; set; }
|
||||
}
|
||||
11
backend/Models/MealPlan.cs
Normal file
11
backend/Models/MealPlan.cs
Normal file
@@ -0,0 +1,11 @@
|
||||
namespace MealPlanner.Models;
|
||||
|
||||
public class MealPlan
|
||||
{
|
||||
public Guid Id { get; set; }
|
||||
public string UserId { get; set; } = "";
|
||||
public DateOnly WeekStart { get; set; }
|
||||
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
|
||||
|
||||
public List<MealPlanEntry> Entries { get; set; } = [];
|
||||
}
|
||||
12
backend/Models/MealPlanEntry.cs
Normal file
12
backend/Models/MealPlanEntry.cs
Normal file
@@ -0,0 +1,12 @@
|
||||
namespace MealPlanner.Models;
|
||||
|
||||
public class MealPlanEntry
|
||||
{
|
||||
public Guid Id { get; set; }
|
||||
public Guid MealPlanId { get; set; }
|
||||
public DateOnly Date { get; set; }
|
||||
public Guid RecipeId { get; set; }
|
||||
|
||||
public MealPlan MealPlan { get; set; } = null!;
|
||||
public Recipe Recipe { get; set; } = null!;
|
||||
}
|
||||
21
backend/Models/Recipe.cs
Normal file
21
backend/Models/Recipe.cs
Normal file
@@ -0,0 +1,21 @@
|
||||
namespace MealPlanner.Models;
|
||||
|
||||
public enum RecipeSource
|
||||
{
|
||||
Own,
|
||||
TheMealDb
|
||||
}
|
||||
|
||||
public class Recipe
|
||||
{
|
||||
public Guid Id { get; set; }
|
||||
public string? UserId { get; set; }
|
||||
public string? ExternalId { get; set; }
|
||||
public string Title { get; set; } = "";
|
||||
public string Instructions { get; set; } = "";
|
||||
public string? ImageUrl { get; set; }
|
||||
public RecipeSource Source { get; set; }
|
||||
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
|
||||
|
||||
public List<RecipeIngredient> Ingredients { get; set; } = [];
|
||||
}
|
||||
13
backend/Models/RecipeIngredient.cs
Normal file
13
backend/Models/RecipeIngredient.cs
Normal file
@@ -0,0 +1,13 @@
|
||||
namespace MealPlanner.Models;
|
||||
|
||||
public class RecipeIngredient
|
||||
{
|
||||
public Guid Id { get; set; }
|
||||
public Guid RecipeId { get; set; }
|
||||
public string Name { get; set; } = "";
|
||||
public decimal? Amount { get; set; }
|
||||
public string? Unit { get; set; }
|
||||
public string? Category { get; set; }
|
||||
|
||||
public Recipe Recipe { get; set; } = null!;
|
||||
}
|
||||
10
backend/Models/ShoppingItem.cs
Normal file
10
backend/Models/ShoppingItem.cs
Normal file
@@ -0,0 +1,10 @@
|
||||
namespace MealPlanner.Models;
|
||||
|
||||
public class ShoppingItem
|
||||
{
|
||||
public string Name { get; set; } = "";
|
||||
public decimal? TotalAmount { get; set; }
|
||||
public string? Unit { get; set; }
|
||||
public string? Category { get; set; }
|
||||
public bool IsChecked { get; set; }
|
||||
}
|
||||
7
backend/Models/UserSettings.cs
Normal file
7
backend/Models/UserSettings.cs
Normal file
@@ -0,0 +1,7 @@
|
||||
namespace MealPlanner.Models;
|
||||
|
||||
public class UserSettings
|
||||
{
|
||||
public string UserId { get; set; } = "";
|
||||
public int HouseholdSize { get; set; } = 2;
|
||||
}
|
||||
Reference in New Issue
Block a user