Food · 7 min read

Ayurveda & Asana Yoga Catalog Counts, Integrity Verification, and Read-Only Updates

See the exact verified catalog counts inside Ayurveda & Asana Yoga—from 14,487 foods and 12,480 Ayurveda profiles to 4,419 yoga sequences—and how read-only updates protect your data.

Practice this guide inside Ayurveda & Asana Yoga on iPhone & iPad 908 illustrated postures, guided prāṇāyāma timers, and personalized dosha meal plans with USDA macros.
Download on the App Store
Architecture diagram concept showing the read-only verified Catalog store alongside the read-write User store on iPhone.

Architecture diagram concept showing the read-only verified Catalog store alongside the read-write User store on iPhone.

Quick Answer

{'heading': 'What is inside the bundled Ayurveda & Asana Yoga catalog?', 'summary': 'Every copy of `Ayurveda & Asana Yoga` ships with a pre-indexed, offline SwiftData catalog verified by `catalog_manifest.json` (`CatalogStoreManager`). The current catalog revision (`catalogVersion: 1`) contains **14,487 foods**, **12,480 Ayurveda profiles**, **2,336 Ayurveda links**, **22 vitamins**, **11 minerals**, **908 exercises/poses**, **4,419 yoga sequences**, **60 guided practices** (`601` timed script cues), **8,399 product buckets**, and **599,085 search vocabulary entries**—mounted read-only so app updates never overwrite your personal logs.', 'bullets': ['Nutrition & Ayurveda scope: 14,487 foods, 12,480 Ayurveda profiles, 2,336 ingredient modifier links, 22 vitamins, and 11 minerals.', 'Movement & Practice scope: 908 individual exercises/asanas, 4,419 structured yoga sequences, and 60 guided meditation/breath/relaxation practices with 601 cues.', 'Search & multilingual scope: 599,085 search vocabulary entries and 8,399 product buckets for fast offline lookup.', 'Two-store isolation: Reference data lives in a read-only `Catalog` store while your meals, notes, pantry batches, and workouts live in a separate read-write `User` store.']}

Every copy of `Ayurveda & Asana Yoga` ships with a pre-indexed, offline SwiftData catalog verified by `catalog_manifest.json` (`CatalogStoreManager`). The current catalog revision (`catalogVersion: 1`) contains **14,487 foods**, **12,480 Ayurveda profiles**, **2,336 Ayurveda links**, **22 vitamins**, **11 minerals**, **908 exercises/poses**, **4,419 yoga sequences**, **60 guided practices** (`601` timed script cues), **8,399 product buckets**, and **599,085 search vocabulary entries**—mounted read-only so app updates never overwrite your personal logs.

Nutrition & Ayurveda scope: 14,487 foods, 12,480 Ayurveda profiles, 2,336 ingredient modifier links, 22 vitamins, and 11 minerals.

Movement & Practice scope: 908 individual exercises/asanas, 4,419 structured yoga sequences, and 60 guided meditation/breath/relaxation practices with 601 cues.

Search & multilingual scope: 599,085 search vocabulary entries and 8,399 product buckets for fast offline lookup.

Two-store isolation: Reference data lives in a read-only `Catalog` store while your meals, notes, pantry batches, and workouts live in a separate read-write `User` store.

Exact Verified Counts in the Bundled Catalog Manifest

Instead of fetching food nutrition, Ayurvedic attributes, or pose instructions over a remote network API every time you tap a search result, `Ayurveda & Asana Yoga` bundles its complete reference database inside the app bundle across three compressed archive parts (`preseeded_db.store.gz.part-aa`, `.part-ab`, and `.part-ac`, totaling ~147 MB compressed).

Before the catalog is mounted on first launch—or after an app update—`CatalogStoreManager.migrateAndValidateStore` checks the unpacked SQLite store against the exact expected row counts declared in `catalog_manifest.json`. If even a single table count or SHA-256 checksum mismatches, `CatalogError.countMismatch` or `.invalidPart` halts staging so a corrupted archive can never replace your working catalog.

  • Foods (`foods`): **14,487** catalog food and recipe records.
  • Ayurveda Profiles & Links (`ayurvedaProfiles` / `ayurvedaLinks`): **12,480** profiles and **2,336** preparation/modifier links.
  • Micronutrients (`vitamins` / `minerals`): **22** vitamins and **11** essential minerals.
  • Yoga & Exercise (`exercises` / `yogaSequences`): **908** individual postures/exercises and **4,419** multi-pose yoga sequences.
  • Guided Practices (`practices` / `practiceCues`): **60** guided practices containing **601** timed script cues.
  • Search Index (`vocabularyEntries` / `productBuckets` / `searchCaches`): **599,085** vocabulary entries, **8,399** product buckets, and **1** prebuilt search cache.

