Premium portfolio built with Next.js 16, Three.js, GSAP & Framer Motion
A high-performance, scroll-driven experience showcasing real-world client projects
A custom-built developer portfolio designed as a cinematic, scroll-driven experience β not a template. Every animation, layout decision, and performance optimization is hand-crafted to deliver a premium user experience while maintaining Lighthouse 100/100 scores.
| Layer | Technology | Rationale |
|---|---|---|
| Framework | Next.js 16 (App Router) | Server Components, Turbopack, streaming SSR |
| 3D Engine | Three.js + React Three Fiber | Interactive 3D model embedded in scroll layout |
| Scroll Engine | GSAP ScrollTrigger | Horizontal scroll pinning, snap-to-section, scrub animations |
| Motion | Framer Motion | Page transitions, micro-interactions, spring physics |
| Styling | Tailwind CSS v4 | Utility-first, dark mode, custom design tokens |
| Analytics | Umami (self-hosted) | Cookie-free, GDPR-compliant, no consent banners |
| SEO | JSON-LD, OpenGraph, Sitemap | Structured data for ProfessionalService schema |
- Dynamic imports via
next/dynamicβ Three.js scene, Particles, and heavy modules loaded only when needed requestIdleCallback(rIC) pattern for deferring GSAP initialization to idle browser frames- Animated WebP component with
IntersectionObserverfor lazy-loading and progressive reveal - Font optimization β
Geist Monowithdisplay: swapto eliminate render-blocking
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Hero β Services ββββ Horizontal Scroll βββββΊ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β About Section β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Portfolio β Case 1 β Case 2 β ... β Case 5 βββββΊ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Contact Section β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
- Two independent horizontal scroll containers pinned via GSAP
ScrollTrigger - Desktop:
matchMedia('min-width: 1024px')activates horizontal scrolling - Mobile: Falls back to natural vertical scroll with full-width sections
- Sidebar lava progress bar synced via
MotionValue(zero re-renders)
- UrwisModel β GLB model loaded via
@react-three/drei, embedded in the Case Studies section - Interactive orbit with drag-to-rotate and parallax tilt on mouse move
Suspenseboundary with shimmer fallback for seamless loading
| Component | Purpose |
|---|---|
MagicBento |
Service cards with border-glow effect on hover |
MagneticWrapper |
Magnetic cursor attraction on CTA buttons |
AnimatedWebP |
Lazy-load animated images with IntersectionObserver + decode async |
Particles |
Canvas-based particle field with configurable color |
Built-in iframe preview system for showcasing deployed projects:
- Desktop/Mobile toggle with spring-animated viewport resize
- Keyboard-accessible (
Escto close) - GTM event tracking on demo interactions
moje-portfolio/
βββ app/
β βββ layout.tsx # Root layout (fonts, metadata, JSON-LD, analytics)
β βββ page.tsx # Main portfolio page (scroll engine, sections)
β βββ globals.css # Design tokens & global styles
β βββ not-found.tsx # Custom 404 page
β βββ robots.ts # Robots.txt generation
β βββ sitemap.ts # Dynamic sitemap generation
β βββ polityka-prywatnosci/ # Privacy policy (GDPR)
βββ components/
β βββ Hero.tsx # Hero section with orbital tech stack animation
β βββ UrwisModel.tsx # Three.js 3D model viewer
β βββ ui/
β βββ AnimatedWebP.tsx # Lazy animated image component
β βββ MagicBento.tsx # Hover-glow card component
β βββ MagneticButton.tsx
β βββ MagneticWrapper.tsx
β βββ Particles.tsx # Canvas particle system
βββ public/
β βββ urwis.glb # 3D model asset
β βββ *.webp # Optimized project screenshots
β βββ sfx/ # UI sound effects
βββ next.config.ts # Turbopack, compression, package optimization
βββ eslint.config.mjs # ESLint flat config (Core Web Vitals + TypeScript)
βββ tsconfig.json # Strict TypeScript configuration
# Clone
git clone https://github.com/marcin2121/moje-portfolio.git
cd moje-portfolio
# Install
npm install
# Development (Turbopack)
npm run dev
# Production build
npm run build && npm start- Dynamic imports for Three.js, Particles, and GSAP (excluded from initial bundle)
requestIdleCallbackpattern for deferring GSAP/ScrollTrigger initialization to idle frames- LCP element rendered without Framer Motion animation delay (zero render delay on desktop)
- Lazy-loaded
use-sound/ Howler.js β only imported on first user interaction, not at page load IntersectionObserver-based lazy loading for animated WebP images with decode asyncdisplay: swapfont loading strategy (eliminates render-blocking fonts)- Turbopack-optimized tree-shaking for
lucide-reactandframer-motion - Gzip/Brotli compression enabled via Next.js
Portfolio zaprojektowane jako immersyjne doΕwiadczenie scroll-driven β nie szablon. KaΕΌda animacja, decyzja layoutowa i optymalizacja wydajnoΕci zostaΕa stworzona rΔcznie, aby dostarczyΔ premium UX przy zachowaniu wynikΓ³w Lighthouse 100/100.
| Warstwa | Technologia | Uzasadnienie |
|---|---|---|
| Framework | Next.js 16 (App Router) | Server Components, Turbopack, streaming SSR |
| Silnik 3D | Three.js + React Three Fiber | Interaktywny model 3D w layoutcie scrollowym |
| Scroll | GSAP ScrollTrigger | Horyzontalny scroll z pinowaniem i snap-to-section |
| Animacje | Framer Motion | Mikro-interakcje, animacje sprΔΕΌynowe |
| Stylizacja | Tailwind CSS v4 | Utility-first, dark mode |
| Analityka | Umami (self-hosted) | Bez cookies, zgodne z GDPR |
| SEO | JSON-LD, OpenGraph, Sitemap | Dane strukturalne ProfessionalService |
- Architektura Performance-First β dynamiczne importy,
requestIdleCallback, lazy-loading zIntersectionObserver - Scroll-Driven Layout β dwa niezaleΕΌne kontenery horyzontalnego scrolla z GSAP, responsywny fallback dla mobile
- Interaktywna Scena 3D β model GLB z
@react-three/drei, drag-to-rotate, parallax na kursor - Wbudowany Viewport Demo β system podglΔ du iframe z przeΕΔ czaniem Desktop/Mobile i animacjΔ sprΔΕΌynowΔ
- Lava Progress Bar β wskaΕΊnik postΔpu synchronizowany z
MotionValue(zero re-renderΓ³w React)
npm install
npm run dev- Web: molendadevelopment.pl
- Email: kontakt@molendadevelopment.pl
Built with precision by Marcin Molenda Β· Β© 2026
