Files
Alireza HassaniandCursor 7e8a1ef7dc Wire Meshkee static images, SEO, and customer account menu.
Connect homepage image slots and favicon to the API, add sitemap config and page metadata, and implement header login with profile/admin dropdown.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-01 11:22:02 +03:30

2.7 KiB

Safeteb — Meshkee website context

Next.js storefront for safeteb.com (RTL, Persian). Uses the Meshkee Website API for CMS-managed static images and favicon.

Environment

Variable Purpose
NEXT_PUBLIC_DOMAIN or NEXT_PUBLIC_WEBSITE_DOMAIN Apex domain (safeteb.com)
NEXT_PUBLIC_API_BASE_URL or NEXT_PUBLIC_MESHKEE_API_BASE API base (https://api.meshkee.com/api/v1)
NEXT_PUBLIC_CUSTOMER_DASHBOARD_URL Customer portal URL

Meshkee integration

Static images

  • Fetch: GET /tenants/safeteb.com/website/static-images?pageKey=home
  • Catalog (dashboard refresh): GET /meshkee/static-image-slots
  • Implementation: src/lib/static-images.ts + homepage in src/app/page.tsx

Homepage slot keys (match by key):

Key Section Kind Count
slider Hero slider list (duplicatable) —
four-icon Hero quick links list 4
two-banner Hero promo row list 2
online-program-banner Online program image single 1
four-link-icon Services icons list 4
medical-plants-banner Medicinal plants image single 1
two-banner (2nd occurrence) Lower promo row list 2
about-us-banner About section image single 1

Rules:

  • Use slot.images — all images if kind=list, first if kind=single.
  • url → <img src>. linkUrl → wrap in <a>.
  • Empty slot or API failure → keep local placeholder from public/images/.
  • Use slot.aspectRatio from API; catalog ratios in STATIC_IMAGE_SLOTS must stay in sync when layout changes.

Favicon

  • Fetch: GET /tenants/safeteb.com/website/favicon → { faviconUrl, logoUrl, ... }
  • Layout: src/app/layout.tsx uses faviconUrl when set; otherwise /favicon.png.

SEO + sitemap

  • Do not ship public/sitemap.xml or public/robots.txt — nginx proxies both to the Meshkee API.
  • Sitemap config: GET /meshkee/sitemap-config.json (generated at build via scripts/generate-sitemap-config.mjs).
  • On-page SEO: unique title + meta description per page (src/lib/seo.ts), one H1 per page, meaningful image alt text.
  • After deploy: business dashboard → Website → Settings → Sync sitemap config.

Pages

  • / — Home (static-image slots wired)
  • /about — About
  • /contact — Contact

AI prompt reference

Latest images-placeholder prompt:
https://api.meshkee.com/api/v1/public/ai-prompts/safeteb/images-placeholder/67da3a9c5a81b4c50d53768c

Latest SEO prompt:
https://api.meshkee.com/api/v1/public/ai-prompts/safeteb/seo/52c03d5a636374e28da417cd

Docs