An ultra-premium, scroll-driven concept site for a fictional lake-palace hotel.
Install dependencies, then run the development server. The production build is created with the project’s build script.
Create public/assets/video/ and place these files there:
01-hero-aerial.mp402-arrival-gate.mp403-durbar-lobby.mp404-royal-suite.mp405-pool-gardens.mp406-night-finale.mp4poster.jpg
Missing files automatically fall back to the deep-sapphire animated treatment and are logged in the browser console.
For reliable scroll seeking, re-encode clips 01, 02, and 06 with dense keyframes:
ffmpeg -i in.mp4 -vf scale=1920:-2 -g 1 -crf 20 -movflags +faststart -an out.mp4In app/page.tsx, find the three scrubVideo() calls. The second number controls each chapter’s scroll distance as a percentage (for example, 380 is approximately 380vh).
- Chrome desktop: video seeking, Lenis inertia, pinned chapters, hover states
- Safari desktop: pin spacing, scroll restoration, video seek readiness
- iOS Safari: poster/Ken Burns fallback, autoplay loops, no horizontal overflow
- Reduced Motion enabled: no heavy pinning or scrubbing, readable static flow