Cooking whole-food vegetarian and Ayurvedic meals on a weeknight is much easier when you know which pulses, grains, and spices are already in your cupboard and which perishables are approaching their expiration date.
In Ayurveda & Asana Yoga, the Storage and Shopping List tabs are backed by structured local SwiftData models (`StorageItem`, `Batch`, `MealLogStorageLink`, `ShoppingListModel`, and `ShoppingListItem`) that track batch quantities, expiration dates, automatic meal-log stock deductions, item prices, and shopping reminders.
This guide explains how both tools work in the native app and how to organize a low-waste Ayurvedic pantry.
How Batch-Level Storage (`StorageItem` & `Batch`) Tracks Quantities and Expiration
In the Storage tab (`StorageListView` and `StorageItemDetailView`), each stored ingredient (`StorageItem`) links to a catalog or custom `FoodItem` and holds one or more `Batch` records. Because you might buy a new 500-gram bag of mung dal before finishing the last 120 grams of an older bag, storing separate batches lets each batch carry its own `quantity` and optional `expirationDate`.
The app automatically computes your `totalQuantity` across all batches of that food and surfaces the `firstExpirationDate` (the earliest expiration date among active batches) so you can use older stock first ("First In, First Out"). In addition, `MealLogStorageLink` and `StorageTransaction` track stock changes when stored foods are consumed in logged meals or manually adjusted.
- Multi-Batch Tracking (`Batch`): Add separate batches with distinct gram quantities and optional expiration dates under a single food item.
- Earliest Expiration Surfacing (`firstExpirationDate`): Helps you spot refrigerator perishables (yogurt, greens, tofu) or older dry goods before they expire.
- Transaction History & Meal Links (`StorageTransaction` / `MealLogStorageLink`): Records additions, manual consumption adjustments, and meal-linked stock deductions.
How Shopping Lists Connect Items, Optional Prices, Calendar Dates, and Reminders
In the Shopping List tab (`ShoppingListView` and `ShoppingListDetailView`), you can create multiple named lists (`ShoppingListModel`). Each list is linked to an `eventStartDate` on the calendar timeline and supports an optional local notification reminder (`reminderMinutes` before the scheduled time).
Inside a list, each `ShoppingListItem` links to a catalog `FoodItem` (or custom name) and tracks `quantity`, an optional `price`, and an `isBought` checkbox—allowing the list to calculate both `totalPrice` and `purchasedPrice` as you check items off in the store, while `DismissedFoodID` remembers suggested items you chose to skip.
- Item Quantity & Price Tracking: Enter required quantities and optional prices to see running `totalPrice` and `purchasedPrice` totals.
- Calendar & Reminder Integration: Link a shopping run to a calendar date and set `reminderMinutes` so you get a notification before heading to the market.
- Shopping List Analytics (`ShoppingListAnalyticsView`): Review spending and nutrient composition of planned grocery baskets.
A 10-Minute Weekly Storage and Shopping Routine
You do not need to micro-manage every pinch of spice to get value from Storage and Shopping List. Focus on your core grains, pulses, cooking oils/ghee, and perishable produce.
Checking `firstExpirationDate` in Storage once a week before creating your new Shopping List prevents duplicate purchases and cuts household food waste.
- Open Storage before grocery planning and sort or scan by `firstExpirationDate` to plan early-week meals around yogurt, leafy greens, and vegetables already in your fridge.
- Check remaining `totalQuantity` on your staple pulses (mung dal, toor dal, masoor dal, chickpeas) and grains (basmati rice, whole-wheat atta, oats).
- Create a dated list in Shopping List for the remaining ingredients, set an optional reminder if shopping after work, and check off `isBought` as you shop.
Sources & Classical References
- University of Alaska Fairbanks Cooperative Extension — Cooking Dried Beans, Peas & Lentils (FNH-00360) — Extension guidance on dry bean and lentil storage, pantry rotation, and dry-to-cooked yield planning.
- U.S. FDA — Selecting and Serving Produce Safely — FDA rules for buying undamaged produce, separating raw foods in shopping bags, and refrigerating perishables at 40°F or below.





