# Velvet Aura

[Velvet Aura](https://fragrance.mock.shop/llms.txt) is a [mock.shop](https://www.mock.shop/) sample store for building against a small fragrance catalog with product-specific options before a real Shopify store is ready. It includes listings categorized as Fragrance Oil, Perfume Extracts, Candles, and Scented Sachets. The catalog has 8 products across 2 collections. Every product has two or three variants from one option, with lowercase names such as `size`, `scent`, and `finish`.

mock.shop is an auth-free Shopify Storefront GraphQL API backed by sample reference stores. Find out more about [mock.shop sample stores](https://www.shopify.com/blog/mock-shop).

## When to use this store

Choose Velvet Aura when you’re building a compact fragrance shop with product-specific choices such as size, scent, and finish.

Use Velvet Aura for:

- Fragrance storefronts with product-specific selectors
- Display labels kept separate from canonical option names and values
- Handling a `null` variant lookup caused by a changed option name

Choose another mock.shop store if you need multi-option products or nonshipping digital goods. Browse <https://mock.shop/llms.txt> to find a store that matches your catalog.

## Example Velvet Aura query

Here’s an example GraphQL `POST` request that retrieves a bottle and compares two variant lookups that differ only in option-name casing from <https://fragrance.mock.shop/api>:

```bash
curl https://fragrance.mock.shop/api \
  -H 'Content-Type: application/json' \
  --data '{"query":"{ bottle: product(handle: \"frosted-glass-eau-de-parfum-bottle\") { id title options { name values } exact: variantBySelectedOptions(selectedOptions: [{name: \"size\", value: \"50ml\"}]) { id selectedOptions { name value } price { amount currencyCode } } changedCase: variantBySelectedOptions(selectedOptions: [{name: \"Size\", value: \"50ml\"}]) { id } } }"}'
```

This query returns the product ID, title, options, and two aliased lookups. The `exact` lookup uses `size` and `50ml` and returns a variant; `changedCase` uses `Size` and the same value and returns `null`. Adapt the query for your storefront needs.

The endpoint doesn't require authentication or an access token. Read <https://fragrance.mock.shop/llms.txt> for catalog details and store-specific instructions.

## What this catalog lets you test

Build fragrance product pages with option selectors and selected-variant prices. In your client, display “Size” if appropriate, but keep the returned `size` key in selection state and API requests. Check that selecting `50ml` resolves to a variant ID with the original key, and that a failed lookup doesn’t leave a stale variant selected. All eight products use lowercase option names, so a shared label-formatting helper must not rewrite those names before lookup.

Preview the catalog in a storefront by opening <https://fragrance.hydrogen.mock.shop> in a browser.

![Velvet Aura’s Frosted Glass Eau de Parfum Bottle with two product images, a lowercase size label, 30ml, 50ml, and 100ml options, and an Add to cart button.](images/velvet-aura-frosted-glass-eau-de-parfum-bottle-20260911.webp)

## Build with an AI coding tool

To build a fragrance storefront with Velvet Aura using Claude, ChatGPT, Cursor, Lovable, or another AI assistant, copy the prompt below. It gives the assistant the store domain and directs it to the catalog instructions before it starts writing code.

```text
Build me a Hydrogen storefront using fragrance.mock.shop as the store domain. Setup instructions: fragrance.mock.shop/llms.txt
```

Shopify also provides a [mock.shop starter project](https://github.com/Shopify/mock-shop-starter): a Hydrogen storefront with product pages, collection browsing, and a working cart already connected to mock.shop. You or your AI coding tool can customize this code instead of building those pieces from scratch.

Follow the repository’s setup instructions, then set `PUBLIC_STORE_DOMAIN=fragrance.mock.shop` in `.env` and restart the dev server to use Velvet Aura’s catalog. Leave `PUBLIC_STOREFRONT_API_TOKEN` empty; mock.shop doesn’t require a token.

## Move to a real Shopify store

mock.shop uses fictional, read-only catalog data. Cart operations work, and checkout is mocked: no payment is taken and no real order is placed. The Customer Account API isn’t supported.

When you’re ready to launch, point your storefront at a Shopify store and add that store’s public Storefront API token. If you don’t have a Shopify store yet, [start a Shopify free trial](https://www.shopify.com/free-trial) to create one.

Read the [mock.shop developer documentation](https://shopify.dev/docs/storefronts/headless/mock-shop) for setup and migration details.

## Store facts

| | |
|---|---|
| Store handle | `fragrance` |
| Catalog model | Fragrance products with product-specific single options |
| Products | 8 |
| Collections | 2 |
| Categories | 5 |
| Variants per product | 2–3 |
| Compare-at prices | 1 product |
| Requires shipping | All products |
| API endpoint | <https://fragrance.mock.shop/api> |
| Store instructions | <https://fragrance.mock.shop/llms.txt> |
| Browser preview | <https://fragrance.hydrogen.mock.shop> |
