<?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: Mohamed Ibrahim</title>
    <description>The latest articles on DEV Community by Mohamed Ibrahim (@moibra).</description>
    <link>https://dev.to/moibra</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%2F642980%2Fab12473d-4e0b-420f-98ae-ef7ae1acc074.jpeg</url>
      <title>DEV Community: Mohamed Ibrahim</title>
      <link>https://dev.to/moibra</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/moibra"/>
    <language>en</language>
    <item>
      <title>How I Built a Multi-Language Code Playground with Next.js 🚀</title>
      <dc:creator>Mohamed Ibrahim</dc:creator>
      <pubDate>Thu, 29 Jan 2026 06:00:00 +0000</pubDate>
      <link>https://dev.to/moibra/how-i-built-a-multi-language-code-playground-with-nextjs-5779</link>
      <guid>https://dev.to/moibra/how-i-built-a-multi-language-code-playground-with-nextjs-5779</guid>
      <description>&lt;p&gt;We've all seen them: sites like &lt;strong&gt;CodePen or LeetCode&lt;/strong&gt; where you can write code and see the output instantly. As a developer, I wondered: &lt;strong&gt;"How hard is it to build one from scratch?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It turns out, integrating an editor is easy, but making it &lt;strong&gt;actually run code&lt;/strong&gt; (especially languages like Java or C++) is where the real fun begins. &lt;/p&gt;

&lt;p&gt;Today, I’m sharing how I built &lt;strong&gt;Next.js Monaco Editor&lt;/strong&gt;, a platform that doesn't just edit code—it breathes life into it.&lt;/p&gt;




