<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: lemi melkamu</title>
    <description>The latest articles on DEV Community by lemi melkamu (@lemi_melkamu_25).</description>
    <link>https://dev.to/lemi_melkamu_25</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1585041%2F96aef84c-679f-4779-9295-7335798f2cec.jpg</url>
      <title>DEV Community: lemi melkamu</title>
      <link>https://dev.to/lemi_melkamu_25</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/lemi_melkamu_25"/>
    <language>en</language>
    <item>
      <title>Solving the Antigravity Authentication Redirect Loop on Windows</title>
      <dc:creator>lemi melkamu</dc:creator>
      <pubDate>Mon, 09 Mar 2026 16:41:11 +0000</pubDate>
      <link>https://dev.to/lemi_melkamu_25/solving-the-antigravity-authentication-redirect-loop-on-windows-24fm</link>
      <guid>https://dev.to/lemi_melkamu_25/solving-the-antigravity-authentication-redirect-loop-on-windows-24fm</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faw45st49t6smtz2t4oke.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faw45st49t6smtz2t4oke.png" alt=" " width="563" height="400"&gt;&lt;/a&gt;If you've been trying to set up Google Antigravity on Windows, you might have encountered a frustrating loop: your browser confirms you've signed in, but the desktop app throws a "Failed to exchange authorization code for token" error.&lt;/p&gt;

&lt;p&gt;Why this happens&lt;br&gt;
This usually occurs because the underlying gaxios library in the Antigravity build is strictly enforcing TLS/SSL verification. In certain Windows network configurations, this handshake fails during the local callback, preventing the "Authorization Code" from being swapped for an "Access Token."&lt;/p&gt;

&lt;p&gt;The Step-by-Step Fix&lt;br&gt;
Step 1: Locate the Source File&lt;br&gt;
Open your File Explorer and head to the local installation directory of the app:&lt;br&gt;
C:\Users&amp;lt;YourUsername&amp;gt;\AppData\Local\Programs\Antigravity\resources\app\node_modules\gaxios\build\cjs\src\&lt;/p&gt;

&lt;p&gt;Step 2: Modify gaxios.js&lt;br&gt;
Open the file gaxios.js in your preferred text editor. We need to inject a node environment variable to allow the unauthorized handshake.&lt;/p&gt;

&lt;p&gt;Find the HTTPS requirement:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;https_1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Add the following bypass immediately after:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;NODE_TLS_REJECT_UNAUTHORIZED&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;0&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Step 3: Restart and Authenticate&lt;br&gt;
Save the file and restart your Antigravity client. When you click Sign in with Google this time, the app will successfully "catch" the redirect from your browser.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>node</category>
      <category>security</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>I built a generic React Select on top of shadcn/ui (supports objects, async &amp; pagination)</title>
      <dc:creator>lemi melkamu</dc:creator>
      <pubDate>Thu, 18 Dec 2025 08:35:05 +0000</pubDate>
      <link>https://dev.to/lemi_melkamu_25/i-built-a-generic-react-select-on-top-of-shadcnui-supports-objects-async-pagination-54eo</link>
      <guid>https://dev.to/lemi_melkamu_25/i-built-a-generic-react-select-on-top-of-shadcnui-supports-objects-async-pagination-54eo</guid>
      <description>&lt;p&gt;Most React select components work great — until your data isn’t just strings or IDs.&lt;/p&gt;

&lt;p&gt;In real-world apps, we often need to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Select &lt;strong&gt;objects&lt;/strong&gt;, not primitives&lt;/li&gt;
&lt;li&gt;Support &lt;strong&gt;server-side search&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Handle &lt;strong&gt;pagination or infinite scroll&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Reuse the same select across different data models&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So I built &lt;strong&gt;react-generic-select&lt;/strong&gt;, a &lt;strong&gt;type-safe Select / Multi-Select component built on top of shadcn/ui&lt;/strong&gt;, designed for real application data.&lt;/p&gt;

&lt;p&gt;This is an &lt;strong&gt;early open-source experiment&lt;/strong&gt;, and I’d love feedback and contributions from the community — especially from folks using shadcn/ui in production.&lt;/p&gt;

&lt;p&gt;🔗 &lt;strong&gt;GitHub&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://github.com/lemidb/react-generic-select" rel="noopener noreferrer"&gt;https://github.com/lemidb/react-generic-select&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🌐 &lt;strong&gt;Live Demo&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://react-generic-select-demo-3zmt.vercel.app/" rel="noopener noreferrer"&gt;https://react-generic-select-demo-3zmt.vercel.app/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;📦 &lt;strong&gt;npm&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://www.npmjs.com/package/react-generic-select" rel="noopener noreferrer"&gt;https://www.npmjs.com/package/react-generic-select&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you’ve ever customized shadcn Select to work with objects, async APIs, or large datasets — I’d love to hear your thoughts.&lt;/p&gt;

