# 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 | | `/api/search?q=` | Instant product search (`store-items?name=`, min 3 chars) | ## Homepage order `Hero` → `Services` → three product carousels → `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`: 1. `consumeables` — اقلام مصرفی 2. `refrigrator-parts` — قطعات یخچال 3. `washing-machine-parts` — قطعات ماشین لباسشویی If a special has no `items`, keep sample products from `lib/data.ts`. Use `variants[0].id` as the product URL. ## 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. ## Original business data (do not invent replacements) **About:** 30+ years. Sells home appliances, spare parts, and repairs small appliances. Wholesale and retail. **Branches** 1. قم، خیابان سی متری کیوانفر، روبروی داروخانه الهادی 2. قم، بلوار صدوقی، خیابان امام حسین (ع)، نبش کوچه ۲۱ **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/`