<?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>Forem: OpenSource</title>
    <description>The latest articles on Forem by OpenSource (@opensourcee).</description>
    <link>https://forem.com/opensourcee</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%2F1163671%2F018fc36a-1ac2-4e73-8d2f-5e564225b161.jpeg</url>
      <title>Forem: OpenSource</title>
      <link>https://forem.com/opensourcee</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/opensourcee"/>
    <language>en</language>
    <item>
      <title>To document or not to document? That is the question</title>
      <dc:creator>OpenSource</dc:creator>
      <pubDate>Sat, 08 Feb 2025 12:35:27 +0000</pubDate>
      <link>https://forem.com/opensourcee/to-document-or-not-to-document-that-is-the-question-fng</link>
      <guid>https://forem.com/opensourcee/to-document-or-not-to-document-that-is-the-question-fng</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;⚠️ Warning: Contain excuses not to write documentation&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Other people:&lt;br&gt;
"𝘊𝘰𝘥𝘦 𝘥𝘰𝘤𝘶𝘮𝘦𝘯𝘵𝘢𝘵𝘪𝘰𝘯 𝘪𝘴 𝘢𝘯 𝘪𝘯𝘷𝘦𝘴𝘵𝘮𝘦𝘯𝘵 𝘵𝘰 𝘺𝘰𝘶𝘳 𝘧𝘶𝘵𝘶𝘳𝘦 𝘴𝘦𝘭𝘧 𝘢𝘯𝘥 𝘺𝘰𝘶𝘳 𝘵𝘦𝘢𝘮."&lt;/p&gt;

&lt;p&gt;Me:&lt;br&gt;
"𝘐𝘧 𝘺𝘰𝘶 𝘩𝘢𝘷𝘦 𝘵𝘰 𝘦𝘹𝘱𝘭𝘢𝘪𝘯, 𝘪𝘵 𝘸𝘢𝘴 𝘯𝘰𝘵 𝘤𝘭𝘦𝘢𝘳 𝘪𝘯 𝘵𝘩𝘦 𝘧𝘪𝘳𝘴𝘵 𝘱𝘭𝘢𝘤𝘦."&lt;/p&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%2F8t7rz8hez0yok21guiv5.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%2F8t7rz8hez0yok21guiv5.png" alt="Obvious Instructions" width="700" height="213"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Instead of adding tons of comments, make the code more readable itself:&lt;/p&gt;

&lt;p&gt;❌ 𝐃𝐎𝐍'𝐓: Add a comment to explain cryptic vars&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// 𝘔𝘶𝘭𝘵𝘪𝘱𝘭𝘺 𝘱𝘳𝘪𝘤𝘦 𝘣𝘺 𝘲𝘶𝘢𝘯𝘵𝘪𝘵𝘺 𝘵𝘰 𝘨𝘦𝘵 𝘵𝘰𝘵𝘢𝘭 𝘤𝘰𝘴𝘵
𝘭𝘦𝘵 𝘹 = 𝘺 * 𝘻;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;✅ 𝐃𝐎: Change var names to make them clearer&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;𝘭𝘦𝘵 𝘵𝘰𝘵𝘢𝘭𝘊𝘰𝘴𝘵 = 𝘱𝘳𝘪𝘤𝘦 * 𝘲𝘶𝘢𝘯𝘵𝘪𝘵𝘺;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;or&lt;/p&gt;