</description>
      <category>react</category>
      <category>shadcn</category>
      <category>typescript</category>
      <category>ui</category>
    </item>
    <item>
      <title>A missing piece in the shadcn ecosystem: react-generic-select.</title>
      <dc:creator>lemi melkamu</dc:creator>
      <pubDate>Tue, 16 Dec 2025 13:46:21 +0000</pubDate>
      <link>https://dev.to/lemi_melkamu_25/a-missing-piece-in-the-shadcn-ecosystem-react-generic-select-4llk</link>
      <guid>https://dev.to/lemi_melkamu_25/a-missing-piece-in-the-shadcn-ecosystem-react-generic-select-4llk</guid>
      <description>&lt;p&gt;Shadcn UI has changed how many of us build React apps.&lt;/p&gt;

&lt;p&gt;Instead of shipping a heavy UI framework, it gives us copy-pasteable, composable components that we actually own. Buttons, inputs, dialogs, popovers — all clean, accessible, and easy to adapt.&lt;/p&gt;

&lt;p&gt;But when it comes to real-world select components, things get complicated very quickly.&lt;/p&gt;

&lt;p&gt;The problem&lt;/p&gt;

&lt;p&gt;In production apps, a “select” is rarely just a static dropdown.&lt;/p&gt;

&lt;p&gt;We often need:&lt;/p&gt;

&lt;p&gt;Generic data support like list of objects (not just { label, value })&lt;/p&gt;

&lt;p&gt;Server-side search&lt;/p&gt;

&lt;p&gt;Pagination / infinite scrolling&lt;/p&gt;

&lt;p&gt;Async loading&lt;/p&gt;

&lt;p&gt;Full type safety&lt;/p&gt;

&lt;p&gt;Custom rendering&lt;/p&gt;

&lt;p&gt;And full control over behavior and styling&lt;/p&gt;

&lt;p&gt;Today, most of us end up:&lt;/p&gt;

&lt;p&gt;Digging through multiple third-party select libraries&lt;/p&gt;

&lt;p&gt;Fighting opinionated APIs&lt;/p&gt;

&lt;p&gt;Or rebuilding the same logic again and again on top of Shadcn components&lt;/p&gt;

&lt;p&gt;That’s the gap I wanted to explore.&lt;/p&gt;

&lt;p&gt;Introducing react-generic-select&lt;/p&gt;

&lt;p&gt;react-generic-select is an opinionated but composable select component built on top of Shadcn UI.&lt;/p&gt;

&lt;p&gt;It’s not a framework.&lt;br&gt;
It’s not a replacement.&lt;br&gt;
It’s a pattern.&lt;/p&gt;

&lt;p&gt;👉 A reusable single-select and multi-select implementation composed from:&lt;/p&gt;

&lt;p&gt;Command&lt;/p&gt;

&lt;p&gt;Popover&lt;/p&gt;

&lt;p&gt;Button&lt;/p&gt;

&lt;p&gt;Input&lt;/p&gt;

&lt;p&gt;and other Shadcn primitives&lt;/p&gt;

&lt;p&gt;Designed for:&lt;/p&gt;

&lt;p&gt;Paginated data&lt;/p&gt;

&lt;p&gt;Async sources&lt;/p&gt;

&lt;p&gt;Server-side filtering&lt;/p&gt;

&lt;p&gt;Generic object models&lt;/p&gt;

&lt;p&gt;Type-safe configuration&lt;/p&gt;

&lt;p&gt;Why this exists (and why it’s intentionally simple)&lt;/p&gt;

&lt;p&gt;Shadcn doesn’t currently ship an all-in-one generic select component — and that’s understandable.&lt;/p&gt;

&lt;p&gt;But in real applications, this is a very common need, and many of us solve it in similar ways.&lt;/p&gt;

&lt;p&gt;The goal of this project is simple:&lt;/p&gt;

&lt;p&gt;Explore whether this kind of component should exist as a shared, community-driven Shadcn pattern — to save time and reduce repeated effort.&lt;/p&gt;

&lt;p&gt;This package is intentionally:&lt;/p&gt;

&lt;p&gt;Composable&lt;/p&gt;

&lt;p&gt;Unopinionated about data&lt;/p&gt;

&lt;p&gt;Built from Shadcn components&lt;/p&gt;

&lt;p&gt;Easy to copy, fork, and customize&lt;/p&gt;

&lt;p&gt;You still own the UI.&lt;br&gt;
You still control the logic.&lt;br&gt;
This just gives you a strong starting point.&lt;/p&gt;

&lt;p&gt;Live demo&lt;/p&gt;

&lt;p&gt;You can see it in action here:&lt;/p&gt;

