110 lines
5.2 KiB
Markdown
110 lines
5.2 KiB
Markdown
# Hoomat Store Context
|
||
|
||
## Current Prompt
|
||
|
||
Source prompt: `https://api.meshkee.com/api/v1/public/ai-prompts/hoomat-store/images-placeholder/28488577c9163eaa8fdb8e86`
|
||
|
||
Goal: wire homepage/about static-image slots from Meshkee (`GET /tenants/hoomatstore.com/website/static-images`) and publish the slot catalog at `/meshkee/static-image-slots`. Empty/fail → keep local placeholders.
|
||
|
||
Previous prompts:
|
||
- Backend: `…/backend/114f70b804d97953f91ad26a` (API auth/cart/store/blog/contact)
|
||
- Basic create: `…/basic-create/d3ca3d1229f0e5c8e532b073` (Persian RTL flat-design clone)
|
||
|
||
## Meshkee Backend
|
||
|
||
- Docs: `https://api.meshkee.com/docs/website`
|
||
- OpenAPI: `https://api.meshkee.com/docs/website/openapi.json`
|
||
- API base: `https://api.meshkee.com/api/v1`
|
||
- Apex domain: `hoomatstore.com` (business id currently `35`)
|
||
- Customer app: `https://customer.hoomatstore.com`
|
||
- Business admin: `https://business.hoomatstore.com`
|
||
- Tenant resolve: `GET /tenants/hoomatstore.com`
|
||
- Public content: `/tenants/hoomatstore.com/...`
|
||
- Cart/orders: `/businesses/{businessId}/...` with Bearer JWT
|
||
- Auth token keys (localStorage): `meshkee_customer_access_token`, `meshkee_customer_refresh_token`
|
||
- Guest cart key: `meshkee-guest-cart`
|
||
- Cart continue: authenticated users go to `customer.hoomatstore.com/checkout/cart`; guests go to customer login with `redirect=/checkout/cart` and optional `#guestCart=` payload (Meshkee customer dashboard handoff)
|
||
|
||
## Static image slots
|
||
|
||
Catalog source: `lib/meshkee/static-slots.ts` → `GET /meshkee/static-image-slots`
|
||
|
||
| key | kind | pageKey | count | UI |
|
||
|-----|------|---------|-------|----|
|
||
| `slider` | list | home | n | homepage hero |
|
||
| `categories-icon` | list | home | 6 | quick category icons |
|
||
| `special-sale-banner` | single | home | 1 | sale promo beside product carousel |
|
||
| `product-features-image` | single | home | 1 | features sofa |
|
||
| `contactus-image` | single | home | 1 | homepage contact guarantee panel |
|
||
| `two-banner-row` | list | home | 2 | dual promo banners |
|
||
| `aboutus-image` | single | home | 1 | homepage about panel |
|
||
| `three-banner-row` | list | home | 3 | triple promo banners |
|
||
| `about-us-image` | list | about | 2 | about page panels |
|
||
|
||
Rules: use `slot.images` (all if list, first if single); `url` → img/bg; `linkUrl` → wrap link; map `titleFa` / `titleEn` / `subtext` to UI; if UI aspect/size changes, update the catalog. Cursor rule: `.cursor/rules/static-image-slots.mdc`.
|
||
|
||
## Source Website Data
|
||
|
||
- Main site: `https://www.hoomatstore.com/`
|
||
- About page: `https://www.hoomatstore.com/about-us`
|
||
- Contact page: `https://www.hoomatstore.com/contactus`
|
||
- Footer inspiration for bottom Meshkee row: `https://safeteb.com/`
|
||
|
||
## Design Requirements
|
||
|
||
- Language: Persian (`fa`)
|
||
- Direction: RTL
|
||
- Framework: Next.js app router
|
||
- Style: flat design, furniture-store feel, responsive layout
|
||
- Header: fixed with blurry/translucent background; stronger glass after scroll
|
||
- Header now includes user menu, cart icon/badge + drawer, and products mega menu (1st + 2nd category levels)
|
||
- Palette:
|
||
- Primary: `#00234B`
|
||
- Secondary: `#CC9966`
|
||
- Tertiary: `#883F3F`
|
||
- Fonts: Iran Sans (FA), Josefin Sans (EN titles), Montserrat fallback
|
||
- Logo local fallback: `public/assets/hoomat-logo.png`
|
||
- Favicon: from `GET /tenants/{domain}/website/favicon` when available; otherwise local logo
|
||
|
||
## Implemented Routes
|
||
|
||
- `/` homepage (static-image slots + local fallbacks; product carousels still sample)
|
||
- `/about-us` (about-us-image ×2 + local fallbacks)
|
||
- `/contactus` (contact form posts to Meshkee contact-submissions)
|
||
- `/store` store-items listing
|
||
- `/store/[variantId]/[[...slug]]` store item detail
|
||
- `/blog` blog listing
|
||
- `/blog/[id]/[slug]` blog detail
|
||
- `/meshkee/static-image-slots` slot catalog JSON for Meshkee dashboard
|
||
|
||
## Auth / Cart UX
|
||
|
||
- Logged out user icon → customer login
|
||
- Logged in: `{firstName} عزیز` with dropdown: پروفایل من, خروج, and مدیریت وبسایت (admins only, handoff to business app)
|
||
- Cart badge shows total quantity; drawer continue follows Meshkee customer checkout flow above
|
||
|
||
## Key Code Locations
|
||
|
||
- API client: `lib/meshkee/api.ts` (`getStaticImages`, `getStaticImageSlot`)
|
||
- Slot catalog/helpers: `lib/meshkee/static-slots.ts`
|
||
- Slot UI helpers: `app/components/slot-media.tsx`
|
||
- Config/domain: `lib/meshkee/config.ts`
|
||
- Auth/cart/toast providers: `app/providers/*`
|
||
- Header + cart drawer + mega menu: `app/components/header.tsx` and related components
|
||
- Shared static homepage content still in `lib/site-data.ts`
|
||
- Global styles: `app/globals.css`
|
||
|
||
## Data Notes
|
||
|
||
- Store-items for this tenant may be empty until inventory is published; blogs/categories are live.
|
||
- Static-images for this tenant may be empty until CMS slots are filled; UI keeps local placeholders.
|
||
- Product description/gallery/technical/comments for a store variant come from the linked catalog product (`productId`).
|
||
- Homepage carousels still use local sample products until a later prompt wires them to API.
|
||
|
||
## Maintenance Notes
|
||
|
||
- Update this file on every Meshkee prompt.
|
||
- Prefer Meshkee Website API docs over inventing CMS/admin endpoints.
|
||
- Keep RTL/FA patterns and existing visual language when adding pages.
|
||
- When UI image size/aspect changes, update `STATIC_IMAGE_SLOT_CATALOG` so `/meshkee/static-image-slots` stays correct.
|