Hessa Events website
A bilingual luxury events site built to be found in Google and cited by AI assistants.
hessaevents.com is the public website of Hessa Events, a luxury wedding and events company in Riyadh, Saudi Arabia: an editorial, gallery-style Next.js site in English and Arabic with correct hreflang and canonical alternates, per-page social cards, a sitemap, llms.txt for AI assistants, and a written SEO playbook so the team can add projects and articles without breaking any of it.
The context
The company needed a site that reads as calm and premium, works identically in Arabic and English, and is found when someone asks Google or an AI assistant for an events company in Riyadh.
Photography arrived from shoots with a semi-transparent watermark burned into every frame, which had to be removed cleanly and offline.
What I built
A content-first Next.js site where copy lives in typed dictionaries and every route is bilingual by construction.
- Next.js 16 App Router with English at / and Arabic at /ar, redirects handled in one proxy
- Typed dictionaries: a missing Arabic key fails the build
- RTL via logical CSS so layouts mirror without per-component work
- Per-route metadata with hreflang and canonical alternates, OpenGraph and Twitter cards
- Sitemap, robots, and llms.txt covering every page in both languages
- Framer Motion hero, scroll reveals, and count-ups honouring reduced-motion
- Self-hosted display and body fonts for English and Arabic
- An offline Node script that solves the watermark's alpha matte from a shoot's frames and removes it without touching any other pixel
- A checklist-driven SEO playbook for new projects and articles
How it works
All copy sits in src/dictionaries/en.ts and ar.ts; components receive a resolved dictionary and never import text directly. Pages live under src/app/[lang], and every internal link is built with a localizedPath helper so no route can ship without its Arabic twin.
Metadata is generated per route and locale. Next.js replaces OpenGraph and Twitter blocks per key rather than merging them, so each page declares its own image and card; the playbook documents this trap because it silently drops share images when forgotten.
The watermark script fits a per-pixel alpha from how the background varies under the mark across the set, inverts the blend, and rewrites only the mark's footprint. Solve once per project, apply to every frame.
The outcome
The site is live in both languages with the SEO and AI-search plumbing done, and the team can add work and news through the documented process.
It is the pattern I reuse for any bilingual site that has to rank in the Gulf.
More work
Have a project like this?
I build platforms, apps, and systems like these end to end, from Cairo and remote worldwide. Tell me what you are building.