&lt;p&gt;👉 Demo:&lt;br&gt;
&lt;a href="https://react-generic-select-demo-3zmt.vercel.app/" rel="noopener noreferrer"&gt;https://react-generic-select-demo-3zmt.vercel.app/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The demo shows:&lt;/p&gt;

&lt;p&gt;Generic object mapping (valueKey, labelKey)&lt;/p&gt;

&lt;p&gt;Paginated data&lt;/p&gt;

&lt;p&gt;Clean integration with Shadcn styling&lt;/p&gt;

&lt;p&gt;Fully typed usage&lt;/p&gt;

&lt;p&gt;Try it in your project&lt;/p&gt;

&lt;p&gt;The package is live on npm:&lt;/p&gt;

&lt;p&gt;👉 npm:&lt;br&gt;
&lt;a href="https://www.npmjs.com/package/react-generic-select" rel="noopener noreferrer"&gt;https://www.npmjs.com/package/react-generic-select&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;npm install react-generic-select&lt;/p&gt;

&lt;p&gt;Note: This package expects you to already be using Shadcn UI.&lt;br&gt;
It composes existing Shadcn components instead of bundling its own UI primitives.&lt;/p&gt;

&lt;p&gt;Repository &amp;amp; contributions&lt;/p&gt;

&lt;p&gt;This is an open experiment, not a “finished product”.&lt;/p&gt;

&lt;p&gt;👉 GitHub repo:&lt;br&gt;
&lt;a href="https://github.com/lemidb/react-generic-select" rel="noopener noreferrer"&gt;https://github.com/lemidb/react-generic-select&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I’d love help from the community on:&lt;/p&gt;

&lt;p&gt;Performance optimizations&lt;/p&gt;

&lt;p&gt;Better async &amp;amp; pagination patterns&lt;/p&gt;

&lt;p&gt;API design improvements&lt;/p&gt;

&lt;p&gt;Edge cases from real production usage&lt;/p&gt;

&lt;p&gt;Accessibility feedback&lt;/p&gt;

&lt;p&gt;DX improvements&lt;/p&gt;

&lt;p&gt;If you’ve built something similar before — your experience would be incredibly valuable here.&lt;/p&gt;

&lt;p&gt;Why I’m sharing this early&lt;/p&gt;

&lt;p&gt;This component is not perfect, and that’s intentional.&lt;/p&gt;

&lt;p&gt;Instead of polishing it in isolation, I wanted to:&lt;/p&gt;

&lt;p&gt;Share the idea early&lt;/p&gt;

&lt;p&gt;Get feedback from experienced Shadcn users&lt;/p&gt;

&lt;p&gt;Let the community shape whether this pattern is useful&lt;/p&gt;

&lt;p&gt;If nothing else, I hope this sparks discussion around:&lt;/p&gt;

&lt;p&gt;What “advanced” components belong in the Shadcn ecosystem as reusable patterns?&lt;/p&gt;

&lt;p&gt;I’m excited to see where the community takes this 🙌&lt;/p&gt;

</description>
      <category>react</category>
      <category>opensource</category>
    </item>
    <item>
      <title>A Different Approach to Sharing Your Professional Profile.</title>
      <dc:creator>lemi melkamu</dc:creator>
      <pubDate>Wed, 28 Aug 2024 01:54:30 +0000</pubDate>
      <link>https://dev.to/lemi_melkamu_25/a-different-approach-to-sharing-your-professional-profile-5eoe</link>
      <guid>https://dev.to/lemi_melkamu_25/a-different-approach-to-sharing-your-professional-profile-5eoe</guid>
      <description>&lt;h2&gt;
  
  
  🎉 Introducing My Telegram Portfolio Bot Demo! 🎉
&lt;/h2&gt;

&lt;p&gt;Hello devs! 👋 I'm 🤸‍♂️excited to share my Telegram portfolio bot demo with you. It's a creative exploration of different approaches to enhancing user experiences. 🚀&lt;/p&gt;

&lt;p&gt;I invite you to embark on this journey with me by visiting my bot at &lt;a href="https://t.me/lemi_portfolio_bot" rel="noopener noreferrer"&gt;&lt;code&gt;https://t.me/lemi_portfolio_bot&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;If you're interested in exploring the codebase and enhancing it. You can find the repository at &lt;a href="https://github.com/lemidb/my_portfolio_bot/" rel="noopener noreferrer"&gt;repo&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Your feedback is invaluable to me. If you have any questions, comments, or ideas, feel free to reach out at &lt;a href="mailto:lemimelkamu@gmail.com"&gt;email&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Thank you for taking the time to check it out! Your support means the world to me. 💖 Let's connect on LinkedIn: &lt;a href="https://www.linkedin.com/in/lemidbgelnemerd23" rel="noopener noreferrer"&gt;#connect&lt;/a&gt;&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>github</category>
      <category>python</category>
      <category>bot</category>
    </item>
  </channel>
</rss>
