# Salar Store — AI context Persian RTL storefront for **salarstore.com**. Next.js App Router. Do not invent Meshkee admin/upload APIs. ## Meshkee - Apex domain: `salarstore.com` - API: `https://api.meshkee.com/api/v1` (`NEXT_PUBLIC_API_BASE_URL`) - Tenant: `GET /tenants/salarstore.com` → `businessId` - Public content: `/tenants/salarstore.com/...` (no auth) - Customer app: `https://customer.salarstore.com` - Business app: `https://business.salarstore.com` Docs: https://api.meshkee.com/docs/website ## Static image slots Dashboard-replaceable homepage images. Fetch `GET /tenants/salarstore.com/website/static-images?pageKey=home`. Empty/fail → keep local placeholders. The business dashboard **Refresh** button imports keys from: `GET https://salarstore.com/meshkee/static-image-slots` Source of truth: `lib/static-images.ts` (`STATIC_IMAGE_SLOT_CATALOG`). | key | kind | itemCount | aspectRatio | where | | --- | --- | --- | --- | --- | | `slider` | list (duplicatable) | unbounded | `21:8` | Homepage hero. Overlay `titleFa` / `titleEn` / `subtext` when set. | | `two-banner-below-slider` | list | 2 | `13:5` | Two tiles under the slider. Overlay `titleFa`, `titleEn`, `subtext` like the original UI. | | `categories` | list (duplicatable) | unbounded | `1:1` | Category row. `titleFa` + `titleEn` beside the icon. | | `four-banner` | list | 4 | `21:9` | 2×2 banner grid. Overlay `titleFa` / `titleEn` / `subtext` when set. | | `two-banner-row` | list | 2 | `12:5` | Two-up row after top-selling. | | `brands` | list (duplicatable) | unbounded | `2:1` | Brand logo carousel. | | `about-us-image` | list | 2 | `8:5` | Home about uses image 1. `/aboutus` uses image 1 as hero and image 2 as the side portrait. | Previous keys (`banners-below-slider`, `four-banner-section`, `three-banner-row`) are still read as aliases until the dashboard Refresh imports the catalog again. Rules: - Use `slot.images` (all if `kind=list`, first if `kind=single`). `url` → ``. `linkUrl` → wrap in ``. - Apply `slot.aspectRatio` from the API on the rendered frame. - **If a slot’s on-page size or aspect ratio changes, update `STATIC_IMAGE_SLOT_CATALOG` (`aspectRatio` + `recommendedWidth`) in the same change** so the dashboard cropper stays in sync. - Do not add upload/CMS endpoints on this website. ## Cart + customer session Guest cart key `meshkee-guest-cart` (localStorage + cookie on `.salarstore.com`). Line `id` is the **store item variant id**. Continue hands off to `https://customer.salarstore.com/checkout/cart#guestCart=...` (guests go via login with that hash inside `redirect`). Shared cookies: `meshkee_customer_access_token` / `meshkee_customer_refresh_token`.