Table recipes { id uuid [pk, default: `gen_random_uuid()`] name text [not null] cuisine text prep_time_minutes int cook_time_minutes int servings int ingredients jsonb [not null, default: `'[]'`] instructions jsonb [not null, default: `'[]'`] tags "text[]" [not null, default: `'{}'`] rating int notes text created_at timestamptz [not null, default: `now()`] updated_at timestamptz [not null, default: `now()`] indexes { cuisine tags } } Table meal_plans { id uuid [pk, default: `gen_random_uuid()`] week_start date [not null] day_of_week text [not null] meal_type text [not null] recipe_id uuid [ref: > recipes.id] custom_meal text servings int notes text created_at timestamptz [not null, default: `now()`] indexes { week_start } } Table shopping_lists { id uuid [pk, default: `gen_random_uuid()`] week_start date [unique, not null] items jsonb [not null, default: `'[]'`] notes text created_at timestamptz [not null, default: `now()`] updated_at timestamptz [not null, default: `now()`] indexes { week_start } }