Part of #1.
- Product + Category scoped by businessId (menu sections via parentCategoryId + displayOrder)
- ModifierGroup (required/optional, minSelections/maxSelections) + Modifier (price delta in cents), attached to products
- Availability windows (breakfast menu, happy hour) on categories/products
- Merchant-gated CRUD actions; public menu read endpoint shaped for the business page
- Tests: modifier constraint validation, price math with deltas, window filtering