My name is Pavel Mazhuga, I’m a creative frontend developer from Krasnoyarsk, Russia. I’ve been working in frontend since 2017. It so happened that I started as a creative developer right away: my first paid task was building a website for a marketing agency, entirely composed of graphics and animations, essentially a full storytelling experience.
It was an incredibly difficult task for a beginner developer; I spent a whole month working on it in the evenings, but I completed it. This project opened the door to my career: later, thanks to it, I was hired for my first full-time job. Since then, I’ve been constantly improving in web technologies in general and advanced web graphics in particular.
I’m a fan of creative immersive stories. In a world where AI generates typical solutions in seconds, creative expression is what sets humans apart from machines. Creative websites don’t follow templates: they experiment with aesthetics. They inspire and provoke emotions. They engage. And that’s my thing.
So it’s no surprise that I became passionate about Three.js. I found meaning in exploring 3D on the web, the possibilities of WebGL (and now WebGPU), and the emotions, experiences, and value it can bring. I literally feel like an architect of my own digital space: I create worlds with their own atmosphere and laws, play with light the way artists do, and build complex interactive mechanics that are impossible in a traditional interface.
Projects I’m proud of
Since 2018, I’ve been working at Chipsa design studio as a frontend lead. We’ve made many amazing projects, and I’m happy to show you some of them I heavily contributed to.
Timeless
Timeless became an example of how truly creative 3D websites are born, where code turns into directing light and space. It’s a full 3D scene with portals, water, reflections, star particles, and dynamic lighting. The main theme is time and space that the user experiences by moving through the light.
The preloader animation is rendered on a canvas inside a web worker (hello, Offscreen Canvas API), which allows hiding the cost of parsing and loading data onto the GPU.
Every detail of the project is manually optimized: geometry is compressed using the DRACO algorithm, KTX2 textures reduce memory consumption and speed up GPU upload, shader preloading and precompilation are implemented, and the quality adapts to the user’s device performance.
One of the interface highlights is a button with wavy borders. It’s implemented in Canvas 2D using simplex noise and Bézier curves.
Tech stack: React (Next.js), Three.js (R3F), Framer Motion.
Chipsa
The third version of our studio’s website. The 3D logo is designed as a stone shattered into pieces that scatter when the cursor approaches. Click the logo to see the transition to another material.
The main page is a mix of HTML and WebGL with plenty of parallax effects and scroll-linked animations.
Tech stack: React (Next.js), Three.js (R3F), Framer Motion.
Samokat: Courier Museum
A virtual courier museum. This project truly became iconic within the team. We created not just a website or an interactive experience but a fully immersive 3D space where the user literally walks through the history of courier work.
A narrative journey through eras. Each zone is a separate historical period with unique artifacts, environment, and visual atmosphere.
It’s an interactive mini-game. The user searches for items, studies exhibits, and earns achievements. Everything is designed to encourage exploration and maintain engagement.
It’s a unified connected environment. The space is designed as a continuous, uninterrupted timeline.
We had an almost unreal challenge: to launch in 2.5 months. With that amount of 3D content, mechanics, optimizations, and custom logic, it was a very tough deadline. Nevertheless, we managed to assemble a team, set up processes, and deliver the project on time. We succeeded.
To enhance the sense of presence, we added the ability to look around by moving the device. This created the feeling that the user is actually inside the exhibition.
Tech stack: React (Next.js), Three.js (R3F), Framer Motion.
Lab
In my spare time, I create various Three.js experiments (primarily using TSL) to express myself and learn new things. I share the source code, so feel free to explore with me!
Philosophy
The best is the enemy of the good.
Often, striving for perfection only slows you down. You can endlessly polish details, rewrite code, or redo the design, but real value appears only when the work is brought to a “good enough” state and released into the world. A completed good solution is always better than a perfect one that never left your head.
Love what you do. Do what you love.
When you genuinely enjoy the process, you stop seeing it as an obligation. A natural desire to dig deeper appears: to try new things, learn from mistakes. All without inner resistance. And if you manage to turn your passions into something that helps others, you get that special harmony between work and personal motivation.
Be useful. Be a problem solver.
Ultimately, any work is judged not by fancy words but by the real value it brings. Being useful means seeing the need, understanding the context, and offering solutions that genuinely make people’s lives easier, not just adding yet another beautiful but pointless feature. The real result is when your contribution makes someone’s work simpler, their experience better, and the world slightly more efficient.
Learn every day, step by step. Be consistent.
Don’t try to grasp the ungraspable. Just do your thing and become 1% better each day than you were yesterday. A year from now, you’ll be amazed by your progress.
Tools & Workflow
Tools I use almost every day to create inspiring stuff:
Current challenges and what’s next
Since I’m obsessed with rendering performance, I’m exploring web workers and how and what can be rendered in a separate thread. How to do it efficiently. And how future Structs should bring JS even closer to real multithreading.
Right now, I’m deeply into studying WebGPU and the Three.js Shading Language in particular. It’s amazing what compute shaders make possible. I’m convinced that WebGPU is a breath of fresh air for the immersive web.
Also, recently I’ve been paying more attention to AR technologies. I’m especially impressed by how familiar tools and approaches can be used to create genuinely useful and in-demand functionality. Augmented reality stopped being just a flashy visual trick long ago. Today it’s a full-fledged tool that improves user experience, expands familiar interaction scenarios, and solves real-world problems across many fields.
The creative web is an endless space of possibilities. Technologies change, frameworks come and go, but one thing stays the same: the value of what we create is measured by the emotions, experience, and usefulness the user receives. And the deeper we understand our tools, the more freely we can express our ideas.
Learn every day, in small steps. Love the process, respect your time, and remember that the coolest thing about our profession is the ability to turn imagination into a living digital experience.
Be curious. Be brave. And keep building a web that inspires.
Thank you. You can find more of my work on my portfolio and X.
