divine-3d is the homepage of a premium car-rental website for Arabic-first leisure and business travellers in North Africa and Gulf-adjacent markets (Morocco, Tunisia, UAE). The product intent is a single, self-contained landing page that presents car rental as a desirable, tactile object: a real-time 3D car on a reflective plinth, a floating glass search capsule, a tilt-and-rotate gallery, a live colour picker, animated trust signals, a scroll-driven "how it works" road, a depth-carousel of customer testimonials, and a closing call to action with a floating WhatsApp button.
The page is delivered as a complete, runnable front-end project (npm run dev) built with React + Vite + Tailwind CSS, Three.js via React Three Fiber and Drei, GSAP + ScrollTrigger, and Framer Motion. It is fully RTL/Arabic by default with a language switch to French and English, responsive across mobile, tablet and desktop, and degrades to a static image when WebGL is unavailable.
The audience is the browsing visitor — a prospective renter evaluating cars, prices and service promises before deciding to book or to reach out over WhatsApp.
divine-3d is a single-page public marketing and discovery surface. There is no account system, no booking transaction, and no authenticated area: the page is anonymously reachable and every interaction is client-side presentation, filtering and navigation.
Current delivery
Actors
Accepted behavior and ownership
All accepted behavior is owned by the single Landing page. The 3D hero, search capsule, gallery, colour picker, trust band, scroll-driven steps, testimonial carousel, CTA, footer, preloader, language switch, custom cursor and WebGL fallback are all sections, states and controls of that one page — not separate destinations.
Narrow exclusions
Removed from scope
divine-3d is delivered as a front-end project that runs locally with npm run dev. The homepage is public and anonymous: a visitor arrives, watches the preloader, lands on the 3D hero, and can explore the page freely without signing in or creating an account. Nothing on the page is gated.
The search capsule, gallery, colour picker and testimonial carousel are presentation and exploration controls on the landing page. The search button and the WhatsApp float are the visitor's outward actions; the WhatsApp button hands off to WhatsApp as an external destination owned by that provider. The page itself does not complete a rental, hold a reservation, or store visitor data as part of any accepted requirement.
The provisioned FastAPI backend and MariaDB database are part of the delivered project's runnable infrastructure. Because no accepted requirement defines server-side data or a booking workflow, this document does not assign them product behavior; they remain available for the project without expanding the homepage's scope.
Future ideas that the user did not accept — such as a full rental site, booking flow, or accounts — are not part of the current delivery and are not represented as pages or requirements.
The single public page of divine-3d. It is anonymously reachable, RTL/Arabic by default, and hosts every accepted section, state and control.
Information and state
Primary and supporting actions
Domain entities (presentation-level)
Component responsibilities
States
FR-1 — Homepage delivery (explicit) As a visitor I should land on a complete, luxurious, modern 3D-interactive car-rental homepage for divine-3d.
FR-2 — Technology stack (explicit) As a developer I should have the project built with React + Vite + Tailwind CSS, Three.js with React Three Fiber and Drei, GSAP + ScrollTrigger for scroll-linked motion, and Framer Motion for transitions.
FR-3 — Performance (explicit) As a visitor I should experience smooth 60fps interaction, with 3D models lazily loaded and mobile supported.
FR-4 — 3D hero (explicit) As a visitor I should see a 3D car (.glb) slowly rotating on a reflective plinth, lit with cinematic HDRI lighting against a dark gradient background, under the large headline "اكترِ سيارة أحلامك في دقائق", and I should be able to control the car with mouse or touch.
FR-5 — Smart search bar (explicit) As a visitor I should use a floating Glassmorphism search bar with city, pickup date, return date, car type, and a glowing search button.
FR-6 — Car gallery (explicit) As a visitor I should browse 3D cards that tilt with mouse movement and whose car rotates on hover, showing price per day, transmission, fuel and seat count.
FR-7 — Colour selection (explicit) As a visitor I should press colour buttons that change the car colour in real time.
FR-8 — Why us (explicit) As a visitor I should see a "لماذا نحن" section with animated icons for comprehensive insurance, free delivery, 24/7 support, and no hidden fees.
FR-9 — How it works (explicit) As a visitor I should see three steps with a 3D car moving along a road as I scroll (scroll-driven animation).
FR-10 — Testimonials (explicit) As a visitor I should browse customer reviews in a slider with a depth effect.
FR-11 — Final CTA, footer and WhatsApp (explicit) As a visitor I should see a closing call to action, a footer, and a floating WhatsApp button.
FR-12 — Palette (explicit) As a visitor I should see charcoal black (#0B0B0F), gold/orange (#F5A623) as the accent colour, and soft white.
FR-13 — Typography (explicit) As a visitor I should see Arabic set in Cairo or Tajawal and English in Inter.
FR-14 — RTL and language switching (explicit) As a visitor I should have full RTL and Arabic support with the ability to switch to French and English.
FR-15 — Shape and glow (explicit) As a visitor I should see rounded corners, soft shadows, and glow on buttons.
FR-16 — Preloader (explicit) As a visitor I should see a preloader with an animated car and a loading percentage.
FR-17 — Custom cursor (explicit) As a visitor I should see a custom mouse cursor.
FR-18 — Interaction and motion (explicit) As a visitor I should experience mouse-move parallax, a camera that moves smoothly between sections during scroll, and hover effects on every interactive element.
FR-19 — WebGL fallback (explicit) As a visitor on a device without WebGL I should see a static image instead of the 3D scene.
FR-20 — Quality requirements (explicit) As a developer I should deliver clean code split into reusable components, fully responsive design (mobile, tablet, desktop), and basic SEO and accessibility.
FR-21 — Run instructions (explicit) As a developer I should receive a short explanation of how to run the project and where to place .glb models.
FR-22 — Runnable delivery (explicit)
As a developer I should receive the complete project files ready to run with npm run dev.
Product context. An Arabic-first leisure or business traveller in Morocco, Tunisia or the UAE, browsing on mobile or desktop, evaluating a premium car rental before committing. They may switch to French or English.
Primary goal. Decide whether divine-3d offers the car they want at a transparent price, and take the next step — search, or reach out over WhatsApp.
Distinct accepted responsibilities.
Inputs and decisions. City, dates, car type; which car and colour appeal; whether the trust promises and testimonials are convincing; whether to contact via WhatsApp.
Interactions with other participants. The WhatsApp button hands off to WhatsApp as an external destination; the visitor is the one who initiates that handoff.
Observable success. The visitor has seen the cars, prices and specs, chosen a colour, understood the service promises, and either searched or opened WhatsApp.
The creative direction is authoritative: Sensual dark-luxe motion — glossy charcoal voids, molten gold, cars as candy-coloured sculpture. Muse: Karim Rashid; headline idea: product as desirable object under light.
Colour tokens (dark mode)
| Role | Token | Value |
|---|---|---|
| Background (ground, ~70% of page) | bg-void | #0B0B0F |
| Raised glass/panel surface | surface | #16161C |
| Panel border | border-gold-hairline | rgba(245,166,35,0.18) |
| Primary text / headings | text-soft | #F4F1EA |
| Signal colour (CTAs, search button, active nav, prices, preloader headlights) | gold | #F5A623 |
| Secondary labels / metadata | muted | #8A8794 |
| Candy accent (micro-doses only: selected swatch ring, active testimonial dot, hover underline) | accent | #FF5C8A |
Car paint swatches form their own palette — gold, pearl white, candy pink, lime, graphite — as small 40px circular chips.
Typography
clamp(40px, 8.5vw, 112px); section headings clamp(30px, 4.5vw, 64px); body 16–18px, line-height 1.75 Arabic / 1.65 Latin.Shape language. Continuous-curve radii: cards 28px, panels 36px, buttons full pill; capsule inputs in the glass search bar; blob-soft section transitions with a gold hairline curve; the circular plinth as recurring motif (echoed by colour chips and testimonial dots); nothing sharp except thin 1px gold rules separating spec rows.
Spacing rhythm. 12-column editorial grid; 20px gutters at 375px; generous vertical rhythm between sections.
Imagery style. One hero subject: a glossy 3D car on a reflective charcoal plinth under warm HDRI (studio softbox + gold rim light). Supporting imagery is product-only: macro crops of wheel spokes, headlight glass, stitched leather, paint-swatch gloss spheres. No stock people or lifestyle photography in the hero; testimonial avatars are soft gold monogram circles on charcoal. WebGL fallback: a pre-rendered 3/4 studio PNG of the hero car on the same plinth with identical gradient background.
The public entry is a dark stage with one lit sculpture and an editorial headline beside it.
#0B0B0F void with a radial warm gradient (rgba(245,166,35,0.14) → transparent) blooming behind the car.clamp(40px, 8.5vw, 112px) Tajawal 800 in soft white, with the word "دقائق" in gold as the only coloured word.box-shadow: 0 0 40px rgba(245,166,35,0.35)).Signature moves carried through the page: the circular plinth motif (hero plinth → colour swatch ring → testimonial depth dots); the glass search capsule with backdrop-blur(24px) over #16161C at 55% opacity and a 1px gold hairline; gallery cards that tilt and rotate their car 180° on hover with hairline-ruled spec sheets; the pinned "how it works" road with a gold dashed centreline scrolling horizontally; an oversized gold final-CTA line at clamp(48px, 9vw, 128px); and a glossy gold WhatsApp capsule that morphs from circle to labelled pill on hover.
Interaction Model: Animated Motion Tempo: expressive Hero Dimensionality: webgl
Landing Hero Motion Brief
cubic-bezier(0.22, 1, 0.36, 1); search button glow pulsing once on mount.Landing Hero 3D Scene Brief — DIRECTION-DERIVED
A real-time R3F scene: one glossy car model on a circular reflective plinth, warm HDRI environment (studio softbox + gold rim light), soft elliptical contact shadow, dark radial-gradient backdrop. The scene shows the product's defining state — the car as a desirable object under light — and responds to pointer/touch with damped parallax and a slow idle turntable. Lazy-load the .glb; fall back to a pre-rendered 3/4 studio PNG when WebGL is unavailable.
npm run dev.npm run dev, including a short explanation of how to run it and where to place .glb models.npm run dev.No completed page designs yet.
Completed design pages will appear here when they are ready to preview.
No completed page designs yet.
Completed design pages will appear here when they are ready to preview.
No comments yet. Be the first!