A cinematic portfolio combining reliable engineering with motion, visual depth and real-time graphics.
Live website · LinkedIn · GitHub
This is not a template-based portfolio or a static collection of cards. It is an exploration of how software engineering, interface design, animation and real-time rendering can work together without sacrificing clarity, accessibility or maintainability.
The experience has two main goals: to present my work through a distinctive visual identity and to make moving through it feel natural. Three.js, custom GLSL shaders and particles create the atmosphere, while GSAP connects scrolling, camera movement, text and shader transitions into one coherent timeline.
Visitors can explore my professional experience, education and recommendations, navigate an interactive constellation of projects, and get in touch directly through the website.
🌌 Cinematic WebGL environment: particles, lighting, fog, bloom and section-aware shaders
🧭 Scroll-directed storytelling: coordinated DOM, camera and shader transitions
✨ Project constellation: connected projects with keyboard-operable details and navigation
📱 Responsive rendering: dedicated camera, layout and effect settings for smaller devices
⚡ Performance: bounded frame updates, reusable scene objects and geometry work moved to a Web Worker
♿ Accessibility: semantic content, reduced-motion support and professional information kept outside WebGL
🔎 SEO: structured data, social metadata, sitemap and a canonical custom domain
The application is organised into focused modules for page sections, rendering systems, shaders, interactions and styling. main.ts acts primarily as a composition root instead of holding the full implementation.
React is part of my professional stack, but this project does not need a large component state model. Native DOM APIs and modular TypeScript keep the interface lightweight and allow the visual layer to remain independent.
The perfect sweep is a small but meaningful achievement for a visually complex portfolio powered by Three.js, WebGL, custom shaders and extensive animation.
100 Performance · 100 Accessibility · 100 Best Practices · 100 SEO · 3/3 Agentic Browsing
Audit snapshot · 20 August 2026 at 20:52 GMT+2 · Lighthouse 13.4.0 · Chromium 151 · Initial single-page desktop load · Custom throttling
🟦 Language and tooling: TypeScript, Vite
🎨 Rendering: Three.js, WebGL, GLSL
🎬 Motion: GSAP, ScrollTrigger, ScrollSmoother, SplitText
🖌️ Styling: SCSS
🧵 Background processing: Web Worker
☁️ Hosting: Cloudflare Pages and GitHub Pages
The repository also contains the email assets used by the contact flow:
- Customer confirmation email — build, variables and sending behaviour;
- Email signature — Spark installation and testing.
SEO is focused on the portfolio itself and does not require a separate publishing workflow.
npm run seo:check # validate the production SEO output in dist/
npm run images:generate # regenerate responsive project-image variants
npm run images:check # verify image dimensions, sizes and fallbacksThe deployment and recurring Google Search Console/Bing Webmaster Tools checklist is documented in docs/seo-operations.md.
You will need a recent Node.js release, npm and a browser with WebGL support.
npm install
npm run devUseful commands:
npm run typecheck # validate TypeScript
npm run lint # check code and styles
npm test # run contact-form tests
npm run build # create the production build
npm run preview # preview the generated siteThe contact form uses Cloudflare Pages Functions, Turnstile and Resend. A production setup requires VITE_TURNSTILE_SITE_KEY, TURNSTILE_SECRET_KEY, RESEND_API_KEY, CONTACT_SENDER and CONTACT_RECIPIENT. Visitor confirmation emails can be enabled with SEND_VISITOR_CONFIRMATION=true.
The primary version is served through Cloudflare Pages at nowakkamil.com. The GitHub Pages deployment remains available as an alternate address, while the custom domain is canonical for search engines and public sharing.
I am a senior full-stack developer specialising in React, TypeScript and .NET. I build robust applications across front end, back end and cloud infrastructure, and particularly enjoy transforming ambitious visual concepts into maintainable digital products.
My interest in Three.js, WebGL and digital motion draws on a background in fine-art photography and compositing — the point where technical problem-solving and visual experimentation meet.
Unless a separate licence file states otherwise, the source code, visual design, text, shaders, media and project assets are provided for evaluation and demonstration purposes. They may not be copied, redistributed or used as a template without permission. Third-party libraries and assets remain subject to their respective licences.
Built with TypeScript, Three.js, GLSL, GSAP, SCSS and a refusal to make another ordinary portfolio.
