A responsive portfolio built with Next.js, React, and strict TypeScript. The interface uses GSAP and Framer Motion for scroll, pointer, and spring-driven interactions, with reduced-motion fallbacks throughout.
- Node.js 24 (see
.nvmrc) - npm
npm ci
npm run devOpen http://localhost:3000.
npm run typecheck
npm run lint
npm run buildTypeScript is configured in strict mode with unchecked indexed access enabled. Application code lives in app/ and hooks/; portfolio content and typed models are centralized in app/data/portfolio.ts and app/types/portfolio.ts.
- Pointer-driven interactions are limited to fine-pointer devices.
- Gesture animations are interruptible and preserve release velocity.
prefers-reduced-motiondisables marquee, parallax, pinned horizontal movement, and carousel auto-rotation.prefers-reduced-transparencyandprefers-contrastprovide more legible navigation materials.