When I decided to rebuild my portfolio, I wanted something that felt less like a website and more like a film. The idea: scrolling forward plays the Big Bang origin story of the universe. Scrolling backward rewinds it — literally, frame by frame.
The obvious Flutter approach is AnimationController. I tried it. It falls apart immediately: you can't drive an AnimationController backward with scroll without hacking around its internal state, and the moment you want a dozen independent effects — star fields, particle bursts, planet orbits, text assembly — you end up with a dozen controllers that need to stay synchronized. It becomes a timeline problem, not a Flutter problem.
I threw away the controllers and replaced everything with a single number.
The core idea: one t, pure functions everywhere
Every animation on the site is a pure function of a single scroll-time value t ∈ [0, 1]. t = 0 is the very beginning. t = 1 is the end. Every star position, every particle alpha, every planet orbit angle — all of it is computed from t and nothing else. This means rewinding is free: you just decrease t, and everything runs backward automatically.







