The catalog is where revenue is won or lost: category trees, product cards, variants, filters, and search that return the SKU the buyer meant. I implement this on Shopify, WooCommerce, OpenCart, Magento, Bitrix, or a custom front — the UX problems are the same, the data model is not.
We start from how you actually sell: simple products, variants (size/color), bundles, or B2B packs. Facets must match attributes you can keep clean; a filter that lies about stock trains people to leave. Search is more than a SQL LIKE: typo tolerance, merchandising, and empty-state recovery. On large catalogs we talk about dedicated search (e.g. storefront search apps or an API) instead of default theme search.
Included: IA for categories, PDP structure (title, price, availability, shipping promise, specs), listing cards, pagination or infinite load with crawlable alternatives, and image rules so LCP does not collapse. We also write down which attributes merchandisers may change without a deploy, so filters do not rot after the first seasonal drop. Out of scope unless named: photography production, copywriting for thousands of SKUs, and marketplace listing ops.
This page pairs with catalog SEO and merchant feeds (indexable URLs, Product JSON-LD, feed fields) and with checkout so “add to cart” lands in a cart that still knows the variant. Platform choice stays on the stack pages above.
