Content comes first
Projects and contact information live in ordinary pages and sections. The room is an optional way to explore the same content.
A personal portfolio with a 3D desk you can explore, a small desktop interface, and a chair you can flick into motion.
The live portfolio scene, with a draggable chair and a small collection of desk objects.
Make a portfolio easy to read while giving visitors something memorable to explore.
The project combines a Three.js scene, a React interface, and a static frontend with a small contact-mail relay. Portfolio content is shared between the main page and AndyOS, an optional desktop with Projects, Mail, Terminal, and About.
Projects and contact information live in ordinary pages and sections. The room is an optional way to explore the same content.
Dragging the chair changes its angle directly. Release velocity carries into a frame-rate-independent friction model, so a flick coasts and a slow release settles.
Clicking a monitor opens AndyOS. Independent movable windows and a small dock keep Projects, Mail, and a playful terminal close by, while the main portfolio remains available outside the desktop.
The camera fits the available screen. The desk lamp switches the room and site between light and dark themes. Rendering pauses when the room is offscreen or covered, and reduced-motion preferences limit animation.