The storefront already consumed slots, but GET /meshkee/static-image-slots was missing, so Meshkee never registered slider, categories, four-icon-image, about-us, or brands for this domain. Co-authored-by: Cursor <cursoragent@cursor.com>
39 lines
1.8 KiB
Markdown
39 lines
1.8 KiB
Markdown
# Arad Arisman Website Context
|
|
|
|
## Project
|
|
|
|
- Persian RTL storefront for Arad Arisman (livestock/poultry feed supplements).
|
|
- Next.js 16 App Router, React 19, TypeScript, Tailwind 4, `src/app`.
|
|
- Apex domain: `aradarisman.com`.
|
|
- Local images live in `public/images`.
|
|
|
|
## Meshkee API
|
|
|
|
- Canonical docs: `https://api.meshkee.com/docs/website`
|
|
- API base: `https://api.meshkee.com/api/v1`
|
|
- Tenant domain: `aradarisman.com` (`TENANT_DOMAIN` in `src/lib/meshkee.ts`)
|
|
- All public fetches go through `src/lib/meshkee.ts`. Do not call the API from components.
|
|
- Do not invent dashboard/CMS/upload endpoints.
|
|
|
|
## Homepage static-image slots
|
|
|
|
Consumers read `GET /tenants/aradarisman.com/website/static-images` and match by `key`. Empty or failed slots keep local placeholders.
|
|
|
|
| Key | Kind | itemCount | Aspect | Width | Component |
|
|
|---|---|---|---|---|---|
|
|
| `slider` | list (duplicatable) | null | 16:9 | 1920 | `HeroSlider` (full-viewport `h-svh`; catalog ratio is the recommended crop) |
|
|
| `categories` | list (duplicatable) | null | 3:5 | 720 | `CategoryShowcase` |
|
|
| `four-icon-image` | list | 4 | 1:1 | 128 | `Features` |
|
|
| `about-us` | single | 1 | 4:3 | 960 | `About` |
|
|
| `brands` | list (duplicatable) | null | 1:1 | 200 | `Partners` |
|
|
|
|
Dashboard import catalog: `GET /meshkee/static-image-slots` (`src/app/meshkee/static-image-slots/route.ts`).
|
|
|
|
If a rendered image size or crop ratio changes, update both the component container (`aspectRatioToCss`) and the matching catalog entry.
|
|
|
|
## Other conventions
|
|
|
|
- Category tiles from live products (`getCategorySummary`) because the raw `/categories` taxonomy has duplicate display names.
|
|
- Blog field names are inferred; accessors fall back across `nameFa` / `titleFa` / `title`, etc.
|
|
- Next.js `images.remotePatterns` allows `c804387.parspack.net` (Meshkee media CDN).
|