Files
Alireza HassaniandCursor c84147e765 Add Torob tags, Meshkee SEO routes, and updated static-image slots.
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>
2026-09-01 16:12:26 +03:30

2.6 KiB
Raw Permalink Blame History

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 → <img src>. linkUrl → wrap in <a>.
  • 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.