Files
saman-andish/CONTEXT.md
T

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 in public/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_URL
    • NEXT_PUBLIC_MESHKEE_DOMAIN
  • app/lib/meshkee.ts owns the public static-image contract and homepage fetch.
  • The homepage fetches pageKey=home once, 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, or app/robots.ts; nginx proxies these URLs to Meshkee.
  • GET /meshkee/sitemap-config.json is force-generated during the production build by scanning public static app/**/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, then SITE_URL, with https://samanandish.com as 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 with GET /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 by categoryId.
  • 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-slots returns the three slot definitions.
  • Verify /meshkee/sitemap-config.json lists /, /about-us, /contact-us, and /products.
  • Verify the header dropdown shows only level-two categories and product cards open canonical detail URLs.