Publish Meshkee sitemap-config, map product-source specials without variants, restore hero autoplay, and tighten page heroes, product images, and section order. Co-authored-by: Cursor <cursoragent@cursor.com>
5.4 KiB
BRB Store — AI context
Persian RTL storefront for brb-store.com (فروشگاه و تعمیرگاه لوازم خانگی برادران برقعی، قم). Next.js App Router rebuild of the original WillaMall/BeTheme site. Keep this file current — other AI tools read it first.
Stack
- Next.js 16 (App Router, Turbopack) + React 19 + TypeScript + Tailwind v4
- Locale:
fa, direction:rtl - Fonts: Vazirmatn (Persian) + Montserrat (English kickers)
- Icons: Lucide
- Dev:
npm run dev
Brand
| Token | Value |
|---|---|
| Brand red | #e7432b |
| Brand dark | #c93621 |
| Ink | #161616 |
| Muted | #6c6363 |
| Paper | #f4f0ec |
Logo: public/images/brand/logo.png. Dark glossy caption bars: lib/glossy.ts.
Meshkee API
- Docs: https://api.meshkee.com/docs/website
- OpenAPI: https://api.meshkee.com/docs/website/openapi.json
- Base:
https://api.meshkee.com/api/v1 - Tenant domain:
brb-store.com(NEXT_PUBLIC_WEBSITE_DOMAIN/WEBSITE_DOMAIN) - Customer portal:
https://customer.brb-store.com(NEXT_PUBLIC_CUSTOMER_PORTAL_URL) - Public reads:
/tenants/{domain}/...(no auth). - Do not invent CMS, upload, or dashboard APIs.
This site is catalog-only (no shopping cart). Login / user icon goes to the customer portal. Do not build a local login page.
Routes
| Path | Source |
|---|---|
/ |
Homepage + static image slots + store specials + latest blogs |
/products |
Store items (GET /tenants/{domain}/store-items) |
/products?categoryId= |
Same, filtered |
/products/[variantId] |
Store item variant + product description/gallery + comments |
/blog |
GET /tenants/{domain}/blogs (falls back to lib/data.ts blogPosts) |
/blog/[slug] |
Blog details + comments |
/about |
About us |
/contact |
Contact us |
/meshkee/static-image-slots |
Slot catalog for the dashboard Refresh button |
/meshkee/sitemap-config.json |
Build-time route manifest for Meshkee sitemap sync |
/api/search?q= |
Instant product search (store-items?name=, min 3 chars) |
Homepage order
Hero → Services → اقلام مصرفی → CategoryShowcase → قطعات یخچال → AboutPreview → قطعات ماشین لباسشویی → five-banner (2+3) → BlogCarousel → two-banner-row → Stats → WideBanner → Branches.
Homepage carousels (store specials)
GET /tenants/{domain}/store-specials matched by key:
consumeables— اقلام مصرفیrefrigrator-parts— قطعات یخچالwashing-machine-parts— قطعات ماشین لباسشویی
BRB specials use source: "product" (items may have empty variants[]). Map product fields directly; resolve slug via catalog for detail links. If a special has no items, keep sample products from lib/data.ts.
Products list/search: prefer store-items; if empty, fall back to GET /products catalog.
Catalog
- Mega menu: product categories level 1 and 2 (
GET /tenants/{domain}/categories?entityType=product). Links:/products?categoryId={id}. - Instant search: header input searches products when query length > 2 (
/api/search→store-items?name=). Enter or “مشاهده همه” →/products?q=. - Product pages are display-only (price, gallery, description, comments). No cart / add-to-cart.
- Details gallery: product
images[].url+ thumbnail. Click = lightbox, hover = zoom. - Details tabs: description (
descriptionHtml) and comments (GET /comments?entityType=product&entityId={productId}). Unauthenticated users see a login box to the customer portal.
Static image slots
GET /tenants/{domain}/website/static-images?pageKey=home. Catalog: GET /meshkee/static-image-slots from STATIC_IMAGE_SLOTS in lib/static-images.ts.
| key | kind | itemCount |
|---|---|---|
slider |
list | null |
three-icon-image |
list | 3 |
categories |
list | null |
about-us-image |
single | 1 |
five-banner-section |
list | 5 |
two-banner-row |
list | 2 |
full-row-image |
single | 1 |
two-branch-image |
list | 2 |
url → img, linkUrl → wrap in a link, empty/fail → placeholder. Use slot.aspectRatio. If a slot’s size/ratio changes in CSS, update STATIC_IMAGE_SLOTS in the same change.
SEO
- Do not ship
public/sitemap.xmlorpublic/robots.txt(nginx proxies to Meshkee API). - Build generates
lib/sitemap-config.generated.json(npm run generate:sitemap-config/prebuild); served atGET /meshkee/sitemap-config.json. - After deploy: business dashboard → Website → Settings → Sync sitemap config.
- Templates omitted (defaults
/products/{slug},/blog/{slug}match this site). - Every public page has unique title/description; product/blog prefer CMS fields.
Original business data (do not invent replacements)
About: 30+ years. Sells home appliances, spare parts, and repairs small appliances. Wholesale and retail.
Branches
- قم، خیابان سی متری کیوانفر، روبروی داروخانه الهادی
- قم، بلوار صدوقی، خیابان امام حسین (ع)، نبش کوچه ۲۱
Phones: 0912-309-3407، 0912-651-7619، 025-36604454، 025-32404070، تلفکس 0253-6638866
Telegram: https://t.me/borgheeibrothers
Email: alirezaborghei20@gmail.com
Map: 34.6564, 50.8696
Local fallbacks
- Copy / nav / sample products / local blog:
lib/data.ts - Empty catalog art:
/public/placeholders/*.svg - Downloaded originals:
public/images/