<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[build with Domi]]></title><description><![CDATA[a nice blog about what I build and discover ]]></description><link>https://build-with-domi.hashnode.dev</link><generator>RSS for Node</generator><lastBuildDate>Thu, 17 Sep 2026 00:02:14 GMT</lastBuildDate><atom:link href="https://build-with-domi.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Building a Premium Accordion Component: A Journey from Basic to Beautiful]]></title><description><![CDATA[TL;DR: I got obsessed with a luxury brand's accordion component and decided to reverse-engineer it. This tutorial shows you how to build an accordion that doesn't just work—it performs. We're talking 60fps GSAP animations, 3D micro-interactions, comp...]]></description><link>https://build-with-domi.hashnode.dev/building-a-premium-accordion-component-a-journey-from-basic-to-beautiful</link><guid isPermaLink="true">https://build-with-domi.hashnode.dev/building-a-premium-accordion-component-a-journey-from-basic-to-beautiful</guid><category><![CDATA[React]]></category><category><![CDATA[Next.js]]></category><category><![CDATA[GSAP]]></category><category><![CDATA[animation]]></category><category><![CDATA[Frontend Development]]></category><category><![CDATA[Accessibility]]></category><category><![CDATA[performance]]></category><dc:creator><![CDATA[Dominique Degottex]]></dc:creator><pubDate>Wed, 13 Aug 2025 02:52:59 GMT</pubDate><content:encoded><![CDATA[<p><strong>TL;DR:</strong> I got obsessed with a luxury brand's accordion component and decided to reverse-engineer it. This tutorial shows you how to build an accordion that doesn't just work—it performs. We're talking 60fps GSAP animations, 3D micro-interactions, comprehensive accessibility, and the kind of attention to detail that makes interfaces feel expensive.</p>
<p><strong>What You'll Learn:</strong></p>
<ul>
<li><p>How to implement buttery-smooth height animations with GSAP (because CSS still can't handle <code>height: auto</code>)</p>
</li>
<li><p>Creating GPU-accelerated micro-interactions that run at 60fps</p>
</li>
<li><p>Building truly accessible components with proper ARIA attributes, keyboard navigation, and screen reader support</p>
</li>
<li><p>Performance optimization techniques including React.memo, RAF throttling, and lazy rendering</p>
</li>
<li><p>Advanced patterns like ref methods for programmatic control and staggered content animations</p>
</li>
</ul>
<p><strong>Tech Stack:</strong> Next.js 15 • TypeScript • GSAP • Tailwind CSS • Custom React Hooks</p>
<p><strong>Time to Read:</strong> 25 minutes | <strong>Difficulty:</strong> Intermediate to Advanced</p>
<p><strong>Prerequisites:</strong> Working knowledge of React, TypeScript basics, and familiarity with React Hooks</p>
<p><strong>GitHub Repository:</strong> <a target="_blank" href="http://github.com/DomiDex/premium-accordion">http://github.com/DomiDex/premium-accordion</a><br /><strong>Tutorial:</strong> <a target="_blank" href="https://www.100daysofcraft.com/blog/motion-interactions/premium-accordion-component">https://www.100daysofcraft.com/blog/motion-interactions/premium-accordion-component</a></p>
]]></content:encoded></item><item><title><![CDATA[Building a Magnetic Cursor Effect That Actually Feels Good: A Deep Dive into Physics-Based Web Interactions]]></title><description><![CDATA[Hey Hashnode fam! 👋
Ever noticed how luxury brand websites have those satisfying magnetic cursors that just feel right? I went down a rabbit hole trying to recreate this effect and learned way more about physics, performance, and human perception th...]]></description><link>https://build-with-domi.hashnode.dev/building-a-magnetic-cursor-effect-that-actually-feels-good-a-deep-dive-into-physics-based-web-interactions</link><guid isPermaLink="true">https://build-with-domi.hashnode.dev/building-a-magnetic-cursor-effect-that-actually-feels-good-a-deep-dive-into-physics-based-web-interactions</guid><category><![CDATA[Next.js]]></category><category><![CDATA[GSAP]]></category><category><![CDATA[GSAP Animation]]></category><category><![CDATA[webdev]]></category><category><![CDATA[frontend]]></category><category><![CDATA[TypeScript]]></category><category><![CDATA[#WebDevelopment #GSAP #ScrollTrigger #LocomotiveScroll #FrontendDevelopment #Animations]]></category><category><![CDATA[UX]]></category><dc:creator><![CDATA[Dominique Degottex]]></dc:creator><pubDate>Tue, 12 Aug 2025 01:31:50 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1754962039166/dc67f739-787c-4834-b172-f591134e9899.avif" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hey Hashnode fam! 👋</p>
<p>Ever noticed how luxury brand websites have those satisfying magnetic cursors that just feel <em>right</em>? I went down a rabbit hole trying to recreate this effect and learned way more about physics, performance, and human perception than I expected.</p>
<p>In this deep dive, I'm sharing everything: from the basic physics equations to the weird edge cases nobody talks about (like why your magnetic effect breaks when users scroll without moving their mouse).</p>
<p><strong>What You'll Learn:</strong></p>
<ul>
<li><p>How to implement realistic magnetic forces using GSAP and Next.js 15</p>
</li>
<li><p>Why my first attempt at strength 0.7 was hilariously wrong</p>
</li>
<li><p>The secret to edge-only magnetism for large cards</p>
</li>
<li><p>Performance optimizations that keep everything at 60fps</p>
</li>
<li><p>Those tiny details that separate "meh" from "magical"</p>
</li>
</ul>
<p><strong>Quick Preview:</strong></p>
<p>typescript</p>
<pre><code class="lang-typescript"><span class="hljs-comment">// The force equation that powers everything</span>
<span class="hljs-keyword">const</span> magneticForce = (distance: <span class="hljs-built_in">number</span>, threshold: <span class="hljs-built_in">number</span>): <span class="hljs-function"><span class="hljs-params">number</span> =&gt;</span> {
  <span class="hljs-keyword">if</span> (distance &gt;= threshold) <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;
  <span class="hljs-keyword">return</span> <span class="hljs-number">1</span> - distance / threshold;
};
</code></pre>
<p>Whether you're building your portfolio or working on client projects, these techniques will level up your interaction game. Plus, I'm sharing all the strength values that actually work in production (spoiler: they're way smaller than you think).</p>
<p>Let's dive in! And if you implement your own version, drop a comment – I'd love to see what you create!  </p>
<p>Find the tutorial, demo and codebase here: <a target="_blank" href="https://www.100daysofcraft.com/blog/motion-interactions/building-a-magnetic-cursor-effect">https://www.100daysofcraft.com/blog/motion-interactions/building-a-magnetic-cursor-effect</a></p>
]]></content:encoded></item></channel></rss>