Chat on WhatsApp
ProgrammerKhaled
ServicesWorkProcessPricingContact Now
عالعربيةENEnglish
Menu2026
01Services02Work03Process04Pricing05Contact Now
عالعربيةENEnglish
WhatsApp
Case study

THURAYYA

A premium residential destination on the edge of Wadi Hanifah

Thurayya — 48 homes on the valley edge north of Diriyah, Riyadh. A landing page that sells a project not yet built: it builds desire and trust, then turns the visitor into a registered interest. (A concept piece I designed and built — names are fictional, for showcase purposes.)

View live demo
Type
Real-estate landing page
Location
Wadi Hanifah — Riyadh
Languages
Arabic / English
THURAYYA

The challenge

How do you sell 48 homes when not a single stone has been laid? The buyer here isn't buying rooms — they're buying status, scarcity, and trust in a developer whose work they cannot see yet. The challenge: one page that builds that feeling entirely, and ends with a single clear step — register your interest before the door opens to someone else.

The approach

01

Luxury through subtraction

Generous white space, elegant Arabic typography, and a quiet earthy palette — the page whispers instead of shouting, so the brand reads confident and expensive without bragging.

02

A narrative that leads to signup

Vision → Masterplan → Residences → Life → Gallery → Register. Each section raises desire one notch, and the path ends at a single, undistracted form.

03

Honest scarcity that moves the decision

"Phase one is released by invitation only" and "limited appointments" — scarcity built into the design itself, with direct WhatsApp for those ready now.

Tech stack:Next.jsGSAPTailwind CSSReact Context — two languages

By the numbers

6
Days from zero to launch
19
UI components
4.8K
Lines of code
0
UI libraries — just Next.js and GSAP

Four problems — each one motion taking more than its share

01LCPPerformance

3.27 seconds lost to an animation

The hero copy shipped at zero opacity and was revealed by GSAP once JavaScript loaded. Measured, that was 3.27s of "element render delay" on the LCP element itself. I moved the entrance to CSS @keyframes: it starts as soon as the stylesheet is parsed — before first paint — so the motion now costs LCP nothing beyond its own duration.

I also added an LCP-measuring script to the project so the regression can't come back silently.

02ResilienceVisibility

Content that vanished if the motion didn't run

The reveal rule started elements at zero opacity — so if a ScrollTrigger failed to fire for any reason, a whole column of content stayed invisible while still taking up space. The new rule: content is visible by default, and motion is an enhancement on top, not a condition for being seen. The same principle went into the mobile menu.

Content that only appears if an animation succeeds will, one day, not appear.

03MotionThe masterplan

An animation playing to nobody

The masterplan drawing (the wadi, Diriyah, the parcel) was tied to an element that scrolled on, while the plan itself is sticky on desktop — so the drawing finished after the plan had left the screen. I re-tied the motion to the plan itself, so it draws while the visitor is looking at it.

Motion nobody sees is cost with no return.

04UXMobile

Pick a landmark, and the plan comes back to you

On mobile the plan isn't sticky, so tapping a landmark in the list drew its bearing on a plan that had already scrolled away. Now the selection brings the plan back with it. On desktop nothing moves: the plan is sticky and already in view, and moving the page there would be rude.

And the bearings end inside a 375px-wide plan without running off it.

What actually shipped

  • Hero with a CSS entrance that doesn't delay paint
  • Vision section
  • Interactive masterplan with landmarks and bearings
  • Residences — 4 home types
  • Amenities
  • Gallery
  • Register-interest form
  • Direct WhatsApp contact
  • Instant Arabic / English switch
  • Respects the "reduce motion" setting

The lesson that stayed

Motion is part of what makes this page feel premium — yet every serious problem in it was motion taking more than its share: delaying paint, hiding content, or playing to nobody. So the principle became clear: motion is an enhancement on top of a page that works without it.

Content shows first; motion comes on top.

Results — real Lighthouse measurements

100
Accessibility
100
SEO
1.8s
Largest Contentful Paint

Inside the page

01The vision — architecture that speaks less
The vision — architecture that speaks less
02Residences — four ways to live
Residences — four ways to live
03Life — what makes the day longer
Life — what makes the day longer
04Gallery — glimpses of the land
Gallery — glimpses of the land
05Register your interest — form & contact
Register your interest — form & contact

Have a property project to sell?

Let's build a page that creates desire and brings you real prospects — not just visitors.

Contact me
Back to process

From zero to a real site

Process
  • Services
  • Process
  • Pricing
  • Contact Now
Hire me now
See my code
Let's connect
Behind the scenes
Direct chat
  • Upwork
  • GitHub
  • LinkedIn
  • Instagram
  • WhatsApp
  • Privacy Policy
  • Terms of Use

© 2026 KHALED

2026 KHALED FULL STACK ENGINEER ©