// the find
brunosimon/folio-2025
Bruno Simon's 2025 interactive portfolio — a Three.js-based open world where you drive a car through zones representing his career, projects, and social links. It's a showcase piece, not a library; the value is in seeing how a production-quality WebGL experience is structured at scale.
The game loop is organized as an explicit dependency graph with numbered tick stages, so you can see exactly why systems run in a given order — this is a real solution to a real problem in game-style rendering loops. The asset pipeline is thoughtful: GLB and texture files get ETC1S compression via gltf-transform with originals preserved, which is exactly how you should handle this. Physical and visual vehicle components are split into separate classes (PhysicsVehicle vs VisualVehicle), keeping physics state decoupled from rendering — a pattern most Three.js projects never bother with. Input handling covers keyboard, gamepad, pointer, touch (nipple.js), and wheel, all unified under a single Inputs abstraction.
The setup instructions say `npm install --force`, which means there are unresolved peer dependency conflicts that were buried rather than fixed — not a great sign for a project people might fork. The entire codebase is vanilla JS with no TypeScript; at this size (~80+ source files) you feel that absence when trying to understand what shape data is expected in. It's genuinely non-reusable: every Area, every zone, every texture path is hardcoded to Bruno's specific biography, so cloning this as a portfolio template requires gutting most of it. Stylus for CSS is a liability — the preprocessor has been effectively unmaintained for years and there's no migration path offered.