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>
This commit is contained in:
co-authored by
Cursor
parent
424e339986
commit
7e8a1ef7dc
+69
@@ -0,0 +1,69 @@
|
||||
# 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
|
||||
|
||||
- Meshkee Website API: https://api.meshkee.com/docs/website
|
||||
- OpenAPI: https://api.meshkee.com/docs/website/openapi.json
|
||||
Reference in New Issue
Block a user