Case study · 2026
Saadiyat Marina — Bilingual Property Publication
German-first Next.js publication on Abu Dhabi's Saadiyat Island — 54 URLs with a complete hreflang cluster, built in 7 working days.
- Next.js 15
- TypeScript
- JSON-LD
- hreflang
- Open Graph
- Nodemailer
- Vercel

Context
German-speaking buyers researching Abu Dhabi property. German serves at /, English at /en/. Many readers browse from the UAE, so language can't be guessed from location.
Constraints
- Both languages must be indexed separately by Google
- Editorial rules: no unofficial pricing; prices only where a release is verified
- Tight timeline — launched in 7 working days
System design
Request
│
┌─────────▼──────────┐
│ middleware.ts │ acts on "/" only:
│ sm_lang cookie? │ en → 302 /en/ ; else German
└─────────┬──────────┘
│
┌───────────▼────────────┐ ┌──────────────────────┐
│ app/(de)/… app/(en)/en│◄───────│ content/*.ts (DE+EN │
│ one View per page type │ │ copy, typed) │
└───────────┬────────────┘ │ data/*.json (projects│
│ │ market, sources) │
┌───────────▼────────────┐ └──────────────────────┘
│ lib/seo │
│ routes.ts URL contract (DE⇄EN pairs)
│ metadata.ts canonical + hreflang + OG
│ schema.ts JSON-LD graph
│ definePageSeo() → { metadata, graph }
└───────────┬────────────┘
▼
sitemap.xml (with xhtml:link alternates) · robots.txt · /og image route
│
api/enquiry → validation + honeypot → email / CRM webhook
Key decisions
- One descriptor per page returns both head metadata and JSON-LD, so they cannot disagree.
- No
Accept-Languageredirect. It was the reason/en/wasn't indexing: Googlebot sends that header, so/redirected to/en/on crawls and the hreflang cluster contradicted itself. Replaced with an explicit cookie set by the language switch. - 302, not 301, for the language redirect — browsers cache 301s forever, trapping users who switch back.
- No IP geolocation — it would serve English to exactly the German readers in the UAE.
- Editorial rules enforced in code, not just documented.
Results
- Complete
de/en/x-defaulthreflang on all 54 URLs - 36-project catalogue with
Residence,ItemList,FAQPage,ArticleandBreadcrumbListstructured data - Generated Open Graph images per page
- Live on Vercel; delivered for the Dubai Haus group through KohzadTech
More projects
2025–26Case studyDubai Haus — Real-Estate Platform, SEO & Growth
Bilingual property platform built from scratch and grown through SEO — 2,200+ synced projects and 6.8× more organic clicks in 12 months.
- Next.js
- PostgreSQL
- Prisma
- Redis
- +8
Read case study
2026Case studyAgadir Morocco Tours — Multilingual Tour Booking Platform
Four-language tour site (incl. Arabic RTL) with an owner dashboard, availability calendar and WhatsApp booking requests.
- Next.js 16
- TypeScript
- PostgreSQL
- Prisma 7
- +5
Read case study
