3.1 KiB
3.1 KiB
Saman Andish Website Context
Project
- Persian RTL storefront for Saman Andish, built with Next.js 16, React 19, and TypeScript.
- Apex domain:
samanandish.com. - Local design assets live in
public/assets; local fonts live inpublic/fonts. - Public routes include
/,/about-us,/contact-us,/products, canonical product details, and canonical product-category listings.
Meshkee API
- Canonical documentation:
https://api.meshkee.com/docs/website - API base:
https://api.meshkee.com/api/v1 - Optional client configuration:
NEXT_PUBLIC_MESHKEE_API_URLNEXT_PUBLIC_MESHKEE_DOMAIN
app/lib/meshkee.tsowns the public static-image contract and homepage fetch.- The homepage fetches
pageKey=homeonce, matches slots by key, and keeps local images whenever the API is unavailable or a slot is empty. - The same library owns public product/category types, level-two category selection, Persian URL slugs, latest-product fetching, and detail lookups.
- The header product dropdown skips root categories and lists only level-two product categories.
- The homepage latest-machinery section resolves the newest published Meshkee products and links cards to canonical details.
Homepage Static-Image Slots
slider: unbounded list,17:5, recommended width 1920.three-categories: fixed list of 3,3:2, recommended width 900.about-us-images: fixed list of 2,1:1, recommended width 900.- The dashboard-importable catalog is served by
GET /meshkee/static-image-slots. - If a rendered image size or crop ratio changes, update the corresponding catalog entry in
app/meshkee/static-image-slots/route.ts.
Sitemap and SEO
- Do not add
public/sitemap.xml,public/robots.txt,app/sitemap.ts, orapp/robots.ts; nginx proxies these URLs to Meshkee. GET /meshkee/sitemap-config.jsonis force-generated during the production build by scanning public staticapp/**/page.*routes.- Auth, account, admin, cart, checkout, dynamic, and Meshkee integration routes are excluded from the static-page config.
- The sitemap base URL uses
NEXT_PUBLIC_SITE_URL, thenSITE_URL, withhttps://samanandish.comas the fallback. - Product, category, blog, and portfolio detail pages must use Meshkee canonical
{id}/{Persian-title-slug}URLs when those routes are implemented. - Product details use
/products/{id}/{nameFaSlug}and resolve withGET /tenants/samanandish.com/products/by-id/{id}. - Category listings use
/products/category/{id}/{nameFaSlug}and resolve with the category-by-id endpoint before filtering products bycategoryId. - Every crawlable page must have unique metadata, exactly one H1, structured H2/H3 headings, and meaningful image alt text.
- After deployment, use Business Dashboard → Website → Settings → Sync sitemap config.
Verification
- Run
npm run lint. - Run
npm run build. - Verify
/meshkee/static-image-slotsreturns the three slot definitions. - Verify
/meshkee/sitemap-config.jsonlists/,/about-us,/contact-us, and/products. - Verify the header dropdown shows only level-two categories and product cards open canonical detail URLs.