Echo Recipe Remix

A playful recipe organizer that "remixes" any saved recipe into themed variations (e.g., budget, high-protein, vegan swap, 15-minute mode) using deterministic rule-based transformations—no backend, everything stored in localStorage. Users can add recipes with ingredients/steps/tags, run a Remix Wizard that suggests substitutions and step tweaks with a side-by-side diff view, then save the remix as a new version. The app includes a pantry checklist, a cook mode with timers and step-by-step focus, and a small "Remix Challenges" tab that generates constraints to inspire creative cooking.

To Do30
Scaffold app

Run: npm create vite@latest . -- --template react-ts && npm i && npm i -D tailwindcss postcss autoprefixer && npx tailwindcss init -p && npm i @tailwindcss/vite && npm i lucide-react && npx shadcn@latest init.

by system

Add Tailwind config

Configure Tailwind content paths and add base Tailwind directives in src/index.css.

by system

Add shadcn UI set

Install core shadcn/ui components used by the app (button, input, textarea, card, tabs, dialog, sheet, badge, checkbox, select, separator).

by system

Create app layout

Create src/components/AppShell.tsx with header, main container, and nav tabs.

by system

Define data models

Create src/lib/types.ts with Recipe, RecipeVersion, IngredientLine, PantryItem, and RemixTheme types.

by system

LocalStorage utilities

Create src/lib/storage.ts for typed load/save helpers and schema versioning keys.

by system

Recipes store hook

Create src/hooks/useRecipes.ts to manage recipes CRUD and persist to localStorage.

by system

Pantry store hook

Create src/hooks/usePantry.ts to manage pantry checklist state and persist to localStorage.

by system

Seed sample data

Add src/lib/seed.ts to provide a default recipe and pantry items when storage is empty.

by system

Set up routing

Add react-router and implement src/App.tsx routes for Recipes, Pantry, Remix, Cook Mode, and Challenges.

by system

Recipes list page

Create src/pages/RecipesPage.tsx showing searchable recipe cards with tag badges.

by system

Recipe card component

Create src/components/RecipeCard.tsx to display title, tags, last updated, and quick actions.

by system

Recipe editor page

Create src/pages/RecipeEditorPage.tsx with form fields for title, ingredients, steps, and tags.

by system

Ingredient lines editor

Create src/components/IngredientListEditor.tsx to add/remove/reorder ingredient lines.

by system

Steps editor component

Create src/components/StepsEditor.tsx to add/remove/reorder steps with optional timer minutes.

by system

Tags input component

Create src/components/TagsInput.tsx for adding/removing tag chips with keyboard support.

by system

Recipe detail drawer

Create src/components/RecipeDetailSheet.tsx to preview a recipe and launch Remix or Cook Mode.

by system

Versioning utilities

Create src/lib/versioning.ts to create new versions and track parentVersionId lineage.

by system

Remix rules engine

Create src/lib/remixRules.ts implementing deterministic ingredient substitutions and step tweaks per theme.

by system

Remix themes catalog

Create src/lib/remixThemes.ts defining Budget, High-Protein, Vegan Swap, and 15-Minute modes with parameters.

by system

Remix wizard page

Create src/pages/RemixWizardPage.tsx to select recipe, choose theme, preview changes, and save remix version.

by system

Change proposal panel

Create src/components/RemixSuggestions.tsx to list suggested substitutions/tweaks with accept/reject toggles.

by system

Side-by-side diff

Create src/components/RecipeDiffView.tsx showing original vs remixed ingredients/steps with highlighted changes.

by system

Deterministic hashing

Create src/lib/determinism.ts to derive repeatable random choices from recipeId+theme+salt.

by system

Pantry checklist page

Create src/pages/PantryPage.tsx with add item, check/uncheck, and filter by checked state.

by system

Pantry from recipe

Add src/lib/pantryHelpers.ts to extract ingredient names from a recipe and add missing pantry items.

by system

Cook mode page

Create src/pages/CookModePage.tsx for step-by-step focus, ingredient quick view, and fullscreen-friendly layout.

by system

Timer hook

Create src/hooks/useTimer.ts to start/pause/reset a countdown with onComplete callback.

by system

Step timer component

Create src/components/StepTimer.tsx to attach a countdown timer UI to the active step.

by system

Remix challenges tab

Create src/pages/ChallengesPage.tsx that generates random constraint prompts (deterministic per day) and lets users copy them.

by system

In Progress0
In Review0
Done0