WorkInteractiveDevelopment
One River, Two Memories
The 1838 Battle of Blood River / Ncome, told from two perspectives.
- Role
- Design and development
- Year
- 2026
- Context
- Postgrad (PGDip), PP 410
- Stack
- Astro · Vanilla JS · GSAP ScrollTrigger · Lenis · Canvas API · Firebase Hosting


Tell one of South Africa's most contested days, the 1838 Battle of Blood River / Ncome, from two perspectives, without collapsing them into a single story. And make it something you move through, not a page you read.

One medium, not six
History, interaction, animation, sound, development and storytelling are treated as one material. The scroll is the narrator.
Two memories
The same river and the same day, held side by side, each perspective given its own space in the telling.
Lean by design
Astro and vanilla JavaScript keep the build light. GSAP ScrollTrigger sequences the scenes, Lenis smooths the scroll and the Canvas API handles what the DOM can't.
Screens05 Scroll
- Scroll-driven scene sequencing with GSAP ScrollTrigger
- Lenis smooth scrolling synced to GSAP
- Canvas API rendering alongside the DOM
- Static Astro build on Firebase Hosting
Built with
- Astro
- Vanilla JS
- GSAP ScrollTrigger
- Lenis
- Canvas API
- Firebase Hosting
- Enzo De Vittorio
- Design and development
- Client
- The heritage of the Zulu and the Afrikaans Voortrekkers