&lt;h2&gt;
  
  
  🛠 The Stack
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Framework&lt;/strong&gt;: Next.js (App Router)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Editor&lt;/strong&gt;: &lt;code&gt;@monaco-editor/react&lt;/code&gt; (The engine behind VS Code)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Styling&lt;/strong&gt;: Tailwind CSS&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Code Execution&lt;/strong&gt;: Local (for JS) + &lt;a href="https://github.com/engineer-man/piston" rel="noopener noreferrer"&gt;Piston API&lt;/a&gt; (for Java, C#, C++)&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🛑 The Problem: "Where does the code run?"
&lt;/h2&gt;

&lt;p&gt;When I started, I faced a dilemma:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Running locally (eval)&lt;/strong&gt;: Great for JavaScript, but what about Java or C++? You can't run those in a standard browser environment.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Building a backend&lt;/strong&gt;: Setting up Docker containers to safely execute untrusted code is a nightmare for a frontend-focused project.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  ✅ The Solution: A Hybrid Approach
&lt;/h2&gt;

&lt;p&gt;I decided to split the execution logic to get the best of both worlds:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. The Local Speed (JavaScript &amp;amp; HTML)
&lt;/h3&gt;

&lt;p&gt;For JavaScript, I used a clean &lt;code&gt;new Function()&lt;/code&gt; approach to capture console logs without re-rendering the whole app. For HTML, I implemented a &lt;strong&gt;Live Preview&lt;/strong&gt; using an &lt;code&gt;iframe&lt;/code&gt; with strict &lt;code&gt;sandbox&lt;/code&gt; attributes to keep the main site secure.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. The Remote Power (Java, C#, C++)
&lt;/h3&gt;

&lt;p&gt;To support compiled languages, I integrated the &lt;strong&gt;Piston API&lt;/strong&gt;. It’s a high-performance code execution engine that allowed me to send code snippets and receive execution results instantly, without managing a single server.&lt;/p&gt;




&lt;h2&gt;
  
  
  🏗 Clean Code vs. Spagetti
&lt;/h2&gt;

&lt;p&gt;As the features grew, the &lt;code&gt;page.tsx&lt;/code&gt; became a mess. One of my favorite parts of this project was the &lt;strong&gt;Refactoring Phase&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;I decoupled the project into logical modules:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;lib/api.ts&lt;/code&gt;: Pure logic for Piston communication.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;lib/funcs.ts&lt;/code&gt;: Dedicated logic for JS execution.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;lib/constants.ts&lt;/code&gt;: A single source of truth for language versions and starter templates.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This made the codebase so clean that adding a new language like Python or Go now takes literally &lt;strong&gt;30 seconds&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔒 Security First
&lt;/h2&gt;

&lt;p&gt;One big question was: &lt;strong&gt;"Can users hack my site?"&lt;/strong&gt; &lt;br&gt;
Since it's a frontend-only app, the risk is minimal, but I still implemented:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Iframe Sandboxing&lt;/strong&gt;: &lt;code&gt;sandbox="allow-scripts"&lt;/code&gt; prevents executed HTML from stealing cookies or accessing local storage.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Client-Side Execution&lt;/strong&gt;: Everything runs either in the user's browser or an isolated remote container.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🌟 Takeaways
&lt;/h2&gt;

&lt;p&gt;Building this project taught me that you don't always need a complex backend to create powerful tools. By leveraging great APIs and robust libraries like Monaco, you can build pro-grade developer tools right in the browser.&lt;/p&gt;

&lt;h3&gt;
  
  
  🔗 Check out the Project!
&lt;/h3&gt;

&lt;p&gt;I've open-sourced the entire codebase. If you find this helpful or want to use it as a template for your next project, &lt;strong&gt;please give it a star on GitHub!&lt;/strong&gt; ⭐&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://github.com/Mo-Ibra/next-monaco-editor.git" rel="noopener noreferrer"&gt;GitHub Repository: next-monaco-editor&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;What should I add next? Python support? A dark mode toggle? Let me know in the comments!&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>beginners</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Best game engine to start with in 2026?</title>
      <dc:creator>Mohamed Ibrahim</dc:creator>
      <pubDate>Sun, 25 Jan 2026 21:10:57 +0000</pubDate>
      <link>https://dev.to/moibra/best-game-engine-to-start-with-in-2026-3hne</link>
      <guid>https://dev.to/moibra/best-game-engine-to-start-with-in-2026-3hne</guid>
      <description>&lt;p&gt;I’m getting into game development (mainly mobile &amp;amp; indie games) and I’m trying to choose a game engine.&lt;/p&gt;

&lt;p&gt;Between engines like Godot, Unity, Unreal, LibGDX, etc:&lt;/p&gt;

&lt;p&gt;Which one would you recommend today?&lt;/p&gt;

&lt;p&gt;And why?&lt;/p&gt;

&lt;p&gt;I’m mostly interested in 2D / 2.5D, good performance, and a smooth learning curve.&lt;/p&gt;

&lt;p&gt;Thanks! 🙏&lt;/p&gt;

</description>
      <category>discuss</category>
    </item>
    <item>
      <title>💭 What's the Best Tech Stack for a Markdown-Based Programming Blog?</title>
      <dc:creator>Mohamed Ibrahim</dc:creator>
      <pubDate>Sat, 02 Aug 2025 11:40:21 +0000</pubDate>
      <link>https://dev.to/moibra/whats-the-best-tech-stack-for-a-markdown-based-programming-blog-2no4</link>
      <guid>https://dev.to/moibra/whats-the-best-tech-stack-for-a-markdown-based-programming-blog-2no4</guid>
      <description>&lt;p&gt;Hi everyone 👋&lt;/p&gt;

&lt;p&gt;I'm planning to build my own programming blog, and I’d love to get your input!&lt;/p&gt;

&lt;p&gt;Here’s what I’m aiming for:&lt;/p&gt;

&lt;p&gt;✅ The content will be written fully in Markdown&lt;br&gt;
✅ I don’t want to use any database&lt;br&gt;
✅ I want full control over customization — so I’m not looking to use WordPress, Ghost, or similar platforms&lt;br&gt;
✅ I prefer building things from scratch or at least with lightweight frameworks/libraries&lt;/p&gt;

&lt;p&gt;Basically, I want a developer-focused blog that I can style and structure completely my way.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;So my question is&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Which tech stack would you recommend for this kind of setup?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&amp;amp; How to best organize and parse Markdown content?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Right now I’m thinking of using Next.js with some Markdown libraries like gray-matter and remark to parse the posts. It seems like a solid setup using getStaticProps for static generation.&lt;/p&gt;

&lt;p&gt;But I’m wondering...&lt;/p&gt;

&lt;p&gt;👉 Is there a better or more lightweight option for this use case?&lt;br&gt;
Maybe something like Astro, Eleventy, or even something more minimal?&lt;/p&gt;

&lt;p&gt;Thanks in advance for any thoughts or experiences you can share!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>ai</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Will AI replace programmers? 🤔</title>
      <dc:creator>Mohamed Ibrahim</dc:creator>
      <pubDate>Mon, 07 Jul 2025 19:00:05 +0000</pubDate>
      <link>https://dev.to/moibra/will-ai-replace-programmers-2mak</link>
      <guid>https://dev.to/moibra/will-ai-replace-programmers-2mak</guid>
      <description>&lt;p&gt;Recently, we’ve all seen how powerful AI tools like ChatGPT and GitHub Copilot have become.&lt;/p&gt;

&lt;p&gt;They can write code, suggest solutions, and even fix bugs.&lt;/p&gt;

&lt;p&gt;Some people believe AI will eventually replace developers, while others see it as just a smart assistant that helps us work faster — not a full replacement.&lt;/p&gt;

&lt;p&gt;Honestly, I think AI is a powerful tool that can support us, but I don't believe it can fully replace human logic, creativity, and decision-making... at least not any time soon.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔥 What do you think?
&lt;/h2&gt;

&lt;p&gt;Do you believe programmers will be replaced by AI in the future?&lt;br&gt;
Or will the best developers be the ones who learn to use AI effectively?&lt;/p&gt;

&lt;p&gt;Let me know your thoughts in the comments 👇&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
    </item>
    <item>
      <title>💬 How to Build a Real-Time Chat App from Scratch with Node.js + Socket.IO</title>
      <dc:creator>Mohamed Ibrahim</dc:creator>
      <pubDate>Wed, 11 Jun 2025 19:46:44 +0000</pubDate>
      <link>https://dev.to/moibra/how-to-build-a-real-time-chat-app-from-scratch-with-nodejs-socketio-pl7</link>
      <guid>https://dev.to/moibra/how-to-build-a-real-time-chat-app-from-scratch-with-nodejs-socketio-pl7</guid>
      <description>&lt;p&gt;Have you ever wanted to build your own real-time chat app from scratch? In this post, I’ll show you how I built a simple and clean chat application using &lt;strong&gt;Node.js&lt;/strong&gt;, &lt;strong&gt;Socket.IO&lt;/strong&gt;, and a frontend built with &lt;strong&gt;HTML/CSS/JavaScript&lt;/strong&gt; — no database required (at least for now 😉).&lt;/p&gt;




&lt;h3&gt;
  
  
  🔧 Technologies Used
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Node.js&lt;/strong&gt; + &lt;strong&gt;Express&lt;/strong&gt; — backend server&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Socket.IO&lt;/strong&gt; — real-time communication (WebSockets)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;HTML + CSS (Dark theme)&lt;/strong&gt; — GitHub-like dark mode&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vanilla JavaScript&lt;/strong&gt; — frontend logic&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  🖼️ App Preview
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;Users join a room by entering their name, and immediately join the live chat. Messages appear on the &lt;strong&gt;right&lt;/strong&gt; for your own messages, and on the &lt;strong&gt;left&lt;/strong&gt; for others. You’ll also see join/leave system notifications.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  📦 Project Structure
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/public
  ├── index.html     # Join page (username input)
  ├── chat.html      # Main chat interface
  ├── styles.css     # Custom dark styling
  └── script.js      # Handles socket and UI logic

server.js            # Node.js server + Socket.IO logic
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  🚀 How to Run Locally
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Clone the repository:&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/Mo-Ibra/simple-chat-app
&lt;span class="nb"&gt;cd &lt;/span&gt;your-repo-name
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Install dependencies:&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Start the server:&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;node server.js
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Open in browser:&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;http://localhost:3000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  💡 Features
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;✅ Real-time messaging between users&lt;/li&gt;
&lt;li&gt;✅ Notifications when users join/leave&lt;/li&gt;
&lt;li&gt;✅ Messages styled to indicate sender&lt;/li&gt;
&lt;li&gt;✅ Logout button that redirects to the join screen&lt;/li&gt;
&lt;li&gt;✅ No backend database needed for now (session-based)&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  🔒 No Database? No Problem
&lt;/h3&gt;

&lt;p&gt;At this stage, all messages are held temporarily in memory and disappear on refresh. In the future, you can easily plug in &lt;strong&gt;MongoDB&lt;/strong&gt;, &lt;strong&gt;PostgreSQL&lt;/strong&gt;, or any database to persist data.&lt;/p&gt;




&lt;h3&gt;
  
  
  📁 Want the Code?
&lt;/h3&gt;

&lt;p&gt;Here’s the GitHub repo:&lt;br&gt;&lt;br&gt;
🔗 &lt;a href="https://github.com/Mo-Ibra/simple-chat-app" rel="noopener noreferrer"&gt;&lt;strong&gt;Mo-Ibra/simple-chat-app&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  💬 Final Thoughts
&lt;/h3&gt;

&lt;p&gt;This was a great exercise to understand WebSocket communication and Socket.IO in a very hands-on way. It’s perfect for beginners who want to get a feel for real-time apps.&lt;/p&gt;

&lt;p&gt;Feel free to fork the project, add new features like emojis, typing indicators, private messaging, or even a database backend!&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Thanks for reading! ❤️&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
If you found this useful, give it a ❤️ or leave a comment below.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>javascript</category>
      <category>beginners</category>
    </item>
    <item>
      <title>🚀 I Built a Clean &amp; Modern Next.js E-commerce Template — And You Can Use It or Contribute!</title>
      <dc:creator>Mohamed Ibrahim</dc:creator>
      <pubDate>Sat, 07 Jun 2025 18:22:34 +0000</pubDate>
      <link>https://dev.to/moibra/i-built-a-clean-modern-nextjs-e-commerce-template-and-you-can-use-it-or-contribute-2d0i</link>
      <guid>https://dev.to/moibra/i-built-a-clean-modern-nextjs-e-commerce-template-and-you-can-use-it-or-contribute-2d0i</guid>
      <description>&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;Building a clean, scalable, and modern e-commerce frontend with &lt;strong&gt;Next.js App Router&lt;/strong&gt; is not always straightforward.&lt;/p&gt;

&lt;p&gt;You often find:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Messy component structures&lt;/li&gt;
&lt;li&gt;Poor responsiveness&lt;/li&gt;
&lt;li&gt;Overcomplicated state management&lt;/li&gt;
&lt;li&gt;Lack of form validation&lt;/li&gt;
&lt;li&gt;And worst of all: bad DX (Developer Experience)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So I decided to fix that by creating a &lt;strong&gt;clean, modern e-commerce template&lt;/strong&gt; using &lt;strong&gt;Next.js 15&lt;/strong&gt;, &lt;strong&gt;Tailwind CSS&lt;/strong&gt;, and &lt;strong&gt;shadcn/ui&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  💡 The Idea
&lt;/h2&gt;

&lt;p&gt;I wanted something that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Is easy to extend (e.g. for your own store or client work)&lt;/li&gt;
&lt;li&gt;Has a clean codebase that respects file structure&lt;/li&gt;
&lt;li&gt;Solves common UI problems (cart, filtering, responsive design)&lt;/li&gt;
&lt;li&gt;Uses up-to-date Next.js features (App Router, Server Components, etc.)&lt;/li&gt;
&lt;li&gt;Just works out of the box&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔧 What I Built
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;✅ A production-ready, minimal, modern E-commerce frontend with all the essentials.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;🛒 &lt;strong&gt;Features include:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Clean homepage with CTA and categories&lt;/li&gt;
&lt;li&gt;Fully responsive layout&lt;/li&gt;
&lt;li&gt;Product catalog and detail pages&lt;/li&gt;
&lt;li&gt;LocalStorage-powered cart (via React Context)&lt;/li&gt;
&lt;li&gt;Advanced filtering (category, price)&lt;/li&gt;
&lt;li&gt;Full-text search&lt;/li&gt;
&lt;li&gt;Multi-step checkout (in progress)&lt;/li&gt;
&lt;li&gt;Component-based structure&lt;/li&gt;
&lt;li&gt;TypeScript and strict types&lt;/li&gt;
&lt;li&gt;Form validation using React Hook Form + Zod&lt;/li&gt;
&lt;li&gt;Deployed on Vercel&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  📸 Screenshots
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;Here's a sneak peek 👇&lt;/p&gt;
&lt;/blockquote&gt;

&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%2Fndfm9l95rpufqgvlipaq.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%2Fndfm9l95rpufqgvlipaq.png" alt="Cart Page" width="800" height="393"&gt;&lt;/a&gt;&lt;br&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%2Fma9ct3byfz371a4mbh0d.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%2Fma9ct3byfz371a4mbh0d.png" alt="Product Detail" width="800" height="392"&gt;&lt;/a&gt;&lt;br&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%2F61q9yheow9s48k35lg5q.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%2F61q9yheow9s48k35lg5q.png" alt="Search Page" width="800" height="393"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  👨‍💻 Technologies Used
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Next.js 15&lt;/strong&gt; with App Router&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tailwind CSS&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;shadcn/ui&lt;/strong&gt; for reusable UI&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Lucide icons&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;React Context&lt;/strong&gt; for cart state&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TypeScript&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;React Hook Form + Zod&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  💬 Why This Might Help You
&lt;/h2&gt;

&lt;p&gt;If you’re:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A frontend developer tired of setting up from scratch every time&lt;/li&gt;
&lt;li&gt;A freelancer looking for a starter template&lt;/li&gt;
&lt;li&gt;A team looking to build MVPs faster&lt;/li&gt;
&lt;li&gt;Or just curious how to structure a modern Next.js 15 project&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This repo might save you hours.&lt;/p&gt;




&lt;h2&gt;
  
  
  🌟 Star it, Fork it, Use it, Improve it!
&lt;/h2&gt;

&lt;p&gt;Here’s the repo:&lt;br&gt;
👉 &lt;a href="https://github.com/Mo-Ibra/nextjs-clean-ecommerce" rel="noopener noreferrer"&gt;https://github.com/Mo-Ibra/nextjs-clean-ecommerce&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you find it helpful — &lt;strong&gt;please give it a star ⭐&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
If you want to contribute — &lt;strong&gt;PRs are welcome!&lt;/strong&gt; 🙌&lt;br&gt;&lt;br&gt;
If you have feedback — drop it in the &lt;a href="https://github.com/Mo-Ibra/nextjs-clean-ecommerce/issues" rel="noopener noreferrer"&gt;Issues&lt;/a&gt; section.&lt;/p&gt;




&lt;h2&gt;
  
  
  ✅ What’s Next?
&lt;/h2&gt;

&lt;p&gt;Planned features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Checkout flow (in progress)&lt;/li&gt;
&lt;li&gt;Wishlist support&lt;/li&gt;
&lt;li&gt;Auth system (maybe NextAuth)&lt;/li&gt;
&lt;li&gt;Stripe integration&lt;/li&gt;
&lt;li&gt;Admin dashboard&lt;/li&gt;
&lt;li&gt;Product reviews&lt;/li&gt;
&lt;li&gt;Dark mode&lt;/li&gt;
&lt;li&gt;Multi-language support&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🙌 Let’s Build It Together
&lt;/h2&gt;

&lt;p&gt;I built the foundation — now I’d love your help in making it better.&lt;br&gt;&lt;br&gt;
If you're into clean code, DX, and e-commerce — feel free to jump in.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Built with ❤️ by &lt;a href="https://github.com/Mo-Ibra" rel="noopener noreferrer"&gt;@Mo-Ibra&lt;/a&gt;&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Let’s connect on &lt;a href="https://github.com/Mo-Ibra" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; or in the comments!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>javascript</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Top AI-Powered Chrome Extensions for Web Developers 🚀</title>
      <dc:creator>Mohamed Ibrahim</dc:creator>
      <pubDate>Sun, 20 Apr 2025 07:00:00 +0000</pubDate>
      <link>https://dev.to/moibra/top-ai-powered-chrome-extensions-for-web-developers-343e</link>
      <guid>https://dev.to/moibra/top-ai-powered-chrome-extensions-for-web-developers-343e</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Boost your coding speed, productivity, and creativity with these smart browser tools.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;AI is no longer just a buzzword — it’s here, and it’s helping developers code faster, debug smarter, and even write documentation. These &lt;strong&gt;AI-powered Chrome extensions&lt;/strong&gt; can supercharge your web development workflow with minimal effort.&lt;/p&gt;




&lt;h3&gt;
  
  
  🚀 1. &lt;strong&gt;GitHub Copilot&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;What it does:&lt;/strong&gt; Suggests code and entire functions as you type.&lt;br&gt;&lt;br&gt;
&lt;strong&gt;AI Power:&lt;/strong&gt; OpenAI Codex&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Best For:&lt;/strong&gt; Auto-completing functions, writing boilerplate, learning new code patterns&lt;br&gt;&lt;br&gt;
🔗 &lt;a href="https://github.com/features/copilot" rel="noopener noreferrer"&gt;Link&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  🔍 2. &lt;strong&gt;WebChatGPT&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;What it does:&lt;/strong&gt; Adds real-time web results to your ChatGPT responses.&lt;br&gt;&lt;br&gt;
&lt;strong&gt;AI Power:&lt;/strong&gt; Enhances ChatGPT with live web access&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Best For:&lt;/strong&gt; Researching frameworks, libraries, and up-to-date docs&lt;br&gt;&lt;br&gt;
🔗 &lt;a href="https://chromewebstore.google.com/detail/webchatgpt-chatgpt-with-i/lpfemeioodjbpieminkklglpmhlngfcn" rel="noopener noreferrer"&gt;Link&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  ✍️ 3. &lt;strong&gt;Monica&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;What it does:&lt;/strong&gt; Offers AI chat support and can summarize, explain, or translate selected text.&lt;br&gt;&lt;br&gt;
&lt;strong&gt;AI Power:&lt;/strong&gt; ChatGPT integration&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Best For:&lt;/strong&gt; Understanding documentation, rewriting content, email drafting&lt;br&gt;&lt;br&gt;
🔗 &lt;a href="https://monica.im/" rel="noopener noreferrer"&gt;Link&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  💬 4. &lt;strong&gt;AIPRM for ChatGPT&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;What it does:&lt;/strong&gt; Adds curated prompt templates for developers, SEOs, and marketers.&lt;br&gt;&lt;br&gt;
&lt;strong&gt;AI Power:&lt;/strong&gt; Custom ChatGPT prompts&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Best For:&lt;/strong&gt; Speeding up repetitive requests, inspiration for code fixes&lt;br&gt;&lt;br&gt;
🔗 &lt;a href="https://www.aiprm.com/" rel="noopener noreferrer"&gt;Link&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  💡 5. &lt;strong&gt;Blackbox&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;What it does:&lt;/strong&gt; Lets you copy code from videos or any website using AI.&lt;br&gt;&lt;br&gt;
&lt;strong&gt;AI Power:&lt;/strong&gt; OCR + ML-based code detection&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Best For:&lt;/strong&gt; Extracting code from tutorials and YouTube&lt;br&gt;&lt;br&gt;
🔗 &lt;a href="https://www.useblackbox.io/" rel="noopener noreferrer"&gt;Link&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  📋 6. &lt;strong&gt;CodeWhisperer (AWS)&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;What it does:&lt;/strong&gt; Auto-suggests code based on comments and your current line.&lt;br&gt;&lt;br&gt;
&lt;strong&gt;AI Power:&lt;/strong&gt; AWS-trained LLM&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Best For:&lt;/strong&gt; Backend developers using AWS tools&lt;br&gt;&lt;br&gt;
🔗 &lt;a href="https://aws.amazon.com/codewhisperer/" rel="noopener noreferrer"&gt;Link&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  🧠 7. &lt;strong&gt;Wiseone&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;What it does:&lt;/strong&gt; Explains difficult terms, suggests deeper reading, and simplifies complex pages.&lt;br&gt;&lt;br&gt;
&lt;strong&gt;AI Power:&lt;/strong&gt; GPT-based&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Best For:&lt;/strong&gt; Learning new concepts while browsing&lt;br&gt;&lt;br&gt;
🔗 &lt;a href="https://www.wiseone.io/" rel="noopener noreferrer"&gt;Link&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  🖥️ 8. &lt;strong&gt;Octocom&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;What it does:&lt;/strong&gt; Integrates ChatGPT directly into GitHub.&lt;br&gt;&lt;br&gt;
&lt;strong&gt;AI Power:&lt;/strong&gt; GPT&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Best For:&lt;/strong&gt; Understanding pull requests, writing better commit messages&lt;br&gt;&lt;br&gt;
🔗 &lt;a href="https://chrome.google.com/webstore/detail/octocom/" rel="noopener noreferrer"&gt;Link&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  🧩 9. &lt;strong&gt;ChatGPT for Google&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;What it does:&lt;/strong&gt; Adds ChatGPT responses alongside Google search results.&lt;br&gt;&lt;br&gt;
&lt;strong&gt;AI Power:&lt;/strong&gt; GPT&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Best For:&lt;/strong&gt; Comparing code search results with AI suggestions&lt;br&gt;&lt;br&gt;
🔗 &lt;a href="https://chatgpt-for-google.com/" rel="noopener noreferrer"&gt;Link&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  📚 10. &lt;strong&gt;Merlin&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;What it does:&lt;/strong&gt; Lets you use ChatGPT anywhere on the web (Google, Gmail, docs).&lt;br&gt;&lt;br&gt;
&lt;strong&gt;AI Power:&lt;/strong&gt; ChatGPT&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Best For:&lt;/strong&gt; Web-wide AI assistant for dev tasks and explanations&lt;br&gt;&lt;br&gt;
🔗 &lt;a href="https://www.getmerlin.in/" rel="noopener noreferrer"&gt;Link&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  🔚 Final Thoughts
&lt;/h2&gt;

&lt;p&gt;With AI tools now available at your fingertips in the browser, there's no excuse to work harder instead of smarter. Try a few of these extensions and watch your productivity skyrocket.&lt;/p&gt;




&lt;h2&gt;
  
  
  🚀 Let’s Connect and Build Together!
&lt;/h2&gt;

&lt;p&gt;Thanks for making it to the end! I’m passionate about web development, open source, and building tools that make life easier for developers.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;💻 Check out my projects on &lt;a href="https://github.com/Mo-Ibra" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;🐦 Follow me on &lt;a href="https://x.com/MoIbrraa" rel="noopener noreferrer"&gt;Twitter/X&lt;/a&gt; for tips, threads, and dev insights&lt;/li&gt;
&lt;li&gt;🌐 Visit my &lt;a href="https://moibra.vercel.app/" rel="noopener noreferrer"&gt;Portfolio&lt;/a&gt; to learn more about what I do&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Whether you're looking to &lt;strong&gt;collaborate&lt;/strong&gt;, &lt;strong&gt;hire&lt;/strong&gt;, or just &lt;strong&gt;chat about code&lt;/strong&gt;, my DMs are always open. 🙌&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>javascript</category>
      <category>beginners</category>
    </item>
    <item>
      <title>🚀 50 Must-Try Websites for Web Developers</title>
      <dc:creator>Mohamed Ibrahim</dc:creator>
      <pubDate>Mon, 24 Mar 2025 04:26:04 +0000</pubDate>
      <link>https://dev.to/moibra/50-must-try-websites-for-web-developers-5cmo</link>
      <guid>https://dev.to/moibra/50-must-try-websites-for-web-developers-5cmo</guid>
      <description>&lt;p&gt;Web development is constantly evolving, and staying updated with the best tools and resources is essential. Whether you’re looking for learning platforms, design inspiration, or debugging tools, this list of 50 must-try websites will help you enhance your development workflow.  &lt;/p&gt;




&lt;h2&gt;
  
  
  🎯 &lt;strong&gt;Learning &amp;amp; Documentation&lt;/strong&gt;
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://developer.mozilla.org/" rel="noopener noreferrer"&gt;MDN Web Docs&lt;/a&gt;&lt;/strong&gt; – The ultimate resource for HTML, CSS, and JavaScript documentation.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://www.w3schools.com/" rel="noopener noreferrer"&gt;W3Schools&lt;/a&gt;&lt;/strong&gt; – Beginner-friendly tutorials with interactive coding exercises.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://www.freecodecamp.org/" rel="noopener noreferrer"&gt;FreeCodeCamp&lt;/a&gt;&lt;/strong&gt; – A free platform offering full web development courses.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://devdocs.io/" rel="noopener noreferrer"&gt;DevDocs&lt;/a&gt;&lt;/strong&gt; – Fast and offline-accessible API documentation for various technologies.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://www.smashingmagazine.com/" rel="noopener noreferrer"&gt;Smashing Magazine&lt;/a&gt;&lt;/strong&gt; – Articles and tutorials on web design and development.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://css-tricks.com/" rel="noopener noreferrer"&gt;CSS-Tricks&lt;/a&gt;&lt;/strong&gt; – The best resource for mastering CSS techniques.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://web.dev/" rel="noopener noreferrer"&gt;Web.dev&lt;/a&gt;&lt;/strong&gt; – Google’s resource for best web performance, accessibility, and PWA techniques.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://www.frontendmentor.io/" rel="noopener noreferrer"&gt;Frontend Mentor&lt;/a&gt;&lt;/strong&gt; – Real-world coding challenges to improve front-end skills.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://www.theodinproject.com/" rel="noopener noreferrer"&gt;The Odin Project&lt;/a&gt;&lt;/strong&gt; – A full-stack curriculum to become a self-taught developer.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://javascript.info/" rel="noopener noreferrer"&gt;JavaScript.info&lt;/a&gt;&lt;/strong&gt; – A deep-dive guide to JavaScript fundamentals and advanced concepts.
&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  🎨 &lt;strong&gt;Design &amp;amp; UI/UX Inspiration&lt;/strong&gt;
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://www.awwwards.com/" rel="noopener noreferrer"&gt;Awwwards&lt;/a&gt;&lt;/strong&gt; – Showcases beautifully designed websites for inspiration.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://dribbble.com/" rel="noopener noreferrer"&gt;Dribbble&lt;/a&gt;&lt;/strong&gt; – A platform where designers share UI/UX concepts.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://www.behance.net/" rel="noopener noreferrer"&gt;Behance&lt;/a&gt;&lt;/strong&gt; – A community showcasing web and graphic design work.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://www.lapa.ninja/" rel="noopener noreferrer"&gt;Lapa Ninja&lt;/a&gt;&lt;/strong&gt; – A collection of stunning landing page designs.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://mobbin.design/" rel="noopener noreferrer"&gt;Mobbin&lt;/a&gt;&lt;/strong&gt; – Mobile app design inspiration from top apps.
&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  🔥 &lt;strong&gt;Front-End Development Tools&lt;/strong&gt;
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://codepen.io/" rel="noopener noreferrer"&gt;CodePen&lt;/a&gt;&lt;/strong&gt; – An online sandbox for front-end experimentation.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://jsfiddle.net/" rel="noopener noreferrer"&gt;JSFiddle&lt;/a&gt;&lt;/strong&gt; – A playground for testing JavaScript, HTML, and CSS snippets.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://ui.shadcn.com/" rel="noopener noreferrer"&gt;Shadcn UI&lt;/a&gt;&lt;/strong&gt; – A component library built for modern UI development.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://ui.aceternity.com/" rel="noopener noreferrer"&gt;Aceternity UI&lt;/a&gt;&lt;/strong&gt; – Animated UI components for web projects.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://uiverse.io/" rel="noopener noreferrer"&gt;Uiverse&lt;/a&gt;&lt;/strong&gt; – Open-source UI elements for quick prototyping.
&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  🚀 &lt;strong&gt;Performance &amp;amp; Optimization&lt;/strong&gt;
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://pagespeed.web.dev/" rel="noopener noreferrer"&gt;PageSpeed Insights&lt;/a&gt;&lt;/strong&gt; – Google’s tool for analyzing and improving web performance.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://developer.chrome.com/docs/lighthouse/overview/" rel="noopener noreferrer"&gt;Lighthouse&lt;/a&gt;&lt;/strong&gt; – Audits your site’s speed, accessibility, and SEO.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://gtmetrix.com/" rel="noopener noreferrer"&gt;GTmetrix&lt;/a&gt;&lt;/strong&gt; – Provides detailed web performance analysis.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://tinypng.com/" rel="noopener noreferrer"&gt;TinyPNG&lt;/a&gt;&lt;/strong&gt; – Compresses PNG and JPG images without losing quality.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://squoosh.app/" rel="noopener noreferrer"&gt;Squoosh&lt;/a&gt;&lt;/strong&gt; – A powerful image optimization tool from Google.
&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  🛠 &lt;strong&gt;Back-End &amp;amp; API Development&lt;/strong&gt;
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://www.postman.com/" rel="noopener noreferrer"&gt;Postman&lt;/a&gt;&lt;/strong&gt; – The best tool for testing and building APIs.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://rapidapi.com/" rel="noopener noreferrer"&gt;RapidAPI&lt;/a&gt;&lt;/strong&gt; – A hub for discovering and connecting to APIs.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://www.mockapi.io/" rel="noopener noreferrer"&gt;MockAPI&lt;/a&gt;&lt;/strong&gt; – Easily generate fake APIs for development and testing.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://jsonplaceholder.typicode.com/" rel="noopener noreferrer"&gt;JSONPlaceholder&lt;/a&gt;&lt;/strong&gt; – A free online REST API for testing.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://reqres.in/" rel="noopener noreferrer"&gt;ReqRes&lt;/a&gt;&lt;/strong&gt; – Another free API for simulating REST responses.
&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  🔍 &lt;strong&gt;Debugging &amp;amp; Testing Tools&lt;/strong&gt;
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://regex101.com/" rel="noopener noreferrer"&gt;Regex101&lt;/a&gt;&lt;/strong&gt; – A regex tester and debugger.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://caniuse.com/" rel="noopener noreferrer"&gt;Can I Use&lt;/a&gt;&lt;/strong&gt; – Check browser support for HTML, CSS, and JavaScript features.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://developer.chrome.com/docs/devtools/" rel="noopener noreferrer"&gt;Google DevTools&lt;/a&gt;&lt;/strong&gt; – A built-in tool for debugging web applications.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://responsively.app/" rel="noopener noreferrer"&gt;Responsively App&lt;/a&gt;&lt;/strong&gt; – A browser for testing responsive web designs.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://wave.webaim.org/" rel="noopener noreferrer"&gt;Wave&lt;/a&gt;&lt;/strong&gt; – An accessibility testing tool for websites.
&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  📦 &lt;strong&gt;Icons, Fonts, and UI Components&lt;/strong&gt;
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://fonts.google.com/" rel="noopener noreferrer"&gt;Google Fonts&lt;/a&gt;&lt;/strong&gt; – A vast collection of free fonts for web development.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://fontawesome.com/" rel="noopener noreferrer"&gt;Font Awesome&lt;/a&gt;&lt;/strong&gt; – A massive library of icons for web projects.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://heroicons.com/" rel="noopener noreferrer"&gt;Heroicons&lt;/a&gt;&lt;/strong&gt; – Beautiful SVG icons for your UI components.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://lordicon.com/" rel="noopener noreferrer"&gt;Lordicon&lt;/a&gt;&lt;/strong&gt; – Animated icons to enhance UX.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://www.flaticon.com/" rel="noopener noreferrer"&gt;Flaticon&lt;/a&gt;&lt;/strong&gt; – Thousands of free and premium icons.
&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  🧑‍💻 &lt;strong&gt;Code Collaboration &amp;amp; Productivity&lt;/strong&gt;
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;/strong&gt; – The most popular platform for version control and collaboration.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://about.gitlab.com/" rel="noopener noreferrer"&gt;GitLab&lt;/a&gt;&lt;/strong&gt; – A DevOps platform with integrated CI/CD.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://bitbucket.org/" rel="noopener noreferrer"&gt;Bitbucket&lt;/a&gt;&lt;/strong&gt; – Another Git-based repository hosting service.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://codesandbox.io/" rel="noopener noreferrer"&gt;CodeSandbox&lt;/a&gt;&lt;/strong&gt; – Online collaborative IDE for front-end projects.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://replit.com/" rel="noopener noreferrer"&gt;Replit&lt;/a&gt;&lt;/strong&gt; – A cloud-based IDE supporting multiple programming languages.
&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  📱 &lt;strong&gt;Prototyping &amp;amp; Wireframing&lt;/strong&gt;
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://www.figma.com/" rel="noopener noreferrer"&gt;Figma&lt;/a&gt;&lt;/strong&gt; – A powerful tool for designing and prototyping UI.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://www.adobe.com/products/xd.html/" rel="noopener noreferrer"&gt;Adobe XD&lt;/a&gt;&lt;/strong&gt; – A great alternative for wireframing and prototyping.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://balsamiq.com/" rel="noopener noreferrer"&gt;Balsamiq&lt;/a&gt;&lt;/strong&gt; – A simple wireframing tool for mockups.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://penpot.app/" rel="noopener noreferrer"&gt;Penpot&lt;/a&gt;&lt;/strong&gt; – A free and open-source design and prototyping tool.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://whimsical.com/" rel="noopener noreferrer"&gt;Whimsical&lt;/a&gt;&lt;/strong&gt; – A visual workspace for wireframing and brainstorming.
&lt;/li&gt;
&lt;/ol&gt;




&lt;h3&gt;
  
  
  🚀 &lt;strong&gt;Conclusion&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;These 50 websites cover everything from learning resources and front-end tools to debugging utilities and collaboration platforms. Whether you're just starting or you're an experienced developer, these tools will help you work smarter and more efficiently.  &lt;/p&gt;




&lt;h3&gt;
  
  
  🔥 &lt;strong&gt;Follow Me&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Thank you for reading my blog. 🚀 You can follow me on &lt;a href="https://github.com/Mo-Ibra" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; and connect on &lt;a href="https://x.com/MoIbrraa" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>javascript</category>
      <category>beginners</category>
    </item>
    <item>
      <title>30 Git Commands Every Developer Should Know 🔥</title>
      <dc:creator>Mohamed Ibrahim</dc:creator>
      <pubDate>Thu, 20 Mar 2025 07:00:00 +0000</pubDate>
      <link>https://dev.to/moibra/30-git-commands-every-developer-should-know-2k6g</link>
      <guid>https://dev.to/moibra/30-git-commands-every-developer-should-know-2k6g</guid>
      <description>&lt;p&gt;Git is an essential tool for developers, but with so many commands available, it's easy to get overwhelmed. This guide covers 30 Git commands that you'll actually use in your daily workflow, from setting up a repository to managing branches and resolving conflicts.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔹 &lt;strong&gt;Getting Started with Git&lt;/strong&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1️⃣ Initialize a Repository
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Creates a new Git repository in the current directory.&lt;/p&gt;

&lt;h3&gt;
  
  
  2️⃣ Clone a Repository
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone &amp;lt;repository-url&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Downloads a copy of a remote repository to your local machine.&lt;/p&gt;

&lt;h3&gt;
  
  
  3️⃣ Check Repository Status
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git status
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Shows changes that have been staged, unstaged, or untracked.&lt;/p&gt;

&lt;h3&gt;
  
  
  4️⃣ Add Files to Staging Area
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git add &amp;lt;file&amp;gt;
git add &lt;span class="nb"&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Stages a specific file or all files for the next commit.&lt;/p&gt;

&lt;h3&gt;
  
  
  5️⃣ Commit Changes
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git commit &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"Commit message"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Saves changes in the local repository with a descriptive message.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔹 &lt;strong&gt;Branching &amp;amp; Merging&lt;/strong&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  6️⃣ Create a New Branch
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git branch &amp;lt;branch-name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Creates a new branch without switching to it.&lt;/p&gt;

&lt;h3&gt;
  
  
  7️⃣ Switch to a Branch
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git checkout &amp;lt;branch-name&amp;gt;
&lt;span class="c"&gt;# or (Git 2.23+)&lt;/span&gt;
git switch &amp;lt;branch-name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Moves to an existing branch.&lt;/p&gt;

&lt;h3&gt;
  
  
  8️⃣ Create &amp;amp; Switch to a New Branch
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git checkout &lt;span class="nt"&gt;-b&lt;/span&gt; &amp;lt;branch-name&amp;gt;
&lt;span class="c"&gt;# or (Git 2.23+)&lt;/span&gt;
git switch &lt;span class="nt"&gt;-c&lt;/span&gt; &amp;lt;branch-name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Creates and switches to a new branch in one step.&lt;/p&gt;

&lt;h3&gt;
  
  
  9️⃣ Merge a Branch
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git checkout main
git merge &amp;lt;branch-name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Merges changes from another branch into the current branch.&lt;/p&gt;

&lt;h3&gt;
  
  
  🔟 Delete a Branch
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git branch &lt;span class="nt"&gt;-d&lt;/span&gt; &amp;lt;branch-name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Deletes a branch that has been merged.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔹 &lt;strong&gt;Working with Remote Repositories&lt;/strong&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1️⃣1️⃣ Add a Remote Repository
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git remote add origin &amp;lt;repository-url&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Links your local repo to a remote repository.&lt;/p&gt;

&lt;h3&gt;
  
  
  1️⃣2️⃣ View Remote Repositories
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git remote &lt;span class="nt"&gt;-v&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Lists remote repositories associated with the project.&lt;/p&gt;

&lt;h3&gt;
  
  
  1️⃣3️⃣ Fetch Changes from Remote
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git fetch
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Downloads new changes without merging them.&lt;/p&gt;

&lt;h3&gt;
  
  
  1️⃣4️⃣ Pull Changes from Remote
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git pull
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Fetches changes and merges them into your local branch.&lt;/p&gt;

&lt;h3&gt;
  
  
  1️⃣5️⃣ Push Changes to Remote
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git push origin &amp;lt;branch-name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Uploads local commits to a remote repository.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔹 &lt;strong&gt;Undoing &amp;amp; Fixing Mistakes&lt;/strong&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1️⃣6️⃣ Undo the Last Commit (Keep Changes)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git reset &lt;span class="nt"&gt;--soft&lt;/span&gt; HEAD~1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Moves the last commit back to the staging area.&lt;/p&gt;

&lt;h3&gt;
  
  
  1️⃣7️⃣ Undo the Last Commit (Discard Changes)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git reset &lt;span class="nt"&gt;--hard&lt;/span&gt; HEAD~1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Completely removes the last commit and changes.&lt;/p&gt;

&lt;h3&gt;
  
  
  1️⃣8️⃣ Unstage a File
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git reset &amp;lt;file&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Removes a file from the staging area without deleting it.&lt;/p&gt;

&lt;h3&gt;
  
  
  1️⃣9️⃣ Revert a Commit
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git revert &amp;lt;commit-hash&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Creates a new commit that undoes a specific commit.&lt;/p&gt;

&lt;h3&gt;
  
  
  2️⃣0️⃣ Stash Changes (Save Without Committing)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git stash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Temporarily saves changes without committing them.&lt;/p&gt;

&lt;h3&gt;
  
  
  2️⃣1️⃣ Apply Stashed Changes
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git stash pop
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Restores the last stashed changes and removes them from the stash list.&lt;/p&gt;

&lt;h3&gt;
  
  
  2️⃣2️⃣ Drop Stashed Changes
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git stash drop
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Deletes the last stashed changes without applying them.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔹 &lt;strong&gt;Viewing History &amp;amp; Comparing Changes&lt;/strong&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  2️⃣3️⃣ View Commit History
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git log
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Shows a list of commits with details.&lt;/p&gt;

&lt;h3&gt;
  
  
  2️⃣4️⃣ View a File’s Change History
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git log &lt;span class="nt"&gt;--&lt;/span&gt; &amp;lt;file&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Displays all commits that modified a specific file.&lt;/p&gt;

&lt;h3&gt;
  
  
  2️⃣5️⃣ Show Differences Between Commits
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git diff
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Compares changes between the working directory and the last commit.&lt;/p&gt;

&lt;h3&gt;
  
  
  2️⃣6️⃣ Show Changes in a Specific File
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git diff &amp;lt;file&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Displays changes made to a specific file.&lt;/p&gt;

&lt;h3&gt;
  
  
  2️⃣7️⃣ Compare Two Branches
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git diff &amp;lt;branch-1&amp;gt;..&amp;lt;branch-2&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Shows the differences between two branches.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔹 &lt;strong&gt;Collaboration &amp;amp; Advanced Commands&lt;/strong&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  2️⃣8️⃣ Rebase a Branch
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git rebase &amp;lt;branch-name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Moves commits from one branch on top of another for a cleaner history.&lt;/p&gt;

&lt;h3&gt;
  
  
  2️⃣9️⃣ Cherry-Pick a Commit
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git cherry-pick &amp;lt;commit-hash&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Applies a specific commit to the current branch.&lt;/p&gt;

&lt;h3&gt;
  
  
  3️⃣0️⃣ Squash Commits Before Merging
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git rebase &lt;span class="nt"&gt;-i&lt;/span&gt; HEAD~&amp;lt;number&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Combines multiple commits into one before merging.&lt;/p&gt;




&lt;h2&gt;
  
  
  🎯 &lt;strong&gt;Final Thoughts&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;These 30 Git commands will help you manage your workflow, collaborate effectively, and fix mistakes with confidence. Whether you're working on personal projects or contributing to a team, mastering Git will save you time and frustration.&lt;/p&gt;




&lt;h2&gt;
  
  
  Follow Me
&lt;/h2&gt;

&lt;p&gt;Thank you for reading my blog. 🚀 You can follow me on &lt;a href="https://github.com/Mo-Ibra" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; and connect on &lt;a href="https://x.com/MoIbrraa" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>javascript</category>
      <category>beginners</category>
    </item>
    <item>
      <title>15 Side Projects That Will Make You a Better Developer 🚀</title>
      <dc:creator>Mohamed Ibrahim</dc:creator>
      <pubDate>Tue, 18 Mar 2025 19:01:53 +0000</pubDate>
      <link>https://dev.to/moibra/15-side-projects-that-will-make-you-a-better-developer-16k8</link>
      <guid>https://dev.to/moibra/15-side-projects-that-will-make-you-a-better-developer-16k8</guid>
      <description>&lt;p&gt;Side projects are one of the best ways to level up your skills, build a portfolio, and explore new technologies. Whether you're a frontend, backend, or full-stack developer, these project ideas will challenge you and help you grow. Each project includes a skill breakdown, why it’s valuable, and ways to expand on it.&lt;/p&gt;




&lt;h2&gt;
  
  
  🚀 Beginner-Friendly Projects
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1️⃣ To-Do List App
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Skills:&lt;/strong&gt; JavaScript, React, Local Storage&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Why?&lt;/strong&gt; Learn state management, CRUD operations, and UI interactions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;How to Build:&lt;/strong&gt; Create a simple to-do list where users can add, edit, and delete tasks. Use local storage to persist data.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Upgrade it:&lt;/strong&gt; Add authentication, real-time sync with Firebase, or a calendar feature.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2️⃣ Weather App
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Skills:&lt;/strong&gt; API calls, Async/Await, UI Design&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Why?&lt;/strong&gt; Get hands-on experience with API integration and error handling.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;How to Build:&lt;/strong&gt; Use OpenWeatherMap API to fetch weather data based on user input. Display temperature, humidity, and forecast.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Upgrade it:&lt;/strong&gt; Use Next.js for SSR, add a map for location-based results, or implement AI for personalized weather insights.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3️⃣ Markdown Editor
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Skills:&lt;/strong&gt; React, Hooks, Local Storage&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Why?&lt;/strong&gt; Work with text inputs, parsing, and real-time preview.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;How to Build:&lt;/strong&gt; Create a simple text editor that converts Markdown syntax into formatted output.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Upgrade it:&lt;/strong&gt; Add file exports (PDF/HTML), cloud storage, or AI-powered text formatting.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4️⃣ URL Shortener
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Skills:&lt;/strong&gt; Express.js, Database (MySQL, PostgreSQL, or MongoDB)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Why?&lt;/strong&gt; Learn backend, database operations, and API development.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;How to Build:&lt;/strong&gt; Create an Express.js backend that takes a long URL and returns a short one, storing mappings in a database.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Upgrade it:&lt;/strong&gt; Track analytics, add authentication, or generate QR codes for shortened URLs.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  5️⃣ Image Gallery with Search
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Skills:&lt;/strong&gt; React, Unsplash API, Tailwind CSS&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Why?&lt;/strong&gt; Work with API calls, filtering, and UI layouts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;How to Build:&lt;/strong&gt; Fetch images from Unsplash API and display them in a grid with a search bar.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Upgrade it:&lt;/strong&gt; Add infinite scrolling, user uploads, or categories.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔥 Intermediate-Level Projects
&lt;/h2&gt;

&lt;h3&gt;
  
  
  6️⃣ Notes App with Rich Text Editor
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Skills:&lt;/strong&gt; React, Draft.js/Quill.js, Local Storage&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Why?&lt;/strong&gt; Learn text formatting, state management, and component design.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;How to Build:&lt;/strong&gt; Create a note-taking app that supports rich text formatting.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Upgrade it:&lt;/strong&gt; Sync notes across devices, add voice-to-text, or AI summarization.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  7️⃣ Expense Tracker
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Skills:&lt;/strong&gt; React, Redux, Firebase&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Why?&lt;/strong&gt; Work with state management, database storage, and charts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;How to Build:&lt;/strong&gt; Users can log their expenses and view reports.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Upgrade it:&lt;/strong&gt; Add multi-user support, currency conversion, or AI-based budget tips.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  8️⃣ AI-Powered Chatbot
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Skills:&lt;/strong&gt; OpenAI API, React, Node.js&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Why?&lt;/strong&gt; Understand API calls, AI models, and chatbot logic.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;How to Build:&lt;/strong&gt; Implement an OpenAI-powered chatbot using React and Express.js.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Upgrade it:&lt;/strong&gt; Integrate with WhatsApp, Discord, or Slack.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  9️⃣ E-Commerce Product Page
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Skills:&lt;/strong&gt; React, Tailwind CSS, Payment Integration&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Why?&lt;/strong&gt; Learn UI design, state management, and API integration.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;How to Build:&lt;/strong&gt; Design a product display page with a shopping cart.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Upgrade it:&lt;/strong&gt; Add full checkout flow using Stripe or PayPal.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🔟 Real-Time Chat App
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Skills:&lt;/strong&gt; WebSockets, Firebase, React, Express.js&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Why?&lt;/strong&gt; Learn real-time communication and database updates.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;How to Build:&lt;/strong&gt; Create a chat app where users can send and receive messages instantly.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Upgrade it:&lt;/strong&gt; Add authentication, end-to-end encryption, or AI moderation.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  💎 Advanced-Level Projects
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1️⃣1️⃣ Job Board Website
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Skills:&lt;/strong&gt; Next.js, PostgreSQL, API Development&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Why?&lt;/strong&gt; Build a full-stack project with dynamic data fetching.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;How to Build:&lt;/strong&gt; Fetch job postings from a database or API and allow users to filter jobs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Upgrade it:&lt;/strong&gt; Scrape job listings from LinkedIn, Indeed, or Wuzzuf.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  1️⃣2️⃣ YouTube Video Downloader
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Skills:&lt;/strong&gt; Next.js, Puppeteer, Express.js&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Why?&lt;/strong&gt; Learn web scraping and video processing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;How to Build:&lt;/strong&gt; Create an app where users enter a video URL and get a download link.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Upgrade it:&lt;/strong&gt; Allow downloading audio-only versions or full playlists.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  1️⃣3️⃣ AI-Based Code Review Tool
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Skills:&lt;/strong&gt; OpenAI API, Next.js, Node.js&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Why?&lt;/strong&gt; Automate code reviews and best practices enforcement.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;How to Build:&lt;/strong&gt; Use OpenAI API to analyze code and provide suggestions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Upgrade it:&lt;/strong&gt; Integrate with GitHub to review pull requests automatically.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  1️⃣4️⃣ Multi-Tenant SaaS Dashboard
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Skills:&lt;/strong&gt; Next.js, PostgreSQL, Authentication&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Why?&lt;/strong&gt; Learn about multi-tenant architecture and database scaling.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;How to Build:&lt;/strong&gt; Create a dashboard that serves multiple users with separate data.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Upgrade it:&lt;/strong&gt; Implement billing, team management, and analytics.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  1️⃣5️⃣ Portfolio Generator
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Skills:&lt;/strong&gt; React, Next.js, Tailwind CSS&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Why?&lt;/strong&gt; Help developers generate and deploy their portfolios easily.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;How to Build:&lt;/strong&gt; Users can enter their details and generate a customizable portfolio.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Upgrade it:&lt;/strong&gt; Add drag-and-drop customization or AI-based content suggestions.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🚀 Final Thoughts
&lt;/h2&gt;

&lt;p&gt;Side projects help you apply what you learn, build confidence, and make your portfolio stand out. Pick one from the list, build it, and share your progress! Which one will you try first? Let me know in the comments! 🎯&lt;/p&gt;




&lt;h2&gt;
  
  
  Follow Me
&lt;/h2&gt;

&lt;p&gt;Thank you for reading my blog. 🚀 You can follow me on &lt;a href="https://github.com/Mo-Ibra" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; and connect on &lt;a href="https://x.com/MoIbrraa" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>javascript</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Building an Image to Text Converter with Next.js and Tesseract.js 🚀</title>
      <dc:creator>Mohamed Ibrahim</dc:creator>
      <pubDate>Sun, 16 Mar 2025 18:45:01 +0000</pubDate>
      <link>https://dev.to/moibra/building-an-image-to-text-converter-with-nextjs-and-tesseractjs-45c3</link>
      <guid>https://dev.to/moibra/building-an-image-to-text-converter-with-nextjs-and-tesseractjs-45c3</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;As developers, we often encounter challenges that inspire us to build solutions. One common problem I noticed was the need to extract text from images quickly and efficiently. Whether it’s scanning printed documents, extracting text from screenshots, or working with multi-language content, I needed a simple and effective solution. That's when I decided to create an &lt;strong&gt;Image to Text Converter&lt;/strong&gt; using &lt;strong&gt;Next.js&lt;/strong&gt; and &lt;strong&gt;Tesseract.js&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  🧐 The Problem
&lt;/h2&gt;

&lt;p&gt;OCR (Optical Character Recognition) technology is widely available, but many existing solutions are either too complex, require paid services, or don’t support multiple languages effectively. I wanted to create a tool that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Is &lt;strong&gt;free and open-source&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Supports &lt;strong&gt;multiple languages&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Provides &lt;strong&gt;an easy-to-use UI&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Allows &lt;strong&gt;exporting text in various formats&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Works entirely in the browser without requiring backend processing&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  💡 The Solution
&lt;/h2&gt;

&lt;p&gt;I built a &lt;strong&gt;Next.js&lt;/strong&gt; application that integrates &lt;strong&gt;Tesseract.js&lt;/strong&gt;, a powerful JavaScript OCR engine. The app allows users to upload images and extract text instantly, supporting multiple languages and various export options. &lt;/p&gt;

&lt;h2&gt;
  
  
  ✨ Features
&lt;/h2&gt;

&lt;h3&gt;
  
  
  🌍 Multi-language Support
&lt;/h3&gt;

&lt;p&gt;Extract text in multiple languages like &lt;strong&gt;English, Arabic, Spanish, French, and more&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  📤 Export Options
&lt;/h3&gt;

&lt;p&gt;Users can export the extracted text in &lt;strong&gt;.txt, .pdf, or .md&lt;/strong&gt; formats.&lt;/p&gt;

&lt;h3&gt;
  
  
  🖼️ Image Upload
&lt;/h3&gt;

&lt;p&gt;Supports &lt;strong&gt;file selection and drag-and-drop&lt;/strong&gt; image uploads.&lt;/p&gt;

&lt;h3&gt;
  
  
  🔄 Image Preprocessing (Upcoming)
&lt;/h3&gt;

&lt;p&gt;Enhances OCR accuracy with &lt;strong&gt;grayscale conversion and cropping&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  🕶️ Dark Mode
&lt;/h3&gt;

&lt;p&gt;A seamless &lt;strong&gt;light and dark theme&lt;/strong&gt; experience.&lt;/p&gt;

&lt;h3&gt;
  
  
  📱 Responsive Design
&lt;/h3&gt;

&lt;p&gt;Optimized for &lt;strong&gt;both mobile and desktop devices&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  🛠️ Tech Stack
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frontend:&lt;/strong&gt; Next.js, Tailwind CSS&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OCR Engine:&lt;/strong&gt; Tesseract.js&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;File Export:&lt;/strong&gt; jsPDF&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  ⚙️ How I Built It
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Setting Up Next.js&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Installed and configured Next.js and Tailwind CSS.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Integrating Tesseract.js&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Used Tesseract.js to process images and extract text on the client-side.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Building the UI&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Created a user-friendly interface with drag-and-drop support.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Adding Export Options&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Implemented text, PDF, and Markdown export using jsPDF.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Enhancing with Preprocessing (Upcoming)&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Working on grayscale conversion and cropping for better OCR accuracy.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  📦 How to Use
&lt;/h2&gt;

&lt;p&gt;1️⃣ &lt;strong&gt;Clone the Repository&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/Mo-Ibra/imagetxt-to-txt
&lt;span class="nb"&gt;cd &lt;/span&gt;imagetxt-to-txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;2️⃣ &lt;strong&gt;Install Dependencies&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;3️⃣ &lt;strong&gt;Run the Development Server&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm run dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Visit &lt;a href="http://localhost:3000" rel="noopener noreferrer"&gt;http://localhost:3000&lt;/a&gt; to view the app.&lt;/p&gt;

&lt;h2&gt;
  
  
  🔗 Try It Out!
&lt;/h2&gt;

&lt;p&gt;The project is available on &lt;strong&gt;GitHub&lt;/strong&gt;, and I’d love your feedback and contributions!&lt;br&gt;
👉 &lt;a href="https://github.com/Mo-Ibra/imagetxt-to-txt" rel="noopener noreferrer"&gt;GitHub Repo&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And you can check the demo from 👉 &lt;a href="https://imgtxt-to-txt.vercel.app/" rel="noopener noreferrer"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🏁 Conclusion
&lt;/h2&gt;

&lt;p&gt;This project has been a great learning experience in working with &lt;strong&gt;OCR, file handling, and UI/UX improvements&lt;/strong&gt;. If you're looking to build a similar tool or enhance your Next.js skills, give it a try! 🚀&lt;/p&gt;

&lt;p&gt;💬 Let me know what you think in the comments, and feel free to contribute! 😃&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>javascript</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Creating a Reusable Component Library with Next.js &amp; Tailwind CSS 🚀</title>
      <dc:creator>Mohamed Ibrahim</dc:creator>
      <pubDate>Thu, 13 Mar 2025 12:16:51 +0000</pubDate>
      <link>https://dev.to/moibra/creating-a-reusable-component-library-with-nextjs-tailwind-css-43ea</link>
      <guid>https://dev.to/moibra/creating-a-reusable-component-library-with-nextjs-tailwind-css-43ea</guid>
      <description>&lt;h2&gt;
  
  
  &lt;strong&gt;Introduction&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Building a reusable component library can significantly improve development efficiency, maintainability, and consistency across projects. In this guide, we’ll walk through setting up a reusable component library using &lt;strong&gt;Next.js&lt;/strong&gt; and &lt;strong&gt;Tailwind CSS&lt;/strong&gt;, ensuring it’s modular, customizable, and easy to integrate into various projects.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;1. Setting Up the Project&lt;/strong&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Initialize a New Next.js Project&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;First, create a new Next.js project and install dependencies:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx create-next-app@latest next-component-library &lt;span class="nt"&gt;--typescript&lt;/span&gt;
&lt;span class="nb"&gt;cd &lt;/span&gt;next-component-library
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;strong&gt;Install Tailwind CSS&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Set up Tailwind CSS by installing its dependencies:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-D&lt;/span&gt; tailwindcss postcss autoprefixer
npx tailwindcss init &lt;span class="nt"&gt;-p&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Configure &lt;code&gt;tailwind.config.js&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;module&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;exports&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;./src/**/*.{js,ts,jsx,tsx}&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
  &lt;span class="na"&gt;theme&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;extend&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{},&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="na"&gt;plugins&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&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 Tailwind to &lt;code&gt;globals.css&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="k"&gt;@tailwind&lt;/span&gt; &lt;span class="n"&gt;base&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;@tailwind&lt;/span&gt; &lt;span class="n"&gt;components&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;@tailwind&lt;/span&gt; &lt;span class="n"&gt;utilities&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  &lt;strong&gt;2. Structuring the Component Library&lt;/strong&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Create a Components Directory&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Inside the &lt;code&gt;src/&lt;/code&gt; folder, create a &lt;code&gt;components/&lt;/code&gt; directory to organize reusable UI components.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Example: Button Component&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Create a &lt;code&gt;Button.tsx&lt;/code&gt; file inside &lt;code&gt;components/&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;react&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;clsx&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;clsx&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;type&lt;/span&gt; &lt;span class="nx"&gt;ButtonProps&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;children&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ReactNode&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;variant&lt;/span&gt;&lt;span class="p"&gt;?:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;primary&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;secondary&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;danger&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;onClick&lt;/span&gt;&lt;span class="p"&gt;?:&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;Button&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;FC&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;ButtonProps&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;children&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;variant&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;primary&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;onClick&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;buttonClasses&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;clsx&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;px-4 py-2 rounded-md font-semibold transition&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;bg-blue-500 text-white hover:bg-blue-600&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;variant&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;primary&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;bg-gray-500 text-white hover:bg-gray-600&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;variant&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;secondary&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;bg-red-500 text-white hover:bg-red-600&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;variant&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;danger&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;button&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;buttonClasses&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="na"&gt;onClick&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;onClick&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;children&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;button&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nx"&gt;Button&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  &lt;strong&gt;3. Making Components Reusable &amp;amp; Customizable&lt;/strong&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Using Props for Customization&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Props allow us to make components flexible. The &lt;code&gt;Button&lt;/code&gt; component above supports different variants and actions.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Supporting Tailwind Overrides&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;To allow additional styles, modify the component to accept class names:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;Button&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;FC&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;ButtonProps&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;className&lt;/span&gt;&lt;span class="p"&gt;?:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;children&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;variant&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;primary&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;onClick&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;className&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;button&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nf"&gt;clsx&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;buttonClasses&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;className&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="na"&gt;onClick&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;onClick&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;children&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;button&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  &lt;strong&gt;4. Creating More Components&lt;/strong&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Example: Card Component&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;Card&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;FC&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;title&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;children&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ReactNode&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;children&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"border rounded-lg p-4 shadow-md"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h3&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"font-semibold text-lg mb-2"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h3&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;children&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nx"&gt;Card&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;strong&gt;Example: Input Component&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;Input&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;FC&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;placeholder&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;type&lt;/span&gt;&lt;span class="p"&gt;?:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;className&lt;/span&gt;&lt;span class="p"&gt;?:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;placeholder&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kd"&gt;type&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;text&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;className&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;input&lt;/span&gt;
      &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="kd"&gt;type&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
      &lt;span class="na"&gt;placeholder&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;placeholder&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
      &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nf"&gt;clsx&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;px-3 py-2 border rounded-md w-full&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;className&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nx"&gt;Input&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  &lt;strong&gt;5. Exporting Components for Easy Import&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;To make the library easier to use, create an &lt;code&gt;index.ts&lt;/code&gt; inside the &lt;code&gt;components/&lt;/code&gt; folder:&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="k"&gt;export&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nx"&gt;Button&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;./Button&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nx"&gt;Card&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;./Card&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nx"&gt;Input&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;./Input&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;Now, importing components is simple:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Button&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;Card&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;Input&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@/components&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;h2&gt;
  
  
  &lt;strong&gt;6. Publishing as an NPM Package (Optional)&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;To share your component library, you can publish it as an npm package.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Prepare the Package&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Create a &lt;code&gt;package.json&lt;/code&gt; in the root directory.&lt;/li&gt;
&lt;li&gt;Add &lt;code&gt;exports&lt;/code&gt; to enable modular imports.&lt;/li&gt;
&lt;li&gt;Ensure your components are inside a &lt;code&gt;src/&lt;/code&gt; folder.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Build the Package&lt;/strong&gt;
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Add a &lt;code&gt;build&lt;/code&gt; script in &lt;code&gt;package.json&lt;/code&gt;:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="nl"&gt;"scripts"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"build"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"tsc &amp;amp;&amp;amp; tailwindcss -o styles.css"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Run the build command:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm run build
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;strong&gt;Publish to NPM&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm login
npm publish
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once published, it can be installed in other projects:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install &lt;/span&gt;my-nextjs-ui-library
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  &lt;strong&gt;Conclusion&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;By following this guide, you’ve built a reusable component library using Next.js and Tailwind CSS. This modular approach helps maintain design consistency across projects while keeping components highly customizable.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Next Steps:&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Expand the library with more components like modals, dropdowns, and alerts.&lt;/li&gt;
&lt;li&gt;Add Storybook for component documentation.&lt;/li&gt;
&lt;li&gt;Implement Tailwind’s &lt;code&gt;@apply&lt;/code&gt; for reusable utility styles.&lt;/li&gt;
&lt;li&gt;Optimize the package for tree shaking.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By making your components reusable and shareable, you enhance efficiency in Next.js projects while maintaining a beautiful and consistent UI. 🚀&lt;/p&gt;




&lt;h3&gt;
  
  
  Follow Me
&lt;/h3&gt;

&lt;p&gt;Thank you for reading my blog. 🚀 You can follow me on &lt;a href="https://github.com/Mo-Ibra" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; and connect on &lt;a href="https://x.com/MoIbrraa" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>javascript</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
