Skip to content
Web

Design and build

Jeweller, Fürth

A static trilingual site (German, Arabic, English) for a jeweller in Fürth, led by a live Three.js ring you can spin and a stone selector that swaps the gem in real time.

Stack: React, Three.js, Motion, i18n

A gold ring with a swappable gemstone turning slowly in a dark studio
Desktop
Mobile

Problem

A jeweller's site has to feel as precise as the pieces, read properly in German, Arabic and English, and stay light: no heavy bundle, no third-party requests.

What I built

  1. Three.js ring hero: drag to rotate with inertia, idle sway, scroll rotation and cursor parallax, with three rotation modes.
  2. Stone selector that swaps the gem in real time with a light burst and a snap to face-on.
  3. Procedural PMREM studio lighting instead of an HDRI download; a still render shows until WebGL is ready, and the loop pauses offscreen.
  4. Full RTL for Arabic: mirrored hero, numbers, phone and hours pinned LTR, Amiri and Cairo loaded with unicode-range.
  5. A live open or closed badge computed in the visitor's timezone.
  6. Removed EffectComposer after measuring double sRGB encoding and bloom alpha bugs; the glow is CSS mix-blend-mode: screen.

Proof

  • Zero third-party requests
  • CSS 6.7 kB gzip; JS 109 kB initial plus 123 kB deferred for Three.js
  • Audited at 6 widths

Stack

  • React
  • Three.js
  • Motion
  • i18n