SEO / AEO Global Rules
Meta title & description
Meta title & description — documentation pending.
Complete
Every page sets `<title>`, `<meta name="description">`, and `<link rel="canonical">` via the SeoService — per-locale, per-entity. The values are NOT computed in the template — they are authored either in the dictionary or in the entity’s primary content fields, then passed to `seo.set({...})` in `ngOnInit`.
The four required SEO fields
- title
- 50-60 chars optimal. Format: `{Entity title} | StartupHub.today`. Listing pages: `{Module name} — {Short hook}`. Never duplicate across pages.
- description
- 140-160 chars. First sentence is the value proposition. Second sentence adds context (sector / country / status). NO marketing fluff.
- canonical
- Absolute URL with locale prefix. `${SITE_URL}/{lang}/path/to/page`. Never trailing-slash-only — trailing slashes are stripped at the canonical level.
- inLanguage
- Always `en` or `ar` (matching the URL prefix). Emitted on the HTML `<html lang="">` attribute AND in every JSON-LD object.
Implementation pattern
Every detail page calls `this.seo.set({ title, description, canonical, alternates, inLanguage })` exactly once, inside `ngOnInit`, after the entity is loaded. The SeoService writes the meta tags + canonical link + hreflang alternates atomically.
