Cinematic scrollytelling web experience built with React, TypeScript, Tailwind CSS, GSAP, and HTML5 Canvas. It preloads an image sequence, maps scroll position to frame playback, and adds smooth parallax motion with a premium UI overlay.
- Scroll-synced frame-by-frame canvas animation (video-like playback)
- Preloading flow with loading percentage overlay
- Responsive
object-fit: coverstyle canvas rendering math - Subtle canvas zoom to hide baked-in letterboxing
- Mouse-based parallax depth with GSAP easing
- Smart floating scroll control (auto toggles up/down by position)
- Cinematic gradients, glass navbar, and polished typography
- React + TypeScript
- Vite
- Tailwind CSS v4
- GSAP + ScrollToPlugin
- HTML5 Canvas
src/App.tsx- main scrollytelling logic and UI overlaysrc/index.css- global styles and font utility classespublic/frames- preprocessed image sequence frames
npm installnpm run devnpm run buildnpm run previewThe app expects frame assets in:
public/frames/frame-001.pngtopublic/frames/frame-180.png
If you change naming or frame count, update the related constants and URL generation in src/App.tsx.
TOTAL_FRAMES- total frames in the sequenceZOOM_FACTOR- extra scale used during draw to crop letterbox barsPARALLAX_STRENGTH- mouse parallax intensity
Use this project as a base template for portfolio demos, product storytelling pages, and interactive launches.