Pantry2Plate — Budget-Friendly, Culturally Diverse Meals
Goal
- Mobile‑first React + Vite + TypeScript app that recommends 3–6 cook‑now recipes from pantry items, budget, and goals. All data and ranking are client‑side; state is persisted to localStorage.
Getting Started
- Install deps:
npm install - Dev server:
npm run dev - Build:
npm run build - Preview:
npm run preview
Add Recipes
- Edit
src/data/recipes.json. Keep fields consistent withsrc/types.ts. - Please expand to 30–60+ recipes across African, Asian, and Global Cheap cuisines.
Scoring Overview (src/lib/scoring.ts)
- Ingredient match m = |base ∩ pantry| / |base|
- Budget gate b = 1 if cost_per_serving <= budget else 0
- Near-match allowed if cost <= budget + 0.25 AND recipe has
subs(flagged with a suggestion) - Goals: protein(high)=+1; fiber(high) with vegetarian goal=+0.5; sodium(low) with low-sodium/diabetes=+1; vegetarian tag with vegetarian goal=+1
- Cuisine pin boost: +0.3 when pinned
- Final score: 0.5m + 0.3goal + 0.2b + 0.3cuisineBoost
- Returns top 3–6 under budget; otherwise near-matches with substitution callout.
Accessibility
- Large hit targets (buttons ≥44px height), visible focus rings, base font ≥14px.