Glyph Kitchen

A playful recipe organizer where each recipe is visualized as a customizable “glyph card” (simple icons + color tags for cuisine, difficulty, time, and dietary notes). Users can add/edit recipes, generate a randomized weekly menu with a constraint picker (e.g., under 30 minutes, vegetarian, no repeats), and export/share the menu as a printable card layout. Everything runs client-side with localStorage, with clear components for Recipe Form, Recipe Library grid, Filter/Tag panel, Weekly Menu generator, and Print/Export view.

To Do30
Scaffold project

Run: npm create vite@latest . -- --template react-ts && npm i && npm i -D tailwindcss postcss autoprefixer && npx tailwindcss init -p && npm i class-variance-authority clsx tailwind-merge lucide-react && npx shadcn@latest init -d

by system

Add Tailwind styles

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

by system

Setup shadcn UI

Add shadcn/ui utils file src/lib/utils.ts and verify path aliases in tsconfig/vite config.

by system

Create app layout

Build src/App.tsx shell with header, main container, and simple nav tabs.

by system

Add app routing

Add React Router and define routes for Library, Add/Edit, Weekly Menu, and Print views in src/main.tsx.

by system

Define recipe types

Create src/types.ts with Recipe, Tags, Dietary flags, and Menu types.

by system

LocalStorage helpers

Create src/lib/storage.ts with load/save utilities and schema version key.

by system

Recipe store hook

Create src/hooks/useRecipes.ts managing CRUD and persistence via localStorage.

by system

Seed starter recipes

Add src/lib/seed.ts and load seed data on first run in the recipes hook.

by system

Tag constants

Create src/lib/tags.ts with cuisine/difficulty/time buckets and dietary tag definitions.

by system

Glyph icon map

Create src/lib/glyphs.ts mapping cuisines/dietary tags to lucide-react icons.

by system

GlyphCard component

Implement src/components/GlyphCard.tsx to render a recipe as an icon + color-tag card.

by system

TagBadge component

Implement src/components/TagBadge.tsx for consistent colored tag chips.

by system

Recipe grid component

Implement src/components/RecipeGrid.tsx showing a responsive grid of GlyphCards.

by system

Library page

Implement src/pages/LibraryPage.tsx to list recipes with search and basic actions.

by system

Recipe actions menu

Add inline edit/delete controls for each card in src/components/RecipeCardActions.tsx.

by system

Confirm delete dialog

Implement src/components/DeleteRecipeDialog.tsx using shadcn Dialog and hook delete handler.

by system

Recipe form schema

Create src/lib/recipeSchema.ts with validation rules for required fields and tag constraints.

by system

Recipe form fields

Implement src/components/RecipeForm.tsx with inputs for title, notes, cuisine, difficulty, time, and dietary.

by system

Add recipe page

Implement src/pages/AddRecipePage.tsx wiring RecipeForm submit to create recipe and navigate back.

by system

Edit recipe page

Implement src/pages/EditRecipePage.tsx to load by id, populate form, and update on submit.

by system

Filter panel state

Create src/hooks/useRecipeFilters.ts to manage search text and selected tag filters.

by system

Filter panel UI

Implement src/components/FilterPanel.tsx with multi-select tag toggles and clear button.

by system

Apply filters to grid

Wire LibraryPage to filter recipes using useRecipeFilters and pass results to RecipeGrid.

by system

Menu constraints types

Create src/typesMenu.ts defining MenuConstraint settings like max time, dietary, and no-repeats.

by system

Weekly generator logic

Implement src/lib/generateWeeklyMenu.ts to select 7 recipes given constraints with deterministic shuffle option.

by system

Constraints picker UI

Implement src/components/ConstraintsPicker.tsx for max time, dietary toggles, and no-repeats controls.

by system

Weekly menu page

Implement src/pages/WeeklyMenuPage.tsx to pick constraints, generate menu, and show day-by-day cards.

by system

Printable menu layout

Implement src/pages/PrintPage.tsx rendering the weekly menu as print-friendly card grid with @media print styles.

by system

Export/share buttons

Add src/components/ExportActions.tsx with Print button (window.print) and Copy-to-clipboard summary text.

by system

In Progress0
In Review0
Done0