amirhosein.ashourlooandClaude Sonnet 5 2249a07dee Fix category-slot matching: identity by linkUrl slug, not array position
The homepage category carousel and installments highlights matched
slot.images[i] to categoryList[i] by array index, assuming the business's
CMS upload order lines up with this site's own category sort order. It
doesn't - live data showed a laptop photo landing on "موبایل" and "لوازم
برقی" appearing on the site despite no photo ever being uploaded for it,
purely from index luck. titleFa isn't reliable either: the same laptop image
was titled "تبلت" in the CMS, contradicting its own linkUrl.

Fix: resolve each image's category from the `category` query param on its
own linkUrl (categorySlugFromLinkUrl() in slug.ts, matched against
ApiCategory.slug via the new findNodeBySlug()). The homepage carousel is now
fully slot-driven - it iterates slot.images (in the CMS's own sortOrder) and
simply omits any category with no matching image, per explicit product
direction, rather than falling back to a placeholder. Installments keeps its
curated HIGHLIGHT_IDS list with a placeholder for uncovered categories,
since that page always shows the same fixed set, but now uses the same
identity-based lookup instead of position.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-06 07:36:24 +03:30
2026-09-02 17:03:23 +03:30
2026-09-02 17:11:12 +03:30
2026-09-04 14:02:15 +03:30
2026-09-02 17:03:23 +03:30
2026-09-02 17:03:23 +03:30
2026-09-02 17:03:23 +03:30
2026-09-02 17:03:23 +03:30
2026-09-02 17:03:23 +03:30
2026-09-02 17:03:23 +03:30
2026-09-02 17:03:23 +03:30
2026-09-02 17:03:23 +03:30

moalem.shop

فروشگاه اینترنتی موبایل معلم — Next.js storefront on the Meshkee CMS API.

npm install
npm run dev

Environment (.env.local):

NEXT_PUBLIC_SITE_DOMAIN=moalem.shop
NEXT_PUBLIC_DEMO_PRICING=1   # temporary: the tenant has no store-items yet

Architecture, data gaps and the fallbacks currently in place are documented in AGENTS.md.

S
Description
No description provided
Readme
76 MiB
Languages
TypeScript 97.6%
CSS 1.2%
JavaScript 1.2%