Product pages emit crawler-readable meta, public URLs use id plus Farsi slugs, and the homepage catalog matches the dashboard slot keys. Co-authored-by: Cursor <cursoragent@cursor.com>
2.6 KiB
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 ifkind=list, first ifkind=single).url→<img src>.linkUrl→ wrap in<a>. - Apply
slot.aspectRatiofrom 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.