Build·Colophon
What this is built with.
Every line below is a credit. Most of the picks are drawn from my own stars - the curated subset that earned a place in this build. Everything you see is open source unless noted.
Framework + language
- Next.js 16
by Vercel
App router, server components, image optimisation, server actions for the Letterboxd RSS pull.
Async server components, suspense, the whole render model.
Strict mode across every file.
Utilities + arbitrary values; CSS variables drive the theme tokens.
3D + motion
- three.js
by mrdoob
WebGL plumbing under every 3D surface.
- @react-three/fiber
by pmndrs
React renderer for three.js. ScrollScene, ProjectGlyph, PointField all sit on it.
- react-wrap-balancer
by shuding
Balances the hero headline wrap so no orphan words across breakpoints.
- cobe
by shuding
5KB WebGL dot-globe on the Dubai Digital Twin work card. Markers at Dubai and Kharkiv. Drag to spin.
- Cult UI · EdgeBlur
by nolly-studio
Progressive backdrop-filter blur edge at the viewport bottom. Stacked 5-layer mask. Zero-dep MIT pick from the Cult UI registry.
UI primitives
Positioning for the hover footnotes on the About character pointers.
- sonner
by emilkowalski
Toast notifications on CV download + email copy.
Icon set. Workhorse for nav, CTAs, work-row arrows.
Type + assets
Display face for every headline + tile title. Variable axes: optical-size, SOFT, WONK.
Body face for paragraphs + UI text.
Pulls Pavlo's recent 4-star+ films into the Now-Showing strip in Passions.
Content sources
Top-4 stills surfaced via Letterboxd's public og:image. Cached locally.
Cleaning ablation, viewer gallery, benchmark dashboard - all from Pavlo's own research output.
Demo + hero screenshots, lifted from the FOV personal-ops project.
Stars consulted, not yet wired
Reserved to replace the hand-rolled scroll-reveal layer (Wave 3).
Reserved for a real splat embed on the Splat Viewer card (Wave 3).
Reserved as the pattern for the Photography passion track when assets land.