How the Two-Store SwiftData Architecture Protects Your Logs

A classic problem in offline-first health apps is how to ship corrected nutrition rows, new yoga sequences, or expanded local food synonyms in an app update without touching the meals, custom recipes, pantry batches, and practice notes the user has already logged.

In `CatalogStoreManager.finalizeForCombinedMount`, the app configures a two-part SwiftData `ModelContainer`: `DatabaseSchema.catalog` (mounted read-only from `Application Support/Catalog/Versions/v<version>-<revision>/AyurvedaAsanaYogaCatalog.store`) and `DatabaseSchema.user` (mounted read-write for your personal profiles, calendar meal logs, `StorageItem` batches, `ShoppingListModel`, `PracticeSession` history, and `Node` notes). When a new app version includes an updated `catalog_manifest.json`, the app stages the new catalog in a temporary directory, runs `PRAGMA wal_checkpoint(TRUNCATE)` and `PRAGMA integrity_check`, assigns a fresh Core Data store UUID (`assignFreshStoreIdentifier`), atomically swaps the version folder, and cleans up obsolete catalog versions (`removeObsoleteVersions`).

  • Zero data loss on update: Your personal `User` store is never overwritten when the `Catalog` store is upgraded.
  • Stable domain UUIDs: User records reference catalog foods, exercises, and practices by stable domain UUIDs and `catalogNumber` (`CatalogReferenceResolver`) so historical meal logs and practice history stay linked across updates.
  • Persistent favorites: `CatalogPreferenceStore` preserves your starred practices and user preferences across catalog swaps.

What Happens on First Launch vs. Subsequent Launches

On the very first launch after installing or updating the app, `CatalogStoreManager.prepareCatalog` verifies the SHA-256 digests of the three bundled archive parts, decompresses the preseeded store, validates all 12 entity counts against `catalog_manifest.json`, and writes `installed-catalog-manifest.json`.

On every subsequent launch where `installed-catalog-manifest.json` already matches the bundled manifest (`installed == manifest`), `prepareCatalog` returns the existing `storeURL` immediately with `installedNewCatalog: false`—skipping decompression and staging altogether so the app opens instantaneously.

  • First launch after install/update: Unpacks, verifies SHA-256 + row counts, mounts the new catalog, and removes the old version folder to save storage space.
  • Everyday launches: Instant manifest match with zero unpacking overhead.
  • 100% offline operation: Once prepared on device, all 14,487 foods, 4,419 yoga sequences, and 60 practices work in Airplane Mode.

Frequently Asked Questions

Does updating the app keep two copies of the 14,487-food database on my iPhone?

No. As soon as the new catalog version is staged and verified, `CatalogStoreManager.removeObsoleteVersions` deletes any previous `v*` version directory in `Application Support/Catalog/Versions` so disk space is reclaimed immediately.

What happens to a past meal log if a catalog food's nutrition data is refined in a future update?

Because user logs link to catalog items by stable UUID (`CatalogReferenceResolver`), your historical logs remain intact and resolve seamlessly against the updated catalog store.

Why are there 12,480 Ayurveda profiles for 14,487 foods?

Most whole ingredients and traditional recipes (`12,480` items) carry a direct or computed `AyurvedaProfile`, while the remaining catalog entries are specialized commercial or reference items where fabricating an Ayurvedic profile would be inappropriate.

iOS App for iPhone & iPad

Practice with 908 illustrated postures, custom prāṇāyāma timers & dosha meal plans

Combine classical Vata, Pitta, and Kapha balance, Six Tastes (Shad Rasa), and seasonal Ritucharya routines with verified USDA calorie, macronutrient, vitamin, and mineral tracking.

Sources & Classical References

  1. FoodData Central Data Documentation — U.S. Department of Agriculture (USDA)
  2. Ayurvedic Medicine: In Depth — National Center for Complementary and Integrative Health (NCCIH)

Related Guides