&lt;p&gt;❌ 𝐃𝐎𝐍'𝐓: Explain logic with a comment&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// 𝘊𝘩𝘦𝘤𝘬 𝘪𝘧 𝘵𝘩𝘦 𝘶𝘴𝘦𝘳 𝘪𝘴 𝘢𝘯 𝘢𝘥𝘮𝘪𝘯 𝘢𝘯𝘥 𝘩𝘢𝘴 𝘱𝘦𝘳𝘮𝘪𝘴𝘴𝘪𝘰𝘯
𝘪𝘧 (𝘶 === 1 &amp;amp;&amp;amp; 𝘱 &amp;gt; 3) { 
 𝘳𝘶𝘯();
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;✅ 𝐃𝐎: Change variables and function names&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;𝘭𝘦𝘵 𝘪𝘴𝘈𝘥𝘮𝘪𝘯 = 𝘶𝘴𝘦𝘳𝘙𝘰𝘭𝘦 === '𝘢𝘥𝘮𝘪𝘯';
𝘭𝘦𝘵 𝘩𝘢𝘴𝘗𝘦𝘳𝘮𝘪𝘴𝘴𝘪𝘰𝘯 = 𝘱𝘦𝘳𝘮𝘪𝘴𝘴𝘪𝘰𝘯𝘓𝘦𝘷𝘦𝘭 &amp;gt; 3;

𝘪𝘧 (𝘪𝘴𝘈𝘥𝘮𝘪𝘯 &amp;amp;&amp;amp; 𝘩𝘢𝘴𝘗𝘦𝘳𝘮𝘪𝘴𝘴𝘪𝘰𝘯) { 
 𝘨𝘳𝘢𝘯𝘵𝘈𝘤𝘤𝘦𝘴𝘴(); 
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Last: &lt;br&gt;
Practice reading code, not documentation.&lt;/p&gt;

&lt;p&gt;DRY: Don't repeat yourself&lt;br&gt;
If your code is clear, there's no reason to repeat what it says.&lt;/p&gt;

&lt;p&gt;Imagine this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// 𝘔𝘶𝘭𝘵𝘪𝘱𝘭𝘺 𝘱𝘳𝘪𝘤𝘦 𝘣𝘺 𝘲𝘶𝘢𝘯𝘵𝘪𝘵𝘺 𝘵𝘰 𝘨𝘦𝘵 𝘵𝘰𝘵𝘢𝘭 𝘤𝘰𝘴𝘵
𝘭𝘦𝘵 𝘵𝘰𝘵𝘢𝘭𝘊𝘰𝘴𝘵 = 𝘱𝘳𝘪𝘤𝘦 * 𝘲𝘶𝘢𝘯𝘵𝘪𝘵𝘺;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;or&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// 𝘊𝘩𝘦𝘤𝘬 𝘪𝘧 𝘵𝘩𝘦 𝘶𝘴𝘦𝘳 𝘪𝘴 𝘢𝘯 𝘢𝘥𝘮𝘪𝘯 𝘢𝘯𝘥 𝘩𝘢𝘴 𝘱𝘦𝘳𝘮𝘪𝘴𝘴𝘪𝘰𝘯
𝘭𝘦𝘵 𝘪𝘴𝘈𝘥𝘮𝘪𝘯 = 𝘶𝘴𝘦𝘳𝘙𝘰𝘭𝘦 === '𝘢𝘥𝘮𝘪𝘯';
𝘭𝘦𝘵 𝘩𝘢𝘴𝘗𝘦𝘳𝘮𝘪𝘴𝘴𝘪𝘰𝘯 = 𝘱𝘦𝘳𝘮𝘪𝘴𝘴𝘪𝘰𝘯𝘓𝘦𝘷𝘦𝘭 &amp;gt; 3;

𝘪𝘧 (𝘪𝘴𝘈𝘥𝘮𝘪𝘯 &amp;amp;&amp;amp; 𝘩𝘢𝘴𝘗𝘦𝘳𝘮𝘪𝘴𝘴𝘪𝘰𝘯) { 
 𝘨𝘳𝘢𝘯𝘵𝘈𝘤𝘤𝘦𝘴𝘴(); 
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's ridiculous.&lt;br&gt;
That's when you know your code is clear.&lt;br&gt;
No explanations needed.&lt;/p&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%2Fc7a576louyfm7lnb5t9c.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%2Fc7a576louyfm7lnb5t9c.png" alt="Obvious Instructions" width="733" height="981"&gt;&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;𝐙𝐄𝐍 𝐎𝐅 𝐏𝐘𝐓𝐇𝐎𝐍 (𝘡𝘦𝘯 𝘰𝘧 𝘌𝘷𝘦𝘳𝘺𝘵𝘩𝘪𝘯𝘨)&lt;/p&gt;

&lt;p&gt;𝐁𝐞𝐚𝐮𝐭𝐢𝐟𝐮𝐥 𝐢𝐬 𝐛𝐞𝐭𝐭𝐞𝐫 𝐭𝐡𝐚𝐧 𝐮𝐠𝐥𝐲. 👈&lt;/p&gt;

&lt;p&gt;𝐄𝐱𝐩𝐥𝐢𝐜𝐢𝐭 𝐢𝐬 𝐛𝐞𝐭𝐭𝐞𝐫 𝐭𝐡𝐚𝐧 𝐢𝐦𝐩𝐥𝐢𝐜𝐢𝐭. 👈&lt;/p&gt;

&lt;p&gt;𝐒𝐢𝐦𝐩𝐥𝐞 𝐢𝐬 𝐛𝐞𝐭𝐭𝐞𝐫 𝐭𝐡𝐚𝐧 𝐜𝐨𝐦𝐩𝐥𝐞𝐱. 👈&lt;/p&gt;

&lt;p&gt;𝐂𝐨𝐦𝐩𝐥𝐞𝐱 𝐢𝐬 𝐛𝐞𝐭𝐭𝐞𝐫 𝐭𝐡𝐚𝐧 𝐜𝐨𝐦𝐩𝐥𝐢𝐜𝐚𝐭𝐞𝐝.&lt;/p&gt;

&lt;p&gt;𝐅𝐥𝐚𝐭 𝐢𝐬 𝐛𝐞𝐭𝐭𝐞𝐫 𝐭𝐡𝐚𝐧 𝐧𝐞𝐬𝐭𝐞𝐝.&lt;/p&gt;

&lt;p&gt;𝐒𝐩𝐚𝐫𝐬𝐞 𝐢𝐬 𝐛𝐞𝐭𝐭𝐞𝐫 𝐭𝐡𝐚𝐧 𝐝𝐞𝐧𝐬𝐞.&lt;/p&gt;

&lt;p&gt;𝐑𝐞𝐚𝐝𝐚𝐛𝐢𝐥𝐢𝐭𝐲 𝐜𝐨𝐮𝐧𝐭𝐬. 👈&lt;/p&gt;

&lt;p&gt;𝐒𝐩𝐞𝐜𝐢𝐚𝐥 𝐜𝐚𝐬𝐞𝐬 𝐚𝐫𝐞𝐧'𝐭 𝐬𝐩𝐞𝐜𝐢𝐚𝐥 𝐞𝐧𝐨𝐮𝐠𝐡 𝐭𝐨 𝐛𝐫𝐞𝐚𝐤 𝐭𝐡𝐞 𝐫𝐮𝐥𝐞𝐬.&lt;/p&gt;

&lt;p&gt;𝐀𝐥𝐭𝐡𝐨𝐮𝐠𝐡 𝐩𝐫𝐚𝐜𝐭𝐢𝐜𝐚𝐥𝐢𝐭𝐲 𝐛𝐞𝐚𝐭𝐬 𝐩𝐮𝐫𝐢𝐭𝐲.&lt;/p&gt;

&lt;p&gt;𝐄𝐫𝐫𝐨𝐫𝐬 𝐬𝐡𝐨𝐮𝐥𝐝 𝐧𝐞𝐯𝐞𝐫 𝐩𝐚𝐬𝐬 𝐬𝐢𝐥𝐞𝐧𝐭𝐥𝐲.&lt;/p&gt;

&lt;p&gt;𝐔𝐧𝐥𝐞𝐬𝐬 𝐞𝐱𝐩𝐥𝐢𝐜𝐢𝐭𝐥𝐲 𝐬𝐢𝐥𝐞𝐧𝐜𝐞𝐝.&lt;/p&gt;

&lt;p&gt;𝐈𝐧 𝐭𝐡𝐞 𝐟𝐚𝐜𝐞 𝐨𝐟 𝐚𝐦𝐛𝐢𝐠𝐮𝐢𝐭𝐲, 𝐫𝐞𝐟𝐮𝐬𝐞 𝐭𝐡𝐞 𝐭𝐞𝐦𝐩𝐭𝐚𝐭𝐢𝐨𝐧 𝐭𝐨 𝐠𝐮𝐞𝐬𝐬.&lt;/p&gt;

&lt;p&gt;𝐓𝐡𝐞𝐫𝐞 𝐬𝐡𝐨𝐮𝐥𝐝 𝐛𝐞 𝐨𝐧𝐞-- 𝐚𝐧𝐝 𝐩𝐫𝐞𝐟𝐞𝐫𝐚𝐛𝐥𝐲 𝐨𝐧𝐥𝐲 𝐨𝐧𝐞 --𝐨𝐛𝐯𝐢𝐨𝐮𝐬 𝐰𝐚𝐲 𝐭𝐨 𝐝𝐨 𝐢𝐭. 👈&lt;/p&gt;

&lt;p&gt;𝐀𝐥𝐭𝐡𝐨𝐮𝐠𝐡 𝐭𝐡𝐚𝐭 𝐰𝐚𝐲 𝐦𝐚𝐲 𝐧𝐨𝐭 𝐛𝐞 𝐨𝐛𝐯𝐢𝐨𝐮𝐬 𝐚𝐭 𝐟𝐢𝐫𝐬𝐭 𝐮𝐧𝐥𝐞𝐬𝐬 𝐲𝐨𝐮'𝐫𝐞 𝐃𝐮𝐭𝐜𝐡.&lt;/p&gt;

&lt;p&gt;𝐍𝐨𝐰 𝐢𝐬 𝐛𝐞𝐭𝐭𝐞𝐫 𝐭𝐡𝐚𝐧 𝐧𝐞𝐯𝐞𝐫.&lt;/p&gt;

&lt;p&gt;𝐀𝐥𝐭𝐡𝐨𝐮𝐠𝐡 𝐧𝐞𝐯𝐞𝐫 𝐢𝐬 𝐨𝐟𝐭𝐞𝐧 𝐛𝐞𝐭𝐭𝐞𝐫 𝐭𝐡𝐚𝐧 𝐫𝐢𝐠𝐡𝐭 𝐧𝐨𝐰.&lt;/p&gt;

&lt;p&gt;𝐈𝐟 𝐭𝐡𝐞 𝐢𝐦𝐩𝐥𝐞𝐦𝐞𝐧𝐭𝐚𝐭𝐢𝐨𝐧 𝐢𝐬 𝐡𝐚𝐫𝐝 𝐭𝐨 𝐞𝐱𝐩𝐥𝐚𝐢𝐧, 𝐢𝐭'𝐬 𝐚 𝐛𝐚𝐝 𝐢𝐝𝐞𝐚. 👈&lt;/p&gt;

&lt;p&gt;𝐈𝐟 𝐭𝐡𝐞 𝐢𝐦𝐩𝐥𝐞𝐦𝐞𝐧𝐭𝐚𝐭𝐢𝐨𝐧 𝐢𝐬 𝐞𝐚𝐬𝐲 𝐭𝐨 𝐞𝐱𝐩𝐥𝐚𝐢𝐧, 𝐢𝐭 𝐦𝐚𝐲 𝐛𝐞 𝐚 𝐠𝐨𝐨𝐝 𝐢𝐝𝐞𝐚.&lt;/p&gt;

&lt;p&gt;𝐍𝐚𝐦𝐞𝐬𝐩𝐚𝐜𝐞𝐬 𝐚𝐫𝐞 𝐨𝐧𝐞 𝐡𝐨𝐧𝐤𝐢𝐧𝐠 𝐠𝐫𝐞𝐚𝐭 𝐢𝐝𝐞𝐚 – 𝐥𝐞𝐭'𝐬 𝐝𝐨 𝐦𝐨𝐫𝐞 𝐨𝐟 𝐭𝐡𝐨𝐬𝐞! 👈&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/i6G6dmVJy74"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Don’t Forget the Simple Stuff: The Easiest Way of Making a Dropdown is PURE HTML</title>
      <dc:creator>OpenSource</dc:creator>
      <pubDate>Mon, 27 Jan 2025 12:04:01 +0000</pubDate>
      <link>https://forem.com/opensourcee/dont-forget-the-simple-stuff-html-vanilla-js-and-the-details-tag-2o50</link>
      <guid>https://forem.com/opensourcee/dont-forget-the-simple-stuff-html-vanilla-js-and-the-details-tag-2o50</guid>
      <description>&lt;p&gt;We all love our frameworks—React, Vue, Svelte—and for good reason. They turn messy code into elegant components, manage tricky state, and give us tools to build large-scale apps fast. &lt;/p&gt;

&lt;p&gt;But sometimes, in our excitement to drop the next &lt;code&gt;npm install&lt;/code&gt;, we forget the basics: HTML and Vanilla JavaScript can handle a surprising amount of everyday functionality.&lt;/p&gt;

&lt;h2&gt;
  
  
  Consider a simple dropdown
&lt;/h2&gt;

&lt;p&gt;Many devs think they need a UI library like Bootstrap or Shadcn for interactive components like dropdowns. Or they’ll create their own React component with props, states, and a mini state machine. &lt;/p&gt;

&lt;p&gt;But there’s a native HTML solution: &lt;code&gt;&amp;lt;details&amp;gt;&lt;/code&gt; and &lt;code&gt;&amp;lt;summary&amp;gt;&lt;/code&gt;. That’s right, one tag handles toggling, display, and accessibility behind the scenes—no framework or even JavaScript required.&lt;/p&gt;

&lt;p&gt;Check out how simple it is using html &lt;code&gt;&amp;lt;summary&amp;gt;&lt;/code&gt; and &lt;code&gt;&amp;lt;details&amp;gt;&lt;/code&gt; and a bit of styling:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://tools.webcrumbs.org/frontend-ai?hash=33ec337b57beaa08816b97a79c05fe658252e658f1ebb14913be4e54f5e6241d&amp;amp;theme=20077c445c655813ae658211e48f0b4ed4603d556d42e03b64c6d43896b4d3a4" rel="noopener noreferrer"&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%2Fyurfx9v1jf03qfmt0qec.png" alt="Webcrumbs" width="300" height="212"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Get a copy here.
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://share.webcrumbs.org/vJO5vP" rel="noopener noreferrer"&gt;https://share.webcrumbs.org/vJO5vP&lt;/a&gt;&lt;br&gt;
(You can change it and I won't know)&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="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;div&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;w-[300px] bg-white rounded-lg shadow-lg&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;details&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;relative&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;summary&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;cursor-pointer py-2 px-4 border border-neutral-300 rounded-md text-neutral-950&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="nx"&gt;Select&lt;/span&gt; &lt;span class="nx"&gt;Country&lt;/span&gt;
    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/summary&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;ul&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;absolute top-full left-0 w-full bg-white border border-neutral-300 rounded-md mt-2 z-10&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;li&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;flex items-center gap-2 px-4 py-2 hover:bg-neutral-100 cursor-pointer&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;img&lt;/span&gt;
          &lt;span class="nx"&gt;src&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://flagcdn.com/us.svg&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
          &lt;span class="nx"&gt;alt&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;United States&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
          &lt;span class="kd"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;object-contain w-[20px] h-[15px]&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
        &lt;span class="o"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span class="nx"&gt;United&lt;/span&gt; &lt;span class="nx"&gt;States&lt;/span&gt;
      &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/li&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;      &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;li&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;flex items-center gap-2 px-4 py-2 hover:bg-neutral-100 cursor-pointer&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;img&lt;/span&gt;
          &lt;span class="nx"&gt;src&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://flagcdn.com/ca.svg&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
          &lt;span class="nx"&gt;alt&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Canada&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
          &lt;span class="kd"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;object-contain w-[20px] h-[15px]&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
        &lt;span class="o"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span class="nx"&gt;Canada&lt;/span&gt;
      &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/li&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;      &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;li&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;flex items-center gap-2 px-4 py-2 hover:bg-neutral-100 cursor-pointer&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;img&lt;/span&gt;
          &lt;span class="nx"&gt;src&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://flagcdn.com/gb.svg&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
          &lt;span class="nx"&gt;alt&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;United Kingdom&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
          &lt;span class="kd"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;object-contain w-[20px] h-[15px]&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
        &lt;span class="o"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span class="nx"&gt;United&lt;/span&gt; &lt;span class="nx"&gt;Kingdom&lt;/span&gt;
      &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/li&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;      &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;li&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;flex items-center gap-2 px-4 py-2 hover:bg-neutral-100 cursor-pointer&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;img&lt;/span&gt;
          &lt;span class="nx"&gt;src&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://flagcdn.com/au.svg&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
          &lt;span class="nx"&gt;alt&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Australia&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
          &lt;span class="kd"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;object-contain w-[20px] h-[15px]&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
        &lt;span class="o"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span class="nx"&gt;Australia&lt;/span&gt;
      &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/li&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/ul&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;  &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/details&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/div&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Here's how I got it
&lt;/h2&gt;

&lt;p&gt;I went to &lt;a href="https://tools.webcrumbs.org/frontend-ai" rel="noopener noreferrer"&gt;Frontend AI&lt;/a&gt; and asked for a dropdown&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%2F0zhqhvgsmagvjd9p6pip.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%2F0zhqhvgsmagvjd9p6pip.png" alt="Image description" width="800" height="244"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Got the results in seconds.&lt;/p&gt;




&lt;p&gt;This isn’t a ban on frameworks. &lt;/p&gt;

&lt;p&gt;They make big apps maintainable and unify architectural patterns. &lt;/p&gt;

&lt;p&gt;But next time you reach for your favorite library, do a quick check: Is there a simpler, built-in alternative? &lt;/p&gt;

&lt;p&gt;A good check is just asking Frontend AI. If there's a simpler way, it will get it right away. &lt;a href="https://tools.webcrumbs.org/frontend-ai" rel="noopener noreferrer"&gt;Here's the link&lt;/a&gt;, if you want to try.&lt;/p&gt;

&lt;p&gt;By mixing in the right HTML elements and maybe a splash of Vanilla JavaScript, you might end up with code that’s faster, smaller, and just as polished. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;And less dependent on third-party libraries.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Bottom line
&lt;/h3&gt;

&lt;p&gt;Frameworks rock, but sometimes you can skip the extra overhead. Embrace the power of web standards first—you might be surprised how much they can do!!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What else have you built with simple HTML and JS that other people need libraries?&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>tutorial</category>
      <category>javascript</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Clients' Expectations Hell: tips for 2025</title>
      <dc:creator>OpenSource</dc:creator>
      <pubDate>Mon, 30 Dec 2024 11:42:08 +0000</pubDate>
      <link>https://forem.com/opensourcee/clients-expectations-hell-and-how-to-get-over-it-13o7</link>
      <guid>https://forem.com/opensourcee/clients-expectations-hell-and-how-to-get-over-it-13o7</guid>
      <description>&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Keep tuned! There's light at the end of the t̶u̶n̶n̶e̶l̶ post.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Oh, the challenges of working with clients and their expectations
&lt;/h3&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%2Fxd4txkp7ccricp2a5ksh.gif" 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%2Fxd4txkp7ccricp2a5ksh.gif" alt="Facepalm - Dealing with clients" width="480" height="277"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you’ve ever worked in web development, you’ve probably heard things like, “But I’ve seen this done on that site!” or, “Why can’t it just work like that?” &lt;/p&gt;

&lt;p&gt;My favorite: &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"I want to base it off of the airbnb.com menu bar. It needs to be mobile-friendly and responsive just like the airbnb one. I also need it done in a DAY." (based on a real job request)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Managing client expectations isn't a piece of cake.&lt;/p&gt;




&lt;h3&gt;
  
  
  "But It’s So Simple!"
&lt;/h3&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%2Fx12oep65y8xjc1wn98g0.gif" 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%2Fx12oep65y8xjc1wn98g0.gif" alt="Confused math lady" width="500" height="383"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"I JUST need someone with experience to help me take this raw code and turn it into a working app with a SIMPLE UI to customize the settings."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Clients often look at a polished website and assume the features just appear. Wipe transitions between pages? Sure, let’s just add it in… no problem, right? Developers know better. Building something late in the process that wasn’t planned for is like trying to add a room to a house after it’s already built. It’s not simple.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Never-Ending “Little Tweaks”
&lt;/h2&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%2Fonkm4f9gpa5m39ynvel6.gif" 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%2Fonkm4f9gpa5m39ynvel6.gif" alt="Dog chasing tail" width="220" height="391"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Looking for someone that is reliable that can make quick changes[...] as well as to make ALL PAGES look sharp, load faster and function better than they are presently."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;“Could we just add this tiny feature?” Tiny? Maybe in words, but each “little” request adds layers of complexity. “Sure, we can do it, but it’ll take time and budget,” you explain. Cue the client’s wide-eyed surprise: “Wait, it’s not free?” Oh, sweet summer child…&lt;/p&gt;




&lt;h2&gt;
  
  
  Fixed Price? Fixed Headache.
&lt;/h2&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%2Fkadcr9gpckq18h6fy5ot.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%2Fkadcr9gpckq18h6fy5ot.png" alt="Fixed price" width="220" height="124"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"This update includes a UI overhaul, an [...] API being implemented to replace our current voiceover, and a new character being rigged in the app. We are looking for a full stack developer to come on board and give a FIXED price for this job."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Let’s talk about the mythical “fixed-price” project. On paper, it sounds tidy: deliver X for Y dollars. But in reality? Every project evolves. Every. Single. Time. Trying to define everything upfront is like catching water in your hands. Developers must navigate assumptions, uncertainties, and “oh, I thought that was included” moments… all while staying sane.&lt;/p&gt;




&lt;h2&gt;
  
  
  Budget? What Budget?
&lt;/h2&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%2Fkxof7vgfqkx3wm8n0ho2.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%2Fkxof7vgfqkx3wm8n0ho2.png" alt="No budget" width="220" height="220"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;(Intentionally left blank)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Ah, the heartbreak of the “champagne dream on a beer budget” client. They imagine custom solutions but balk at the price tag. “Why can’t this cost $10K instead of $100K?” Because building a site isn’t assembling IKEA furniture. (Spoiler: even IKEA furniture takes more effort than expected.)&lt;/p&gt;




&lt;h3&gt;
  
  
  The “We Need This Yesterday” Syndrome
&lt;/h3&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%2Fpwf1az8lgas4ml1x8mu0.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%2Fpwf1az8lgas4ml1x8mu0.png" alt="Running late - Clock ticking" width="220" height="164"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"I also need it done in a DAY."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Unrealistic deadlines? Developers know them well. Whether it’s launching a site before Q4 or meeting a marketing campaign’s arbitrary date, clients often push timelines without realizing the corners that’ll need cutting. Hello, broken 404 pages and sleepless nights.&lt;/p&gt;




&lt;h3&gt;
  
  
  Communication Chaos
&lt;/h3&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%2Fppbrunmw3n3dvbaxbzat.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%2Fppbrunmw3n3dvbaxbzat.png" alt="Confused" width="314" height="200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Work closely with the COMMUNICATIONS AND MARKETING coordinator to GUIDE THE DEVELOPMENT TEAM in creating intuitive and user-friendly interfaces."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Let’s face it: not all developers are wordsmiths, and not all clients are tech-savvy. Miscommunication is inevitable. “I didn’t realize you needed all the images before starting…” or “Why can’t you read my mind?” It’s a classic case of two sides misunderstanding each other.&lt;/p&gt;




&lt;h3&gt;
  
  
  The Art of “Cheap and Fast”
&lt;/h3&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%2Fmbws4mu78k86ynx3y70u.gif" 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%2Fmbws4mu78k86ynx3y70u.gif" alt="Pick two" width="245" height="230"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"This should take you less than 20 minutes to complete."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Fast, cheap, high-quality – pick two. Yet clients often want all three. Developers are left navigating this impossible trifecta, balancing quality with the reality of timelines and budgets. Who’s ready for some creative compromises?&lt;/p&gt;




&lt;h2&gt;
  
  
  Freelance Frenzy
&lt;/h2&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%2F6fx11lbsynqq9bepcwex.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%2F6fx11lbsynqq9bepcwex.png" alt="Pls Fix" width="400" height="428"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"I need someone who[...] has a lot of free time... If you can meet with me today or over the weekend that improves your chances of getting hired."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Freelancers, this one’s for you: juggling demanding clients, impossible deadlines, and tax season all while undercharging because imposter syndrome is real. Oh, and the cherry on top? Clients who think you’re available 24/7.&lt;/p&gt;




&lt;h2&gt;
  
  
  The “Invisible Value” Dilemma
&lt;/h2&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%2F024fv7ls5pbgt3uc5hpg.gif" 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%2F024fv7ls5pbgt3uc5hpg.gif" alt="Handshake or fist bump" width="640" height="360"&gt;&lt;/a&gt;  &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"I'd like to be able to watch you via screen share as this work is done so I can learn."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;For every hour spent debugging or optimizing, there’s a client thinking you’re watching Netflix. The behind-the-scenes magic of development often goes unnoticed, leaving developers feeling undervalued and underappreciated.&lt;/p&gt;




&lt;h2&gt;
  
  
  Scope Creep Strikes Again
&lt;/h2&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%2F2x04xtt2pe3neaxrigkc.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%2F2x04xtt2pe3neaxrigkc.png" alt="All of It" width="200" height="200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"We have developed a CRM platform in a niche market and need to add SOME additional options and features for our customers."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Ah, scope creep – the silent killer of projects. Without firm boundaries, those “little additions” snowball into massive changes. One day you’re building a simple site, and the next, you’re managing a Frankenstein’s monster of features.&lt;/p&gt;

&lt;p&gt;In the world of web development, managing client expectations is the mountain developers must continually climb. It’s exhausting, exasperating, and, at times, utterly baffling. Yet, we keep going because, somewhere beyond the frustration, there’s a sense of accomplishment that makes it all worth it.&lt;/p&gt;

&lt;p&gt;Now, where did we put that coffee?&lt;/p&gt;

&lt;h1&gt;
  
  
  Artifact: Wireframes to Win the Day
&lt;/h1&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%2F2zhyb6rle2asmvtdsf7k.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%2F2zhyb6rle2asmvtdsf7k.png" alt="I got a solution" width="480" height="270"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Alright, here’s a little dev trick to deal with those vague client requests. When they’re talking in riddles, &lt;strong&gt;show, don’t tell&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Say there's a client with this request:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"Think of this website as a 'template' in that it will be used for many different kinds of restaurants, so the page should be content-independent (though the 'categories' of content will always be the same)."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  👨‍💻 Step 1: Work smart, not hard
&lt;/h2&gt;

&lt;p&gt;Head to &lt;a href="https://tools.webcrumbs.org/frontend-ai" rel="noopener noreferrer"&gt;Frontend AI&lt;/a&gt;, click "Ask AI" and paste the client's request in their own words. &lt;/p&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%2F3gww50pyrkvdaqhysahm.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%2F3gww50pyrkvdaqhysahm.png" alt="Frontend AI" width="800" height="392"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It will immediately generate a screen for you like this:&lt;/p&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%2Fhc9bl2l187xwmbx2ivr6.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%2Fhc9bl2l187xwmbx2ivr6.png" alt="Restaurant Template" width="800" height="524"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;⚠️ But wait! Don’t scare them off.&lt;/strong&gt;&lt;br&gt;
We don't wanna loose the job because the client doesn't like a color or a picture. And if it looks too finished, they might think “Job’s done, right?” Nope, not today.&lt;/p&gt;




&lt;h2&gt;
  
  
  🖤 Step 2: Strip it down
&lt;/h2&gt;

&lt;p&gt;So ask for a low fidelity black and write wireframe:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Generate a low fidelity wireframe. Remove details. Replace texts with placeholders. Remove background and add black borders. Remove the "image-" in the image-placeholder urls. Use only black text and transparent backgrounds.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Now you’ve got this clean slate to play with:&lt;/p&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%2Fq3jlkev3gn82lsdqw504.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%2Fq3jlkev3gn82lsdqw504.png" alt="Wireframe" width="800" height="524"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  🤝 Step 3: Let them tinker
&lt;/h2&gt;

&lt;p&gt;Feeling bold? Share a link and let the client tweak it. You’ll finally know what’s rattling around in their head.&lt;/p&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%2Fwi7p7j5cbb3hel0p9os9.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%2Fwi7p7j5cbb3hel0p9os9.png" alt="Share" width="800" height="978"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Why This Works?
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Clarity:&lt;/strong&gt; Clients stop being cryptic and start being helpful.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Control:&lt;/strong&gt; You steer the conversation and set the boundaries.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Confidence:&lt;/strong&gt; You look like the pro who has it all figured out.&lt;/li&gt;
&lt;/ol&gt;




&lt;p&gt;The most important part is that now you have something more concrete to start grasping what the client really wants and can better put a price and timeline on it.&lt;/p&gt;

&lt;p&gt;The client will also feel you're proactive and ahead of the competition for having delivered something upfront.&lt;/p&gt;

&lt;p&gt;And just like that, you’ve got a game plan. Let the others wing it—you’ve got wireframes. &lt;/p&gt;

&lt;p&gt;Time to show them who’s boss. 💪&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>productivity</category>
      <category>career</category>
      <category>frontend</category>
    </item>
    <item>
      <title>Testing hell 😱. Honest question. How do you survive? What's your secret?</title>
      <dc:creator>OpenSource</dc:creator>
      <pubDate>Fri, 18 Oct 2024 14:50:28 +0000</pubDate>
      <link>https://forem.com/opensourcee/testing-hell-how-do-you-survive-whats-your-secret-263c</link>
      <guid>https://forem.com/opensourcee/testing-hell-how-do-you-survive-whats-your-secret-263c</guid>
      <description>&lt;p&gt;We've just spent the worst couple of hours trying to work with Jest with SVG, nanoid, ... Anything that's slightly out of the ordinary Jest won't work and we found out we were spending more time debugging Jest than debugging our code. So... please help us. How do you survive the testing hell??&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>javascript</category>
      <category>webdev</category>
      <category>help</category>
    </item>
    <item>
      <title>Hacktoberfest is ending soon! ⏳ Tips for quick contributions</title>
      <dc:creator>OpenSource</dc:creator>
      <pubDate>Thu, 17 Oct 2024 07:21:00 +0000</pubDate>
      <link>https://forem.com/opensourcee/hacktoberfest-is-ending-soon-tips-for-quick-contributions-599i</link>
      <guid>https://forem.com/opensourcee/hacktoberfest-is-ending-soon-tips-for-quick-contributions-599i</guid>
      <description>&lt;h3&gt;
  
  
  Hacktoberfest is Almost Over,
&lt;/h3&gt;

&lt;h3&gt;
  
  
  But There's Still Time to Make Your Mark!
&lt;/h3&gt;

&lt;p&gt;Hacktoberfest is speeding to a close, but guess what? &lt;strong&gt;You can still contribute!&lt;/strong&gt; If you haven't jumped in yet, now’s your chance to join the fun and showcase your coding skills. 🌟&lt;/p&gt;

&lt;p&gt;We're offering a unique way to participate this year through &lt;strong&gt;&lt;a href="https://tools.webcrumbs.org/frontend-ai?open=hacktoberfest" rel="noopener noreferrer"&gt;Frontend AI&lt;/a&gt;&lt;/strong&gt; on the Webcrumbs platform. Forget the typical pull requests—&lt;strong&gt;build and submit your own templates&lt;/strong&gt; and be part of something bigger!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fbxm43q23kx64w53xas94.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fbxm43q23kx64w53xas94.png" alt="Contributions" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://discord.com/channels/1163137907759009803/1291056672973783131%20" class="ltag_cta ltag_cta--branded" rel="noopener noreferrer"&gt;👉 See all and cast your vote!&lt;/a&gt;
&lt;/p&gt;




&lt;h3&gt;
  
  
  How Do I Get Involved?
&lt;/h3&gt;

&lt;p&gt;It's easy:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Head to &lt;a href="https://tools.webcrumbs.org/frontend-ai?open=hacktoberfest" rel="noopener noreferrer"&gt;tools.webcrumbs.org&lt;/a&gt;&lt;/strong&gt; and fire up your creativity. Start building that perfect template using our intuitive tools.&lt;/li&gt;
&lt;li&gt;Once you’re happy with your creation, hit the &lt;strong&gt;“Submit your contribution”&lt;/strong&gt; button.&lt;/li&gt;
&lt;li&gt;Your work will go to our team for review, and once approved, your template goes live—featuring &lt;strong&gt;your name&lt;/strong&gt; as the author!&lt;/li&gt;
&lt;/ol&gt;




&lt;h3&gt;
  
  
  Why Should You Submit?
&lt;/h3&gt;

&lt;p&gt;Besides contributing to the open-source community, we’ve got some awesome rewards waiting for the &lt;strong&gt;top 3 contributors&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🏅 &lt;strong&gt;Hacktoberfest Badge&lt;/strong&gt; for your GitHub, LinkedIn, or CV.&lt;/li&gt;
&lt;li&gt;🌍 A &lt;strong&gt;special shoutout on our website and newsletter&lt;/strong&gt;, showcasing your contribution to the world.&lt;/li&gt;
&lt;li&gt;🎨 A &lt;strong&gt;unique ring around your avatar in Frontend AI&lt;/strong&gt;, marking you as a top contributor.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Oh, and your template will live on the platform under your name, for everyone to see and use. Pretty cool, right?&lt;/p&gt;




&lt;h3&gt;
  
  
  Don't Forget: The Official Hacktoberfest Badge is Up for Grabs!
&lt;/h3&gt;

&lt;p&gt;Yes, that’s right! Once your template is approved, we’ll send instructions to submit a PR on our GitHub. After it's accepted, you’ll receive the &lt;strong&gt;official Hacktoberfest badge&lt;/strong&gt; from &lt;a href="https://hacktoberfest.com" rel="noopener noreferrer"&gt;Hacktoberfest.com&lt;/a&gt;. Two badges in one go? Heck yes!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/webcrumbs-community/webcrumbs" class="ltag_cta ltag_cta--branded" rel="noopener noreferrer"&gt;🌟 Star our GitHub repository&lt;/a&gt;
&lt;/p&gt;




&lt;h3&gt;
  
  
  Ready to Get Started?
&lt;/h3&gt;

&lt;p&gt;Hacktoberfest only comes once a year, and there’s still time to be part of it. Visit &lt;a href="https://tools.webcrumbs.org" rel="noopener noreferrer"&gt;tools.webcrumbs.org&lt;/a&gt;, craft your template, and hit &lt;strong&gt;Submit&lt;/strong&gt;. Show the community what you’ve got and join us in celebrating the power of open source.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://tools.webcrumbs.org" class="ltag_cta ltag_cta--branded" rel="noopener noreferrer"&gt;🛠️ Roll up your sleeves and start building&lt;/a&gt;
&lt;/p&gt;




&lt;h1&gt;
  
  
  May the best contributors win! 🥳
&lt;/h1&gt;





&lt;div class="ltag__link"&gt;
  &lt;a href="/buildwebcrumbs" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__org__pic"&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F8638%2F1034f152-4863-4089-b6b7-1b3b268fe412.png" alt="Webcrumbs" width="800" height="800"&gt;
      &lt;div class="ltag__link__user__pic"&gt;
        &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1163671%2F018fc36a-1ac2-4e73-8d2f-5e564225b161.jpeg" alt="" width="800" height="800"&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/buildwebcrumbs/a-new-way-to-contribute-in-hacktoberfest-directly-at-frontend-ai-3e00" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;A New Way to Contribute to Hacktoberfest 2024: Directly at Frontend AI&lt;/h2&gt;
      &lt;h3&gt;OpenSource for Webcrumbs ・ Oct 2&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#hacktoberfest&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#javascript&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#beginners&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#frontend&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
      <category>hacktoberfest</category>
      <category>webdev</category>
      <category>beginners</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Good First Issue: Make your first open-source contribution</title>
      <dc:creator>OpenSource</dc:creator>
      <pubDate>Mon, 07 Oct 2024 14:45:01 +0000</pubDate>
      <link>https://forem.com/opensourcee/good-first-issue-make-your-first-open-source-contribution-2ocm</link>
      <guid>https://forem.com/opensourcee/good-first-issue-make-your-first-open-source-contribution-2ocm</guid>
      <description>&lt;p&gt;Hey, future open-source contributor! 👋&lt;/p&gt;

&lt;p&gt;Contributing to open-source can be intimidating at first—especially when projects have thousands of lines of code and deep conversations on issues. But that’s why &lt;em&gt;good first issues&lt;/em&gt; exist. They’re like a friendly invitation to dip your toes in and learn the ropes without getting lost in the weeds. Think of them as the training wheels to help you start riding.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fwvd0k5y4ug8qjyna3t0r.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fwvd0k5y4ug8qjyna3t0r.gif" alt="Confused cat typing furiously" width="200" height="200"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  What’s a Good First Issue, ANYWAY?
&lt;/h3&gt;

&lt;p&gt;It’s not about making things &lt;em&gt;easy&lt;/em&gt;, it’s about making them &lt;em&gt;approachable&lt;/em&gt;. A good first issue is clearly defined, has a manageable scope, and (hopefully) comes with helpful pointers on where to begin. &lt;/p&gt;

&lt;p&gt;It might involve fixing small bugs, improving documentation, or refactoring a bit of code—just enough to get you familiar without feeling overwhelmed. Or... building templates!&lt;/p&gt;




&lt;h3&gt;
  
  
  A Real Example
&lt;/h3&gt;

&lt;p&gt;This year, Hacktoberfest has a new twist. Instead of diving into traditional GitHub pull requests, you can contribute templates directly through &lt;strong&gt;Frontend AI&lt;/strong&gt; on the Webcrumbs platform! Just visit &lt;a href="https://tools.webcrumbs.org" rel="noopener noreferrer"&gt;tools.webcrumbs.org&lt;/a&gt;, build a template, and hit &lt;strong&gt;Submit&lt;/strong&gt;.&lt;/p&gt;


&lt;div class="ltag__link"&gt;
  &lt;a href="/buildwebcrumbs" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__org__pic"&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F8638%2F1034f152-4863-4089-b6b7-1b3b268fe412.png" alt="Webcrumbs" width="800" height="800"&gt;
      &lt;div class="ltag__link__user__pic"&gt;
        &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1163671%2F018fc36a-1ac2-4e73-8d2f-5e564225b161.jpeg" alt="" width="800" height="800"&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/buildwebcrumbs/a-new-way-to-contribute-in-hacktoberfest-directly-at-frontend-ai-3e00" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;A New Way to Contribute to Hacktoberfest 2024: Directly at Frontend AI&lt;/h2&gt;
      &lt;h3&gt;OpenSource for Webcrumbs ・ Oct 2&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#hacktoberfest&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#javascript&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#beginners&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#frontend&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


&lt;p&gt;How does it work? It’s simple:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Create Your Template&lt;/strong&gt;: Fire up Frontend AI and build a component or layout that you think could be useful for other devs. No need for complicated setup—everything happens right in the browser.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Submit Your Work&lt;/strong&gt;: Once your template looks polished, click &lt;strong&gt;Submit Your Contribution&lt;/strong&gt; via the Hacktoberfest button.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Get Approved &amp;amp; Published&lt;/strong&gt;: After a quick review, your template goes live on our platform under your name, so other developers can see (and maybe even fork) your work!&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;And if you’re aiming for that shiny Hacktoberfest badge, don’t worry! We’ll send you instructions on how to complete a PR to our GitHub once your template is approved.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fxd9co9zzhxbhkaohypfm.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fxd9co9zzhxbhkaohypfm.gif" alt="Excited SpongeBob" width="498" height="378"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Why Contribute?
&lt;/h3&gt;

&lt;p&gt;Whether it’s fixing a tiny bug or adding a brand new feature, making your first contribution is about learning. Good first issues make it easier to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Get familiar with new codebases.&lt;/li&gt;
&lt;li&gt;See how project maintainers structure their repos.&lt;/li&gt;
&lt;li&gt;Gain confidence with small, tangible contributions.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And at the end of it all, you’re officially a contributor. &lt;br&gt;
Not bad, right?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fuoxaqnbcpy92ntezsrop.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fuoxaqnbcpy92ntezsrop.gif" alt="Approval dance" width="500" height="226"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Ready to Make Your First Contribution?
&lt;/h3&gt;

&lt;p&gt;Head over to &lt;a href="https://tools.webcrumbs.org" rel="noopener noreferrer"&gt;tools.webcrumbs.org&lt;/a&gt;, build something cool, and submit your first open-source template. The best way to learn is by doing, and we’re here to help every step of the way.&lt;/p&gt;

&lt;p&gt;See you in the code! 💛&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>programming</category>
      <category>javascript</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>A hack to Hacktoberfest: how to win a badge faster</title>
      <dc:creator>OpenSource</dc:creator>
      <pubDate>Wed, 02 Oct 2024 17:41:28 +0000</pubDate>
      <link>https://forem.com/opensourcee/a-hack-to-hacktoberfest-how-to-win-a-badge-faster-4i95</link>
      <guid>https://forem.com/opensourcee/a-hack-to-hacktoberfest-how-to-win-a-badge-faster-4i95</guid>
      <description>&lt;p&gt;Hacktoberfest is back, and there’s a new way to join in: contribute directly through &lt;strong&gt;Frontend AI&lt;/strong&gt; on the Webcrumbs platform. Here’s how to get started in just 3 minutes:&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Visit Frontend AI
&lt;/h3&gt;

&lt;p&gt;Go to &lt;a href="https://tools.webcrumbs.org" rel="noopener noreferrer"&gt;tools.webcrumbs.org&lt;/a&gt; and start building your template. You can create components, design layouts, and see real-time previews.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: Submit Your Contribution
&lt;/h3&gt;

&lt;p&gt;Once your template is polished, hit the “&lt;strong&gt;Submit your contribution&lt;/strong&gt;” button through the Hacktoberfest menu. Your work will be reviewed, and if approved, it’ll be live on the platform with your name as the author!&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3: Gain Recognition and Rewards
&lt;/h3&gt;

&lt;p&gt;Top 3 contributors will get a &lt;strong&gt;Hacktoberfest Badge&lt;/strong&gt;, a &lt;strong&gt;special mention on our website and newsletter&lt;/strong&gt;, and a &lt;strong&gt;unique avatar ring&lt;/strong&gt; in Frontend AI. Plus, your template will feature your name, giving you full credit.&lt;/p&gt;

&lt;p&gt;Find the full guide here:&lt;/p&gt;


&lt;div class="ltag__link"&gt;
  &lt;a href="/buildwebcrumbs" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__org__pic"&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F8638%2F1034f152-4863-4089-b6b7-1b3b268fe412.png" alt="Webcrumbs" width="" height=""&gt;
      &lt;div class="ltag__link__user__pic"&gt;
        &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1163671%2F018fc36a-1ac2-4e73-8d2f-5e564225b161.jpeg" alt="" width="" height=""&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/buildwebcrumbs/a-new-way-to-contribute-in-hacktoberfest-directly-at-frontend-ai-3e00" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;A New Way to Contribute in Hacktoberfest: Directly at Frontend AI&lt;/h2&gt;
      &lt;h3&gt;OpenSource for Webcrumbs ・ Oct 2&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#hacktoberfest&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#javascript&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#beginners&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#frontend&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


&lt;h3&gt;
  
  
  Ready to Join?
&lt;/h3&gt;

&lt;p&gt;Head over to &lt;a href="https://tools.webcrumbs.org" rel="noopener noreferrer"&gt;tools.webcrumbs.org&lt;/a&gt;, build something awesome, and submit it! Make sure to follow our submission guidelines and release your work under the MIT License to keep it open-source.&lt;/p&gt;

&lt;p&gt;Happy coding, and let’s make this Hacktoberfest one to remember! 🎉&lt;/p&gt;

</description>
      <category>hacktoberfest</category>
      <category>beginners</category>
      <category>webdev</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>A New Way to Contribute to Hacktoberfest 2024: Directly at Frontend AI</title>
      <dc:creator>OpenSource</dc:creator>
      <pubDate>Wed, 02 Oct 2024 15:10:40 +0000</pubDate>
      <link>https://forem.com/buildwebcrumbs/a-new-way-to-contribute-in-hacktoberfest-directly-at-frontend-ai-3e00</link>
      <guid>https://forem.com/buildwebcrumbs/a-new-way-to-contribute-in-hacktoberfest-directly-at-frontend-ai-3e00</guid>
      <description>&lt;p&gt;Hacktoberfest is back, and this year brings an exciting new way for developers to participate. &lt;strong&gt;Instead of the traditional GitHub pull requests, you can now create and submit templates directly through Frontend AI on the Webcrumbs platform&lt;/strong&gt;. Just head over to &lt;a href="https://tools.webcrumbs.org" rel="noopener noreferrer"&gt;tools.webcrumbs.org&lt;/a&gt;, code your template, and hit "Submit" when you’re ready!&lt;/p&gt;




&lt;h2&gt;
  
  
  How it works?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fd39g93acxo5n2jgiwqvx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fd39g93acxo5n2jgiwqvx.png" alt="How it works" width="800" height="270"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Jumping into Hacktoberfest through Frontend AI is simple:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Go to &lt;a href="https://tools.webcrumbs.org" rel="noopener noreferrer"&gt;tools.webcrumbs.org&lt;/a&gt;&lt;/strong&gt; and start building your template using Frontend AI. Polish and refine your creation until you’re happy with it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click &lt;strong&gt;“Submit your contribution”&lt;/strong&gt; through the Hacktoberfest button.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Your submission goes straight to our team for review, and once it’s approved, your template will be published on the platform under your username!&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Why participate?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fgmmfdq998w34duhtno6h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fgmmfdq998w34duhtno6h.png" alt="Awards" width="800" height="409"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Besides sharing your work with the world, there are some exciting rewards for the top 3 contributors, chosen by Webcrumbs' &lt;a href="https://discord.com/invite/ZCj5hFv8xV" rel="noopener noreferrer"&gt;Discord community&lt;/a&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;🏅 &lt;strong&gt;Hacktoberfest Badge&lt;/strong&gt; for your GitHub, LinkedIn, or CV.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;🌟 A &lt;strong&gt;special mention on our website and newsletter&lt;/strong&gt;, sharing your work with the community.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;💫 A &lt;strong&gt;unique ring around your avatar in Frontend AI&lt;/strong&gt; to mark your place among top contributors.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Your template will also include your name as the author, giving you full credit for your contribution and making it easier for others to find your work.&lt;/p&gt;




&lt;h2&gt;
  
  
  Will I gain the official Hacktoberfest badge?
&lt;/h2&gt;

&lt;p&gt;Yes! After your template is approved, you'll receive an email with instructions on how to make a PR in our &lt;a href="https://github.com/webcrumbs-community/webcrumbs" rel="noopener noreferrer"&gt;repository on GitHub&lt;/a&gt;. Once your PR is accepted, you’ll be eligible to receive the official Hacktoberfest badge, as per &lt;a href="https://hacktoberfest.com/" rel="noopener noreferrer"&gt;the official rules&lt;/a&gt;, adding even more value to your contribution!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/webcrumbs-community/webcrumbs" class="ltag_cta ltag_cta--branded" rel="noopener noreferrer"&gt;🌟 Star our GitHub repository&lt;/a&gt;
&lt;/p&gt;




&lt;h2&gt;
  
  
  How to get started?
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 1: Visit Frontend AI
&lt;/h3&gt;

&lt;p&gt;Start by visiting &lt;a href="https://tools.webcrumbs.org" rel="noopener noreferrer"&gt;tools.webcrumbs.org&lt;/a&gt;. You’ll find all the tools you need to create beautiful, functional templates—from simple components to more complex layouts.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: Create &amp;amp; Iterate
&lt;/h3&gt;

&lt;p&gt;Let your creativity flow! Design components that showcase your skills and adhere to best practices. You can preview, tweak, and refine your work in real time until you’re ready to hit &lt;strong&gt;“Submit.”&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3: Submit Your Template
&lt;/h3&gt;

&lt;p&gt;Click the &lt;strong&gt;“Submit your contribution”&lt;/strong&gt; button, and voilà—you’ve just entered Hacktoberfest! Our team will review your submission, and once it’s approved, it’ll be live on our platform with your name as the author.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 4: Spread the Word
&lt;/h3&gt;

&lt;p&gt;Share your template on social media, tag us, and let the community know you’ve joined the Webcrumbs Hacktoberfest challenge! The more buzz your template creates, the better your chances of becoming one of the top 3 contributors.&lt;/p&gt;




&lt;h2&gt;
  
  
  Guidelines for Submissions
&lt;/h2&gt;

&lt;p&gt;To maintain quality and encourage open collaboration, all submitted templates must be released under the &lt;strong&gt;MIT License&lt;/strong&gt;. This makes your work truly open source, allowing others to learn from and iterate on your template, further contributing to the community spirit.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2F8mb2vo0haocm0a4k1het.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2F8mb2vo0haocm0a4k1het.png" alt="Guidelines" width="800" height="502"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Ready to Start?
&lt;/h2&gt;

&lt;p&gt;Frontend AI makes it easy for anyone to contribute, whether you’re experienced or just starting out. &lt;/p&gt;

&lt;p&gt;So, get started today, and let’s make Hacktoberfest a time to share what you’ve built, inspire others, and showcase the power of community.&lt;/p&gt;

&lt;p&gt;Visit &lt;a href="https://tools.webcrumbs.org" rel="noopener noreferrer"&gt;tools.webcrumbs.org&lt;/a&gt;, fire up Frontend AI, and show us what you’ve got! We can’t wait to see what you create.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Happy coding, and may the best contributions win!&lt;/strong&gt; 🥳&lt;/p&gt;

</description>
      <category>hacktoberfest</category>
      <category>javascript</category>
      <category>beginners</category>
      <category>frontend</category>
    </item>
    <item>
      <title>How to start a Shadcn project from scratch</title>
      <dc:creator>OpenSource</dc:creator>
      <pubDate>Mon, 23 Sep 2024 00:04:38 +0000</pubDate>
      <link>https://forem.com/opensourcee/how-to-start-a-shadcn-project-from-scratch-44ln</link>
      <guid>https://forem.com/opensourcee/how-to-start-a-shadcn-project-from-scratch-44ln</guid>
      <description>&lt;p&gt;To set up a project from scratch using &lt;strong&gt;React&lt;/strong&gt;, &lt;strong&gt;Tailwind CSS&lt;/strong&gt;, and &lt;strong&gt;Shadcn&lt;/strong&gt;, but without using any pre-built boilerplates like &lt;code&gt;create-next-app&lt;/code&gt; or &lt;code&gt;create-react-app&lt;/code&gt;, you can manually configure the setup using &lt;strong&gt;Webpack&lt;/strong&gt; or other similar bundlers. Below is a guide for setting this up with &lt;strong&gt;Webpack&lt;/strong&gt;:&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Initialize an npm Project
&lt;/h3&gt;

&lt;p&gt;Create a new project directory and initialize a new npm project:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;mkdir &lt;/span&gt;my-shadcn-app
&lt;span class="nb"&gt;cd &lt;/span&gt;my-shadcn-app
npm init &lt;span class="nt"&gt;-y&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 2: Install React and Dependencies
&lt;/h3&gt;

&lt;p&gt;Install &lt;strong&gt;React&lt;/strong&gt;, &lt;strong&gt;ReactDOM&lt;/strong&gt;, &lt;strong&gt;webpack&lt;/strong&gt;, and &lt;strong&gt;webpack-dev-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 &lt;span class="nb"&gt;install &lt;/span&gt;react react-dom
npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--save-dev&lt;/span&gt; webpack webpack-cli webpack-dev-server babel-loader @babel/core @babel/preset-env @babel/preset-react html-webpack-plugin
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 3: Install Tailwind CSS
&lt;/h3&gt;

&lt;p&gt;Install &lt;strong&gt;Tailwind CSS&lt;/strong&gt; and its peer 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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This creates the &lt;code&gt;tailwind.config.js&lt;/code&gt; file.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 4: Configure Webpack
&lt;/h3&gt;

&lt;p&gt;Create a &lt;code&gt;webpack.config.js&lt;/code&gt; file for configuring Webpack:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;touch &lt;/span&gt;webpack.config.js
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Inside &lt;code&gt;webpack.config.js&lt;/code&gt;, add the following:&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="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;path&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;path&lt;/span&gt;&lt;span class="dl"&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;HtmlWebpackPlugin&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;html-webpack-plugin&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&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;entry&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./src/index.jsx&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;output&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;filename&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;bundle.js&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;path&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;resolve&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;__dirname&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;dist&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="na"&gt;mode&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;development&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;module&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;rules&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;test&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sr"&gt;/&lt;/span&gt;&lt;span class="se"&gt;\.(&lt;/span&gt;&lt;span class="sr"&gt;js|jsx&lt;/span&gt;&lt;span class="se"&gt;)&lt;/span&gt;&lt;span class="sr"&gt;$/&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;exclude&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sr"&gt;/node_modules/&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;use&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
          &lt;span class="na"&gt;loader&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;babel-loader&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
          &lt;span class="na"&gt;options&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="na"&gt;presets&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="s1"&gt;@babel/preset-env&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="s1"&gt;@babel/preset-react&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="p"&gt;},&lt;/span&gt;
      &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="na"&gt;test&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sr"&gt;/&lt;/span&gt;&lt;span class="se"&gt;\.&lt;/span&gt;&lt;span class="sr"&gt;css$/&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;use&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="s1"&gt;style-loader&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="s1"&gt;css-loader&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="s1"&gt;postcss-loader&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="p"&gt;},&lt;/span&gt;
  &lt;span class="na"&gt;resolve&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;extensions&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="s1"&gt;.js&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="s1"&gt;.jsx&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="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="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;HtmlWebpackPlugin&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
      &lt;span class="na"&gt;template&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./public/index.html&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="na"&gt;devServer&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;static&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./dist&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;hot&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&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;h3&gt;
  
  
  Step 5: Configure Babel
&lt;/h3&gt;

&lt;p&gt;Create a &lt;code&gt;.babelrc&lt;/code&gt; file for Babel configuration:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;touch&lt;/span&gt; .babelrc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Inside &lt;code&gt;.babelrc&lt;/code&gt;, add the following:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"presets"&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="s2"&gt;"@babel/preset-env"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"@babel/preset-react"&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 6: Configure Tailwind CSS
&lt;/h3&gt;

&lt;p&gt;Update your &lt;code&gt;tailwind.config.js&lt;/code&gt; file to include the paths to your components:&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;code&gt;tailwind.config.js&lt;/code&gt;:
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="cm"&gt;/** @type {import('tailwindcss').Config} */&lt;/span&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="s1"&gt;./src/**/*.{js,jsx,ts,tsx}&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="s1"&gt;./public/index.html&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;h3&gt;
  
  
  Step 7: Set Up Your Project Structure
&lt;/h3&gt;

&lt;p&gt;Create the necessary folders and files for your React application:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;mkdir &lt;/span&gt;src public
&lt;span class="nb"&gt;touch &lt;/span&gt;src/index.jsx src/App.jsx src/index.css public/index.html
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  &lt;code&gt;public/index.html&lt;/code&gt;:
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;html&lt;/span&gt; &lt;span class="na"&gt;lang=&lt;/span&gt;&lt;span class="s"&gt;"en"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;head&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;charset=&lt;/span&gt;&lt;span class="s"&gt;"UTF-8"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"viewport"&lt;/span&gt; &lt;span class="na"&gt;content=&lt;/span&gt;&lt;span class="s"&gt;"width=device-width, initial-scale=1.0"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;title&amp;gt;&lt;/span&gt;My Shadcn App&lt;span class="nt"&gt;&amp;lt;/title&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;body&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"root"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  &lt;code&gt;src/index.jsx&lt;/code&gt;:
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&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="s1"&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;ReactDOM&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;react-dom&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;App&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./App&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="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./index.css&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nx"&gt;ReactDOM&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;render&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;App&lt;/span&gt; &lt;span class="o"&gt;/&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getElementById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;root&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;h4&gt;
  
  
  &lt;code&gt;src/App.jsx&lt;/code&gt;:
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&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="s1"&gt;react&lt;/span&gt;&lt;span class="dl"&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;App&lt;/span&gt; &lt;span class="o"&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="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="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;div&lt;/span&gt; &lt;span class="nx"&gt;className&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;p-6&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;h1&lt;/span&gt; &lt;span class="nx"&gt;className&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-3xl font-bold&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="nx"&gt;Hello&lt;/span&gt; &lt;span class="nx"&gt;Shadcn&lt;/span&gt;&lt;span class="o"&gt;!&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/h1&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/div&lt;/span&gt;&lt;span class="err"&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;App&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  &lt;code&gt;src/index.css&lt;/code&gt;:
&lt;/h4&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;h3&gt;
  
  
  Step 8: Install Shadcn Components
&lt;/h3&gt;

&lt;p&gt;Now that you have the basic setup, install the &lt;strong&gt;Shadcn&lt;/strong&gt; package and its components. Install the Shadcn CLI and Tailwind components for your React project:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;Follow the on-screen instructions to install components and generate the Shadcn library for your project.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 9: Update npm Scripts
&lt;/h3&gt;

&lt;p&gt;Update your &lt;code&gt;package.json&lt;/code&gt; to add a &lt;code&gt;start&lt;/code&gt; script to run the Webpack development server:&lt;br&gt;
&lt;/p&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;"start"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"webpack serve --open"&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;h3&gt;
  
  
  Step 10: Start the Development Server
&lt;/h3&gt;

&lt;p&gt;Run the development server with:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;This should open up your app in the browser, and you'll see "Hello Shadcn!" styled with Tailwind CSS. You can now continue adding Shadcn components to your React project.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;(Generated with AI assistance)&lt;/em&gt;&lt;/p&gt;

</description>
      <category>tailwindcss</category>
      <category>webdev</category>
      <category>javascript</category>
      <category>beginners</category>
    </item>
    <item>
      <title>What's new in Frontend AI?</title>
      <dc:creator>OpenSource</dc:creator>
      <pubDate>Tue, 06 Aug 2024 16:24:42 +0000</pubDate>
      <link>https://forem.com/buildwebcrumbs/whats-new-in-frontend-ai-4m90</link>
      <guid>https://forem.com/buildwebcrumbs/whats-new-in-frontend-ai-4m90</guid>
      <description>&lt;p&gt;We have been prepping up our big launch on &lt;a href="https://www.producthunt.com/posts/frontend-ai" rel="noopener noreferrer"&gt;Product Hunt&lt;/a&gt; (today! 🎉), and so we've added some nice features to &lt;strong&gt;Frontend AI ✨&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Here are our favorites:&lt;br&gt;
1️⃣ Use our suggestions to generate or iterate over your component&lt;br&gt;
2️⃣ Enable images (or disable and see placeholders instead)&lt;br&gt;
3️⃣ See funny avatars when you ask for a component with a photo&lt;br&gt;
4️⃣ Explore a range of beautiful backgrounds specially for you&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/HO3BC3pP1KE"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Try with no login required! Support us if you enjoy it:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.producthunt.com/posts/frontend-ai" class="ltag_cta ltag_cta--branded" rel="noopener noreferrer"&gt;See us on Product Hunt&lt;/a&gt;
&lt;/p&gt;

</description>
      <category>tailwindcss</category>
      <category>webdev</category>
      <category>javascript</category>
      <category>beginners</category>
    </item>
    <item>
      <title>We cooked our mobile app in 1 week</title>
      <dc:creator>OpenSource</dc:creator>
      <pubDate>Tue, 30 Jul 2024 16:18:45 +0000</pubDate>
      <link>https://forem.com/buildwebcrumbs/we-cooked-our-mobile-app-in-1-week-2igd</link>
      <guid>https://forem.com/buildwebcrumbs/we-cooked-our-mobile-app-in-1-week-2igd</guid>
      <description>&lt;p&gt;Will you help us with your feedback?&lt;/p&gt;

&lt;p&gt;🧡 Try our Frontend AI &lt;a href="https://tools.webcrumbs.org/frontend-ai" rel="noopener noreferrer"&gt;https://tools.webcrumbs.org/frontend-ai&lt;/a&gt;&lt;br&gt;
💙 Discord invite: &lt;a href="https://discord.com/invite/ZCj5hFv8xV" rel="noopener noreferrer"&gt;https://discord.com/invite/ZCj5hFv8xV&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6no54wtb3fjjzthtu17i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6no54wtb3fjjzthtu17i.png" alt="Image description" width="800" height="601"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>discuss</category>
    </item>
    <item>
      <title>T-shirt Tuesday!</title>
      <dc:creator>OpenSource</dc:creator>
      <pubDate>Tue, 30 Jul 2024 12:23:02 +0000</pubDate>
      <link>https://forem.com/buildwebcrumbs/t-shirt-tuesday-18pi</link>
      <guid>https://forem.com/buildwebcrumbs/t-shirt-tuesday-18pi</guid>
      <description>&lt;p&gt;Welcome back to T-Shirt Tuesday, our weekly post inspired by the brilliant minds in our &lt;a href="https://discord.com/invite/ZCj5hFv8xV" rel="noopener noreferrer"&gt;Discord Community&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Every week (that we don't miss the boat), we showcase fun and unique phrases that you'd love to see on a t-shirt.&lt;/p&gt;

&lt;p&gt;This week's highlight features a piece of code spotted by &lt;a class="mentioned-user" href="https://dev.to/arindam_1729"&gt;@arindam_1729&lt;/a&gt; that resonates with many developers:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;if (tired) {
  coffee();
} else {
  code();
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now, it's your turn:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What witty or inspirational phrase would you proudly wear on a t-shirt?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Drop your suggestions in the comments below!&lt;/p&gt;

&lt;p&gt;And ⭐ &lt;a href="https://discord.com/invite/ZCj5hFv8xV" rel="noopener noreferrer"&gt;join our Discord&lt;/a&gt; if you haven't yet!&lt;/p&gt;

</description>
      <category>jokes</category>
      <category>watercooler</category>
      <category>discuss</category>
      <category>tshirt</category>
    </item>
  </channel>
</rss>
