<?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: Abhi Dadhaniya</title>
    <description>The latest articles on DEV Community by Abhi Dadhaniya (@abhidadhaniya23).</description>
    <link>https://dev.to/abhidadhaniya23</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%2F653864%2F27aaab80-2279-4d67-a5e2-4ff272e711b5.jpeg</url>
      <title>DEV Community: Abhi Dadhaniya</title>
      <link>https://dev.to/abhidadhaniya23</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/abhidadhaniya23"/>
    <language>en</language>
    <item>
      <title>Build your own python package easily</title>
      <dc:creator>Abhi Dadhaniya</dc:creator>
      <pubDate>Tue, 04 Feb 2025 18:28:29 +0000</pubDate>
      <link>https://dev.to/abhidadhaniya23/build-your-own-python-package-easily-5c05</link>
      <guid>https://dev.to/abhidadhaniya23/build-your-own-python-package-easily-5c05</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9urbqhg9sd62fzu6c1xj.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%2F9urbqhg9sd62fzu6c1xj.png" alt="Build your own python package" width="580" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Have you ever wondered how developers turn their code into shareable Python packages? Maybe you've thought, &lt;em&gt;"Why is packaging so complicated?"&lt;/em&gt; Don't worry—it’s not as scary as it sounds. In this blog, I'll guide you through the process of building and publishing a Python package using &lt;strong&gt;&lt;a href="https://python-poetry.org/" rel="noopener noreferrer"&gt;Poetry&lt;/a&gt;&lt;/strong&gt;, a powerful dependency management tool.&lt;/p&gt;

&lt;p&gt;By the end of this post, you’ll have a clear understanding of how to package your code, manage dependencies, and publish it locally or to a private repository.&lt;/p&gt;




&lt;h2&gt;
  
  
  Setting Up the Project
&lt;/h2&gt;

&lt;p&gt;Every great package starts with a structured project setup. Here’s how you can kick things off:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create a directory for your project:
&lt;/li&gt;
&lt;/ol&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;the-good-stuff &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;cd &lt;/span&gt;the-good-stuff
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Initialize a Git repository:
&lt;/li&gt;
&lt;/ol&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;ol&gt;
&lt;li&gt;Create essential files and folders:
&lt;/li&gt;
&lt;/ol&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;README.md
   &lt;span class="nb"&gt;mkdir &lt;/span&gt;src tests
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Folder structure should look like this:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;   the-good-stuff/
   ├── README.md
   ├── src/
   │   └── the_good_stuff/
   │       └── __init__.py
   └── tests/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;Pro tip: Keeping your code under the &lt;code&gt;src/&lt;/code&gt; directory helps avoid import issues later.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Configuring Poetry
&lt;/h2&gt;

&lt;p&gt;Poetry simplifies dependency management and packaging for Python projects. Here's how to get started:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Install Poetry using &lt;code&gt;pip&lt;/code&gt;:
&lt;/li&gt;
&lt;/ol&gt;

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

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Initialize your package:
&lt;/li&gt;
&lt;/ol&gt;

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

&lt;/div&gt;



&lt;p&gt;Answer the prompts to set up your project metadata such as package name, version, author, license, description, and dependencies.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Your &lt;code&gt;pyproject.toml&lt;/code&gt; file should look something like this after setup:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight toml"&gt;&lt;code&gt;   &lt;span class="nn"&gt;[tool.poetry]&lt;/span&gt;
   &lt;span class="py"&gt;name&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"the-good-stuff"&lt;/span&gt;
   &lt;span class="py"&gt;version&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"0.1.0"&lt;/span&gt;
   &lt;span class="py"&gt;description&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"A Python package for advanced utility functions"&lt;/span&gt;
   &lt;span class="py"&gt;authors&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s"&gt;"Your Name &amp;lt;your.email@example.com&amp;gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

   &lt;span class="nn"&gt;[tool.poetry.dependencies]&lt;/span&gt;
   &lt;span class="py"&gt;python&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"^3.9"&lt;/span&gt;

   &lt;span class="nn"&gt;[tool.poetry.group.dev.dependencies]&lt;/span&gt;
   &lt;span class="py"&gt;pytest&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"^7.0.0"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;Why Poetry? It handles dependency resolution like a champ, making version conflicts a thing of the past.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Managing Dependencies
&lt;/h2&gt;

&lt;p&gt;Need external libraries? Poetry makes it effortless:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;To add a runtime dependency:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;  poetry add requests
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;For development dependencies (like linters or test frameworks):
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;  poetry add pytest &lt;span class="nt"&gt;--group&lt;/span&gt; dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Run all commands within a virtual environment:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;Yep, no &lt;code&gt;pip install&lt;/code&gt; or &lt;code&gt;requirements.txt&lt;/code&gt; chaos here.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Writing Core Functionality
&lt;/h2&gt;

&lt;p&gt;Put your magic inside the &lt;code&gt;src/the_good_stuff/&lt;/code&gt; folder. Let’s create a utility module with intermediate examples:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;src/the_good_stuff/utils.py:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;datetime&lt;/span&gt;

&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;DateUtils&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nd"&gt;@staticmethod&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;current_datetime&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
        &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;Returns the current date and time.&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;datetime&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;datetime&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;now&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;StringUtils&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nd"&gt;@staticmethod&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;reverse_string&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;Reverses the given string.&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;[::&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;src/the_good_stuff/&lt;/strong&gt;*&lt;strong&gt;&lt;em&gt;init&lt;/em&gt;&lt;/strong&gt;&lt;em&gt;**.py:&lt;/em&gt;*&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;.utils&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;DateUtils&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;StringUtils&lt;/span&gt;

&lt;span class="n"&gt;__all__&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;DateUtils&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;StringUtils&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;Remember: Clear, well-documented functions make your package more developer-friendly.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Testing the Package
&lt;/h2&gt;

&lt;p&gt;No package is complete without testing. Let's use &lt;code&gt;pytest&lt;/code&gt; to validate our functionality:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;tests/test_utils.py:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;the_good_stuff&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;DateUtils&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;StringUtils&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;test_current_datetime&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="k"&gt;assert&lt;/span&gt; &lt;span class="n"&gt;DateUtils&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;current_datetime&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="ow"&gt;is&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;test_reverse_string&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="k"&gt;assert&lt;/span&gt; &lt;span class="n"&gt;StringUtils&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;reverse_string&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;hello&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;olleh&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Run tests with:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;Bonus: Add automated tests for confidence before every release.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Packaging and Publishing
&lt;/h2&gt;

&lt;p&gt;Finally, it’s time to package and publish your masterpiece!&lt;/p&gt;

&lt;h3&gt;
  
  
  Local Installation
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Build the package:
&lt;/li&gt;
&lt;/ol&gt;

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

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Install the package locally using &lt;code&gt;pip&lt;/code&gt;:
&lt;strong&gt;Using absolute path:&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;   pip &lt;span class="nb"&gt;install&lt;/span&gt; /absolute/path/to/the-good-stuff
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Using relative path:&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;   pip &lt;span class="nb"&gt;install&lt;/span&gt; ../path-to/the-good-stuff
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;⚠️ &lt;strong&gt;Warning:&lt;/strong&gt; Installing the package globally is recommended to avoid potential virtual environment conflicts.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Usage of Your Masterpiece
&lt;/h3&gt;

&lt;p&gt;Here’s how you can use the package after installation:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;the_good_stuff&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;DateUtils&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;StringUtils&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Current DateTime:&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;DateUtils&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;current_datetime&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Reversed String:&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;StringUtils&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;reverse_string&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ChatGPT&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Publishing to a Private Repository
&lt;/h3&gt;

&lt;p&gt;Configure the private repository in Poetry:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   poetry config repositories.my-private-repo https://my-repo-url.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Publish your package:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   poetry publish &lt;span class="nt"&gt;--repository&lt;/span&gt; my-private-repo
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To install a package from a specific branch of a GitHub repo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   poetry add git+https://github.com/your-repo/the-good-stuff.git@branch-name
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;Tip: Always use secure repositories for sensitive or internal code.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Version Management
&lt;/h2&gt;

&lt;p&gt;Poetry makes versioning simple:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Bump the patch version:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;  poetry version patch
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Bump the minor version:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;  poetry version minor
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Bump the major version:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;  poetry version major
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Tip:&lt;/strong&gt; Stick to semantic versioning (&lt;code&gt;MAJOR.MINOR.PATCH&lt;/code&gt;) for clarity.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Tips and Best Practices
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Semantic Versioning:&lt;/strong&gt; Stick to a versioning format like &lt;code&gt;MAJOR.MINOR.PATCH&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dependency Groups:&lt;/strong&gt; Use development and production dependency groups for cleaner environments.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Documentation:&lt;/strong&gt; Maintain a thorough &lt;code&gt;README.md&lt;/code&gt; to help users integrate your package.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Linting:&lt;/strong&gt; Tools like &lt;code&gt;flake8&lt;/code&gt; ensure your code follows best practices.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Security:&lt;/strong&gt; Regularly audit dependencies to catch vulnerabilities.&lt;/li&gt;
&lt;/ul&gt;




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

&lt;p&gt;We’ve walked through project setup, dependency management, testing, and publishing. Now, you have the tools to create polished, shareable Python packages. What’s next? How about refining your project or experimenting with more advanced features like custom entry points?&lt;/p&gt;

&lt;p&gt;Got questions or ideas? Drop them in the comments below! Let’s keep learning together and help each other grow. Happy coding!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>React.js Architecture: A Beginner-Friendly Guide</title>
      <dc:creator>Abhi Dadhaniya</dc:creator>
      <pubDate>Thu, 11 Jan 2024 10:36:08 +0000</pubDate>
      <link>https://dev.to/abhidadhaniya23/reactjs-architecture-a-beginner-friendly-guide-574c</link>
      <guid>https://dev.to/abhidadhaniya23/reactjs-architecture-a-beginner-friendly-guide-574c</guid>
      <description>&lt;h4&gt;
  
  
  1. &lt;strong&gt;Components: The Building Blocks&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;In React.js, everything revolves around components. Think of a component as a reusable, self-contained piece of your user interface. Components can be as simple as a button or as complex as an entire page.&lt;/p&gt;

&lt;h4&gt;
  
  
  2. &lt;strong&gt;The Virtual DOM: Optimizing Rendering&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;What is the Virtual DOM?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The Virtual DOM is like a lightweight copy of the actual DOM (Document Object Model). When you make changes to your UI in React, these changes are first applied to the Virtual DOM.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why Virtual DOM?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Manipulating the real DOM can be slow and resource-intensive. The Virtual DOM serves as a middleman, allowing React to batch and optimize changes before committing them to the actual DOM.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How Does it Work?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;When you update your React app, a new Virtual DOM representation is created.&lt;/li&gt;
&lt;li&gt;React compares this new Virtual DOM with the previous one (diffing).&lt;/li&gt;
&lt;li&gt;Only the differences are identified (diffing algorithm), reducing the number of changes that need to be made in the actual DOM.&lt;/li&gt;
&lt;li&gt;React then updates the real DOM efficiently, resulting in better performance.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  3. &lt;strong&gt;State Management: Handling Component Data&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;What is State?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;State is a way for components to keep track of data that can change over time. It's like a memory for a component, storing information that affects how it renders.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How Do Components Manage State?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Components can have their own internal state, accessible via &lt;code&gt;useState&lt;/code&gt; hook.&lt;/li&gt;
&lt;li&gt;Changes to state trigger a re-render, updating the Virtual DOM and subsequently the real DOM.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Common Questions about State:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Q: Why not just use variables?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;A: State enables React to manage changes efficiently, triggering updates and re-renders only when necessary.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Q: Can state be shared between components?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;A: Yes, through "lifting state up" or using advanced state management libraries like Redux.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Q: What's the difference between state and props?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;A: State is internal and controlled by the component, while props are external inputs passed to a component.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h4&gt;
  
  
  4. &lt;strong&gt;Component Lifecycle: The Phases of Existence&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;Every React component goes through a lifecycle from birth to death. Understanding these phases helps manage state and perform actions at specific times.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Mounting Phase:&lt;/strong&gt; When a component is created and inserted into the DOM.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Updating Phase:&lt;/strong&gt; When a component re-renders due to changes in props or state.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Unmounting Phase:&lt;/strong&gt; When a component is removed from the DOM.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Why Does This Matter?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Understanding the lifecycle allows you to perform actions at specific moments, like fetching data when a component is first mounted.&lt;/p&gt;

&lt;h4&gt;
  
  
  5. &lt;strong&gt;React Hooks: Simplifying State and Lifecycle Management&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;Introduced in React 16.8, hooks like &lt;code&gt;useState&lt;/code&gt; and &lt;code&gt;useEffect&lt;/code&gt; simplify state management and allow functional components to use lifecycle methods.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What are Hooks?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Hooks are functions that let you use state and lifecycle features in functional components, making them more powerful and easier to read.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&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="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;useState&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;useEffect&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="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;function&lt;/span&gt; &lt;span class="nf"&gt;ExampleComponent&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="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;count&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setCount&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useState&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="nf"&gt;useEffect&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="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;title&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;`Count: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;count&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&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="nx"&gt;count&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="o"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;p&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="nx"&gt;Count&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;count&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/p&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;button&lt;/span&gt; &lt;span class="nx"&gt;onClick&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="nf"&gt;setCount&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;count&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)}&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="nx"&gt;Increment&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/button&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  6. &lt;strong&gt;Conclusion: React.js, the Declarative Paradigm&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;React's architecture empowers developers to build user interfaces in a declarative manner. You declare what the UI should look like, and React takes care of the rest.&lt;/p&gt;

&lt;p&gt;By mastering the Virtual DOM and understanding state management, you'll be well-equipped to create efficient, scalable, and maintainable React applications. Happy coding!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Boost Your Productivity with These 15 Flow Launcher Hacks</title>
      <dc:creator>Abhi Dadhaniya</dc:creator>
      <pubDate>Wed, 26 Apr 2023 17:53:45 +0000</pubDate>
      <link>https://dev.to/abhidadhaniya23/boost-your-productivity-with-these-15-flow-launcher-hacks-2mfg</link>
      <guid>https://dev.to/abhidadhaniya23/boost-your-productivity-with-these-15-flow-launcher-hacks-2mfg</guid>
      <description>&lt;h2&gt;
  
  
  What is the Flow Launcher?
&lt;/h2&gt;

&lt;p&gt;Flow Launcher is open-source software. Here's the Website and GitHub provided.&lt;/p&gt;

&lt;p&gt;Here's the &lt;a href="https://flowlauncher.com/" rel="noopener noreferrer"&gt;website&lt;/a&gt;, &lt;a href="https://github.com/Flow-Launcher/Flow.Launcher" rel="noopener noreferrer"&gt;GitHub repository&lt;/a&gt; and you can &lt;a href="https://github.com/Flow-Launcher/Flow.Launcher/releases/download/v1.9.3/Flow-Launcher-Setup.exe" rel="noopener noreferrer"&gt;download the software&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Using Flow Launcher you can search anything from your local files and folders, Google searches, System settings and many more by just pressing Alt + Space.&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%2Fas3502gn4ffs8x7vh151.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%2Fas3502gn4ffs8x7vh151.gif" alt="1" width="890" height="643"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Flow Launcher has its plugin store. You can install some useful plugins from it. Follow the below process to install 3rd party plugins.&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%2Faodhnossbvoesehzsi49.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%2Faodhnossbvoesehzsi49.png" alt="2" width="800" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this setting of Flow Launcher, You'll see some basic modules on the left-hand side like General, Plugins, Plugin store, Theme etc.&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%2F0z101jwctwmadk1q4r6u.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%2F0z101jwctwmadk1q4r6u.png" alt="3" width="800" height="530"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;From the plugin store, you can install additional plugins which will useful for you. In the theme section, You can customize your search bar theme.&lt;/p&gt;

&lt;p&gt;In the Plugins section, you can customize your specific plugin shortcut key. You can try it by yourself.&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%2Fpbs.twimg.com%2Fmedia%2FFT6GAHuUsAAUICW%3Fformat%3Dpng%26name%3Dmedium" 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%2Fpbs.twimg.com%2Fmedia%2FFT6GAHuUsAAUICW%3Fformat%3Dpng%26name%3Dmedium" alt="Image" width="800" height="602"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here are 15 tricks and tips to use flow launcher and increase productivity&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Calculator&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Currency converter&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Browser bookmarks&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Clipboard history&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Shell commands&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Find your network IP&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Plugin Manager&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Manage TODO Tasks&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Search URL&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Kill process&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Local files and folder search&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Google searches&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;YouTube, Twitter, Wikipedia and many more searches.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Notion workspace search&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;VS code workspaces&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;GitHub quick launcher&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Google search plus&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Web searches&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Calculator
&lt;/h2&gt;

&lt;p&gt;You can simply search numbers and start your calculation.&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%2Fpbs.twimg.com%2Fmedia%2FFT6F_wVUYAElLMo%3Fformat%3Dpng%26name%3D900x900" 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%2Fpbs.twimg.com%2Fmedia%2FFT6F_wVUYAElLMo%3Fformat%3Dpng%26name%3D900x900" alt="Image" width="727" height="706"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Currency converter
&lt;/h2&gt;

&lt;p&gt;You can add your shortcut like cc as a currency converter. Then, You can search like this syntax&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;shortcut&amp;gt; {number} &amp;lt;1st currency&amp;gt; &amp;lt;2nd currency&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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%2Fpbs.twimg.com%2Fmedia%2FFT6GAV_UYAAMErF%3Fformat%3Dpng%26name%3D900x900" 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%2Fpbs.twimg.com%2Fmedia%2FFT6GAV_UYAAMErF%3Fformat%3Dpng%26name%3D900x900" alt="Image" width="800" height="560"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Browser bookmarks
&lt;/h2&gt;

&lt;p&gt;After the shortcut key like &lt;code&gt;b&lt;/code&gt; stands for bookmarks, then you can search for any bookmark And it'll pop up some results from your browser bookmarks.&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%2Fpbs.twimg.com%2Fmedia%2FFT6GAw_UcAAWcte%3Fformat%3Dpng%26name%3D900x900" 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%2Fpbs.twimg.com%2Fmedia%2FFT6GAw_UcAAWcte%3Fformat%3Dpng%26name%3D900x900" alt="Image" width="777" height="763"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Clipboard History
&lt;/h2&gt;

&lt;p&gt;Simply by pressing ch (clipboard history), you can show your recently copied content.&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%2Fpbs.twimg.com%2Fmedia%2FFT6GBLcUYAAUmUT%3Fformat%3Dpng%26name%3D900x900" 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%2Fpbs.twimg.com%2Fmedia%2FFT6GBLcUYAAUmUT%3Fformat%3Dpng%26name%3D900x900" alt="Image" width="800" height="529"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Shell Commands
&lt;/h2&gt;

&lt;p&gt;By just pressing &lt;code&gt;&amp;gt;&lt;/code&gt; You can execute your command prompt commands. Also, you can open this shell execution by pressing "Windows + R".&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%2Fpbs.twimg.com%2Fmedia%2FFT6GBkuVsAEynrs%3Fformat%3Dpng%26name%3D900x900" 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%2Fpbs.twimg.com%2Fmedia%2FFT6GBkuVsAEynrs%3Fformat%3Dpng%26name%3D900x900" alt="Image" width="777" height="691"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Find your network IP Address
&lt;/h2&gt;

&lt;p&gt;I've set the IP shortcut in the general setting of the Flow Launcher. After pressing the IP, I can see my IP Address with the connected network.&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%2Fpbs.twimg.com%2Fmedia%2FFT6GB9eUYAEODCP%3Fformat%3Dpng%26name%3Dsmall" 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%2Fpbs.twimg.com%2Fmedia%2FFT6GB9eUYAEODCP%3Fformat%3Dpng%26name%3Dsmall" alt="Image" width="421" height="268"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Plugin indicator
&lt;/h2&gt;

&lt;p&gt;By pressing &lt;code&gt;PM&lt;/code&gt; you can install, uninstall and update any plugin.&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%2Fpbs.twimg.com%2Fmedia%2FFT6GMiFaAAAEsJp%3Fformat%3Dpng%26name%3D900x900" 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%2Fpbs.twimg.com%2Fmedia%2FFT6GMiFaAAAEsJp%3Fformat%3Dpng%26name%3D900x900" alt="Image" width="800" height="461"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Manage Tasks
&lt;/h2&gt;

&lt;p&gt;You can manage your to-do list inside the Flow Launcher.&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%2Fpbs.twimg.com%2Fmedia%2FFT6GgAgakAE0SVd%3Fformat%3Dpng%26name%3D900x900" 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%2Fpbs.twimg.com%2Fmedia%2FFT6GgAgakAE0SVd%3Fformat%3Dpng%26name%3D900x900" alt="Image" width="761" height="684"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Search URL
&lt;/h2&gt;

&lt;p&gt;You can search URLs by pasting them in the search bar.&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%2Fpbs.twimg.com%2Fmedia%2FFT6G1IraUAAT9H6%3Fformat%3Dpng%26name%3D900x900" 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%2Fpbs.twimg.com%2Fmedia%2FFT6G1IraUAAT9H6%3Fformat%3Dpng%26name%3D900x900" alt="Image" width="800" height="442"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Kill Process
&lt;/h2&gt;

&lt;p&gt;You can kill processes by &lt;code&gt;kill&lt;/code&gt; keywords.&lt;/p&gt;

&lt;h2&gt;
  
  
  Search files and folders
&lt;/h2&gt;

&lt;p&gt;You can directly search a file or folder name in the search bar.&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%2Fpbs.twimg.com%2Fmedia%2FFT6SPBGUsAA-wyY%3Fformat%3Dpng%26name%3D900x900" 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%2Fpbs.twimg.com%2Fmedia%2FFT6SPBGUsAA-wyY%3Fformat%3Dpng%26name%3D900x900" alt="Image" width="735" height="720"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Google Searches
&lt;/h2&gt;

&lt;p&gt;If flow launcher doesn't find any search query from your local files, folders or system setting or somewhere else, then it'll show an option to search that in Google.&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%2Fpbs.twimg.com%2Fmedia%2FFT6SPbYVIAArG2S%3Fformat%3Dpng%26name%3D900x900" 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%2Fpbs.twimg.com%2Fmedia%2FFT6SPbYVIAArG2S%3Fformat%3Dpng%26name%3D900x900" alt="Image" width="735" height="655"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Search YouTube, GitHub, and Wikipedia
&lt;/h2&gt;

&lt;p&gt;There is a popular website to direct search by typing keywords of that website. → In the plugin section of the Flow Launcher setting, you can customize it according to your need and also you can add your own.&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%2Fpbs.twimg.com%2Fmedia%2FFT6SQCIUAAAAXK0%3Fformat%3Dpng%26name%3Dlarge" 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%2Fpbs.twimg.com%2Fmedia%2FFT6SQCIUAAAAXK0%3Fformat%3Dpng%26name%3Dlarge" alt="Image" width="800" height="482"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Notion workspace search
&lt;/h2&gt;

&lt;p&gt;Using the Flow Launcher, you can directly search from your notion workspaces. → To do that, you have to generate an access token of your account from the integration of your app. Create a new integration token from &lt;a href="https://notion.so/my-integrations" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;After generating an access token, You have to add in the plugin of notion. Add your notion and set a keyword like "n" or anything else that you want to set. Don't forget to share your notion workspace page or access to created tokens like the below picture.&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%2Fpbs.twimg.com%2Fmedia%2FFT6SQ1uVIAIjhk2%3Fformat%3Dpng%26name%3Dlarge" 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%2Fpbs.twimg.com%2Fmedia%2FFT6SQ1uVIAIjhk2%3Fformat%3Dpng%26name%3Dlarge" alt="Image" width="800" height="364"&gt;&lt;/a&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%2Fpbs.twimg.com%2Fmedia%2FFT6SRC3UEAY1GcH%3Fformat%3Dpng%26name%3Dsmall" 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%2Fpbs.twimg.com%2Fmedia%2FFT6SRC3UEAY1GcH%3Fformat%3Dpng%26name%3Dsmall" alt="Image" width="535" height="294"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Open VS Code Workspaces
&lt;/h2&gt;

&lt;p&gt;By simply pressing &lt;code&gt;/&lt;/code&gt; or default : &lt;code&gt;{&lt;/code&gt; You can search your last opened workspaces. → I've set &lt;code&gt;/&lt;/code&gt; to search workspace of vs code. You can customize yours.&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%2Fpbs.twimg.com%2Fmedia%2FFT6SRZmUEAAHyoA%3Fformat%3Dpng%26name%3D900x900" 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%2Fpbs.twimg.com%2Fmedia%2FFT6SRZmUEAAHyoA%3Fformat%3Dpng%26name%3D900x900" alt="Image" width="734" height="713"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thanks for reading this article the last thing I want to mention is, We're running up and freelance agency called &lt;a href="https://www.gigaweb.in/" rel="noopener noreferrer"&gt;Gigaweb&lt;/a&gt; - an agency that offers a range of digital services to help clients. With my years of &lt;a href="https://www.abhidadhaniya.com/tech-stack" rel="noopener noreferrer"&gt;experience&lt;/a&gt; in web design and development, We provide top-quality services to businesses and individuals.&lt;/p&gt;

&lt;p&gt;Visit my &lt;a href="https://www.abhidadhaniya.com/" rel="noopener noreferrer"&gt;portfolio&lt;/a&gt;, verify &lt;a href="https://www.abhidadhaniya.com/project" rel="noopener noreferrer"&gt;project work&lt;/a&gt; and read more &lt;a href="https://blogs.abhidadhaniya.com/" rel="noopener noreferrer"&gt;blogs&lt;/a&gt;. To stay updated on my latest projects and industry insights, follow me on his social media accounts- &lt;a href="https://www.linkedin.com/in/abhidadhaniya/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;, &lt;a href="https://twitter.com/abhidadhaniya3" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;, and &lt;a href="https://github.com/abhidadhaniya23" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>windows</category>
      <category>global</category>
      <category>search</category>
      <category>opensource</category>
    </item>
    <item>
      <title>How I Automate Social Media Page using Web Scrapping, Google sheets and Figma</title>
      <dc:creator>Abhi Dadhaniya</dc:creator>
      <pubDate>Mon, 17 Apr 2023 17:59:22 +0000</pubDate>
      <link>https://dev.to/abhidadhaniya23/how-i-automate-social-media-page-using-web-scrapping-google-sheets-and-figma-25cj</link>
      <guid>https://dev.to/abhidadhaniya23/how-i-automate-social-media-page-using-web-scrapping-google-sheets-and-figma-25cj</guid>
      <description>&lt;p&gt;Recently, I was exploring AI tools from online resources and also I came across a web-scraping Chrome extension I thought what if I can scrap this data into beautiful social media&lt;/p&gt;

&lt;p&gt;Here are the most powerful web-scraping Chrome extension&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.bardeen.ai/" rel="noopener noreferrer"&gt;&lt;strong&gt;Bardeen - Automate manual work&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://axiom.ai/" rel="noopener noreferrer"&gt;&lt;strong&gt;Axiom Browser Automation&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  What is Web scraping
&lt;/h2&gt;

&lt;p&gt;Web scraping is a powerful tool for collecting data from websites quickly and efficiently. For marketers, web scraping can be especially useful for collecting data on potential leads, target audiences, or competitors. However, manually collecting data from websites can be time-consuming and tedious, particularly when dealing with websites that have large amounts of data.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Challenge of Data Collection
&lt;/h3&gt;

&lt;p&gt;Collecting data from a large website with over 300 AI tools can be a daunting task. Manually copying and pasting the data for each tool would take hours or even days. This is where web scraping comes in handy. With a web scraping tool, it's possible to automatically collect data from a website, even if there are hundreds or thousands of pages to scrape.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to scrap data from any website
&lt;/h2&gt;

&lt;p&gt;Here's a &lt;a href="https://www.youtube.com/@Bardeenai" rel="noopener noreferrer"&gt;YouTube channel&lt;/a&gt; to learn about how to use Bardeen to scrap data from any website.&lt;/p&gt;

&lt;p&gt;After collecting the data in table form using the Bardeen extension, I transfer table data into google sheets by connecting my Google account.&lt;/p&gt;

&lt;h3&gt;
  
  
  Organizing Data with Google Sheets
&lt;/h3&gt;

&lt;p&gt;Once the data was collected, I imported it into Google Sheets to organize it. Google Sheets is a powerful tool for data organization, allowing users to sort, filter, and analyze data in a variety of ways. I created separate columns for each data point and used filters to remove any unnecessary data.&lt;/p&gt;

&lt;h4&gt;
  
  
  Extracted data from AI tool using web scraping
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Name&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Description&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Website link&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Icon link&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here's an important phase that came up where I applied some google sheets functions to create necessary columns like,&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Absolute URL path to extract the domain name&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Used &lt;strong&gt;IMPORTXML()&lt;/strong&gt; function to get meta image from extracted URL of AI tool&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;Also, we can import meta descriptions of websites using the IMPORTXML function but in my case, I had the description content of the AI tool.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Used google sheets functions
&lt;/h3&gt;

&lt;p&gt;Get a domain from an absolute URL (&lt;a href="https://abhidadhaniya.com" rel="noopener noreferrer"&gt;https://abhidadhaniya.com&lt;/a&gt; to abhidadhaniya.com)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;=REGEXREPLACE(A1,"http\:\/\/|https\:\/\/|\/.*|\?.*|\#.*","")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Import meta image using og:image property from metadata.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;=IMPORTXML(A1,"//meta[@property='og:image']/@content")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After successfully fetching all data let's sync in the Figma post.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sync data in Figma Post
&lt;/h2&gt;

&lt;p&gt;I created common components in Figma to use a common structure in all posts.&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%2Fva296xslq3psa30ivp1m.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%2Fva296xslq3psa30ivp1m.png" alt="Figma Common Components" width="800" height="512"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I also created variants of Profile images and account info.&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%2Fd2pxc4ilkknd3gebzw1c.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%2Fd2pxc4ilkknd3gebzw1c.png" alt="Variants" width="753" height="826"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If I want to create a new theme and post layout, Now I can easily change the design of components and it will reflect in all posts. This is the real power of Figma 🔥&lt;/p&gt;

&lt;h3&gt;
  
  
  Sync data using the Google Sheets sync Figma plugin
&lt;/h3&gt;

&lt;p&gt;I installed a Figma plugin called &lt;a href="https://www.figma.com/community/plugin/735770583268406934/Google-Sheets-Sync" rel="noopener noreferrer"&gt;Google Sheets sync&lt;/a&gt; to fetch data from shared google sheets by inputting Google sheet URL.&lt;/p&gt;

&lt;p&gt;After that plugin will pop up a table that we can connect to the respected element.&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%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1681753147894%2F8922fd78-3a2b-4135-be3c-ee48318735ff.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%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1681753147894%2F8922fd78-3a2b-4135-be3c-ee48318735ff.png" alt="Google sheets sync figma plugin" width="800" height="387"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Connect the element by clicking on the respected column and the name of the element will be replaced by #ColumnName&lt;/p&gt;

&lt;p&gt;Now, Copy and paste the 1st post by dragging next to it and click on the sync button in the pop-up of the Google Sheets sync plugin and That's it, We're Done...!&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I choose a lazy person to do a hard job. Because a lazy person will find an easy way to do it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- Bill Gates&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

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

&lt;p&gt;Web scraping and Google Sheets are powerful tools for streamlining data collection and organization. By using a web scraping tool and Google Sheets, I was able to quickly and efficiently collect and organize data from a large website. By syncing the data with Figma, I was able to create social media posts quickly and easily.&lt;/p&gt;

&lt;p&gt;Thanks for reading this article the last thing I want to mention is, We're running up and freelance agency called &lt;a href="https://www.gigaweb.in/" rel="noopener noreferrer"&gt;Gigaweb&lt;/a&gt; - an agency that offers a range of digital services to help clients. With my years of &lt;a href="https://www.abhidadhaniya.com/tech-stack" rel="noopener noreferrer"&gt;experience&lt;/a&gt; in web design and development, We provide top-quality services to businesses and individuals.&lt;/p&gt;

&lt;p&gt;Visit my &lt;a href="https://www.abhidadhaniya.com/" rel="noopener noreferrer"&gt;portfolio&lt;/a&gt;, verify &lt;a href="https://www.abhidadhaniya.com/project" rel="noopener noreferrer"&gt;project work&lt;/a&gt; and read more &lt;a href="https://blogs.abhidadhaniya.com/" rel="noopener noreferrer"&gt;blogs&lt;/a&gt;. To stay updated on my latest projects and industry insights, follow me on his social media accounts- &lt;a href="https://www.linkedin.com/in/abhidadhaniya/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;, &lt;a href="https://twitter.com/abhidadhaniya3" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;, and &lt;a href="https://github.com/abhidadhaniya23" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>webscraping</category>
      <category>googlesheets</category>
      <category>figma</category>
      <category>socialmedia</category>
    </item>
    <item>
      <title>Revolutionize Your Design and Development Process with GigaResources</title>
      <dc:creator>Abhi Dadhaniya</dc:creator>
      <pubDate>Sun, 02 Apr 2023 11:30:57 +0000</pubDate>
      <link>https://dev.to/abhidadhaniya23/revolutionize-your-design-and-development-process-with-gigaresources-2o32</link>
      <guid>https://dev.to/abhidadhaniya23/revolutionize-your-design-and-development-process-with-gigaresources-2o32</guid>
      <description>&lt;p&gt;As a digital creator, designer, or developer, finding the right tools can be the key to success. Whether you're looking for inspiration, productivity hacks, or cutting-edge technology, having the right resources at your fingertips can help you achieve your goals.&lt;/p&gt;

&lt;h2&gt;
  
  
  What GigaResources is?
&lt;/h2&gt;

&lt;p&gt;That's why we're excited to introduce &lt;a href="https://www.gigaresources.xyz/" rel="noopener noreferrer"&gt;GigaResources&lt;/a&gt;, a comprehensive tool that has been built by &lt;a href="https://www.gigaweb.in/" rel="noopener noreferrer"&gt;Gigaweb&lt;/a&gt;. GigaResources is an all-in-one resource that offers a vast collection of tools for digital creators, designers, and developers. With GigaResources, you can search for any tools and categories from the given categories at the left sidebar, making it easier for you to find what you need.&lt;/p&gt;

&lt;h2&gt;
  
  
  Technologies to build
&lt;/h2&gt;

&lt;p&gt;We built GigaResources using next.js and server-side rendering techniques, which means that the website is lightning-fast and responsive, giving you a seamless experience every time you visit. With its intuitive design and easy-to-use interface, GigaResources is the perfect tool for anyone looking to stay up-to-date on the latest tools and resources in the digital space.&lt;/p&gt;

&lt;h2&gt;
  
  
  Newsletter
&lt;/h2&gt;

&lt;p&gt;In addition to the website, we also run a weekly newsletter that shares the latest and greatest tools and resources with our subscribers. Each week, we curate a list of the most valuable and interesting tools, tips, and resources to help you stay on top of your game. By subscribing to our newsletter, you'll be the first to know about the latest and greatest tools and resources that can help you take your digital creations to the next level.&lt;/p&gt;

&lt;h2&gt;
  
  
  Variety of tools
&lt;/h2&gt;

&lt;p&gt;At GigaResources, we are committed to making sure that our users have access to the best tools and resources available. If there is a tool that you need that isn't currently listed on our website, you can request it to be added to our website. Our team of experts is always on the lookout for new and innovative tools to add to our collection.&lt;/p&gt;

&lt;p&gt;At &lt;a href="https://www.gigaresources.xyz/" rel="noopener noreferrer"&gt;GigaResources&lt;/a&gt;, we have organized our collection of tools and resources into several categories, including:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Design Tools: This category includes tools for graphic design, UI/UX design, and prototyping. Some popular tools in this category include Adobe Creative Suite, Sketch, and Figma.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Development Tools: This category includes tools for front-end and back-end development, including code editors, version control systems, and testing frameworks. Some popular tools in this category include Visual Studio Code, GitHub, and Selenium.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;No Code Website Builders: This category includes tools that allow you to build websites and web applications without writing any code. Some popular tools in this category include Webflow, Bubble, and Carrd.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Mockup Tools: This category includes tools for creating high-fidelity mockups and prototypes of websites and applications. Some popular tools in this category include InVision, Balsamiq, and Marvel.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Icons: This category includes tools for finding and creating icons for use in your designs and websites. Some popular tools in this category include IconFinder, Flaticon, and Font Awesome.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Illustrations: This category includes tools for finding and creating illustrations for use in your designs and websites. Some popular tools in this category include UnDraw, Humaaans, and ManyPixels.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;These are just a few examples of the categories we have at GigaResources. We have a wide variety of tools and resources in each category, so you can find exactly what you need to bring your digital creations to life.&lt;/p&gt;

&lt;p&gt;Finally, we'd like to ask for your help in spreading the word about &lt;a href="https://www.gigaresources.xyz/" rel="noopener noreferrer"&gt;GigaResources&lt;/a&gt;. If you find our website helpful and valuable, please take a moment to vote for us on &lt;a href="https://www.producthunt.com/posts/gigaresources?utm_source=badge-featured&amp;amp;utm_medium=badge&amp;amp;utm_souce=badge-gigaresources" rel="noopener noreferrer"&gt;Product Hunt&lt;/a&gt;. By voting for us, you can help more people discover the power and convenience of GigaResources.&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://www.gigaresources.xyz/" rel="noopener noreferrer"&gt;GigaResources&lt;/a&gt; is an all-in-one resource for digital creators, designers, and developers. With its vast collection of tools and resources, intuitive design, and lightning-fast performance, GigaResources is the perfect tool for anyone looking to stay up-to-date in the digital space. Don't forget to subscribe to our newsletter and help us spread the word by voting for us on &lt;a href="https://www.producthunt.com/posts/gigaresources?utm_source=badge-featured&amp;amp;utm_medium=badge&amp;amp;utm_souce=badge-gigaresources" rel="noopener noreferrer"&gt;Product Hunt&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Thanks for reading this article the last thing I want to mention is, We're running up and freelance agency called &lt;a href="https://www.gigaweb.in/" rel="noopener noreferrer"&gt;Gigaweb&lt;/a&gt; - an agency that offers a range of digital services to help clients. With my years of &lt;a href="https://www.abhidadhaniya.com/tech-stack" rel="noopener noreferrer"&gt;experience&lt;/a&gt; in web design and development, We provide top-quality services to businesses and individuals.&lt;/p&gt;

&lt;p&gt;Visit my &lt;a href="https://www.abhidadhaniya.com/" rel="noopener noreferrer"&gt;portfolio&lt;/a&gt;, verify &lt;a href="https://www.abhidadhaniya.com/project" rel="noopener noreferrer"&gt;project work&lt;/a&gt; and read more &lt;a href="https://blogs.abhidadhaniya.com/" rel="noopener noreferrer"&gt;blogs&lt;/a&gt;. To stay updated on my latest projects and industry insights, follow me on his social media accounts- &lt;a href="https://www.linkedin.com/in/abhidadhaniya/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;, &lt;a href="https://twitter.com/abhidadhaniya3" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;, and &lt;a href="https://github.com/abhidadhaniya23" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>design</category>
      <category>tools</category>
      <category>development</category>
      <category>resources</category>
    </item>
    <item>
      <title>Powerful content management systems - Sanity vs Contentful vs Strapi</title>
      <dc:creator>Abhi Dadhaniya</dc:creator>
      <pubDate>Thu, 09 Feb 2023 12:30:55 +0000</pubDate>
      <link>https://dev.to/abhidadhaniya23/powerful-content-management-systems-sanity-vs-contentful-vs-strapi-12kb</link>
      <guid>https://dev.to/abhidadhaniya23/powerful-content-management-systems-sanity-vs-contentful-vs-strapi-12kb</guid>
      <description>&lt;h2&gt;
  
  
  Introduction to the content management system
&lt;/h2&gt;

&lt;p&gt;Nowadays, Websites are switching from no-code website builders (WordPress, Wix etc) to the latest technology stacks like React.js, Next.js, Django, Flask etc. WordPress takes too much time to load pages.&lt;/p&gt;

&lt;p&gt;There are many alternatives for no-code website builders like &lt;a href="https://webflow.com/" rel="noopener noreferrer"&gt;webflow&lt;/a&gt;. You can check out the &lt;a href="https://webflow.com/pricing" rel="noopener noreferrer"&gt;pricing plans&lt;/a&gt; to develop a no-code website on this platform.&lt;/p&gt;

&lt;p&gt;There are 2 types of possible data on the website&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Static Data&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Dynamic Data&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Let's suppose, a &lt;a href="https://blogs.abhidadhaniya.com/" rel="noopener noreferrer"&gt;blog website&lt;/a&gt; holds static data which is not gonna change frequently. We can use a content management system to manage those data without appending static content in the code repository. That's why CMS (Content management system) came into the picture.&lt;/p&gt;

&lt;p&gt;These 3 cms platforms are becoming powerful and these are easy to integrate with javascript frameworks.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://sanity.io/" rel="noopener noreferrer"&gt;Sanity.io&lt;/a&gt;
&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%2Fo0uodjpxmm0mrv4m4elx.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%2Fo0uodjpxmm0mrv4m4elx.png" alt="Sanity - Abhi's Blogs" width="800" height="371"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Sanity is a content management solution for a website that holds some static data in an entire website like websites of small and individual businesses, portfolio websites etc.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pros of sanity&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Sanity is a very good option to integrate with react app&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Easy to setup and integrate&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Sanity studio works in localhost as well as production level&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Useful for client websites and full fill their requirements&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The clean and beautiful user interface of sanity studio&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Cons of sanity&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Not so good support for rich text or you can say the content of markdown&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Can not embed code because of no markdown support in rich text&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://www.contentful.com/" rel="noopener noreferrer"&gt;Contentful&lt;/a&gt;
&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%2Fajkc8k2v83rkvnh0f5j9.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%2Fajkc8k2v83rkvnh0f5j9.png" alt="Contentful - Abhi's Blogs" width="800" height="371"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Contentful is the best solution for static websites like my &lt;a href="https://blogs.abhidadhaniya.com/" rel="noopener noreferrer"&gt;blog&lt;/a&gt; website. I like contentful because of its simplicity and the relationship between various collections models.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pros of Contentful&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Simplicity and clean user interface&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Easy to connect SDK (Software development kit) and client configuration&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Works on only contentful platform (Means you have to manage content on their web app)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;GraphQL API support&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;CDN Support&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Image upload support&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Markdown support in the rich text editor&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Good for blogs content management&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Cons of Contentful&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Not supported on localhost&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://strapi.io/" rel="noopener noreferrer"&gt;Strapi&lt;/a&gt;
&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%2Fl0wcw2ci5m7p4sc73ye2.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%2Fl0wcw2ci5m7p4sc73ye2.png" alt="Strapi - Abhi's Blogs" width="800" height="371"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Strapi is the best content management system for API development. Strapi is easy to use and set up and more time-consuming while working with a data model for backend development. Strapi is built for API development purposes&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pros of Strapi&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The best solution to powerup the backend servers&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Strapi is an Open-source project (&lt;a href="https://github.com/strapi/strapi" rel="noopener noreferrer"&gt;GitHub Repository&lt;/a&gt;)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Cons of Strapi&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;A little bit tough to deploy the Strapi backend&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Can not deploy freely&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can compare pricing plans for all of these cms at here. &lt;a href="https://www.sanity.io/pricing" rel="noopener noreferrer"&gt;Sanity&lt;/a&gt;, &lt;a href="https://www.contentful.com/pricing/" rel="noopener noreferrer"&gt;Contentful&lt;/a&gt;, &lt;a href="https://strapi.io/pricing-self-hosted" rel="noopener noreferrer"&gt;Strapi&lt;/a&gt;.&lt;/p&gt;

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

&lt;p&gt;We can't compare all cms with each other. All content management systems had been made for some special purpose to solve some problems in real-world applications. Strapi is built for API development. Sanity is for website content management and Contentful is (Good for blog applications) for both but only accessible from its web app.&lt;/p&gt;

&lt;p&gt;I also use Contentful CMS for my blog website. Do check it out at &lt;a href="https://blogs.abhidadhaniya.com/" rel="noopener noreferrer"&gt;blogs.abhidadhaniya.com&lt;/a&gt;&lt;/p&gt;

</description>
      <category>strapi</category>
      <category>contentful</category>
      <category>sanity</category>
      <category>cms</category>
    </item>
    <item>
      <title>Here’s how I Master Full Stack Development</title>
      <dc:creator>Abhi Dadhaniya</dc:creator>
      <pubDate>Thu, 09 Feb 2023 12:29:36 +0000</pubDate>
      <link>https://dev.to/abhidadhaniya23/heres-how-i-master-full-stack-development-3o41</link>
      <guid>https://dev.to/abhidadhaniya23/heres-how-i-master-full-stack-development-3o41</guid>
      <description>&lt;p&gt;Nowadays, So many freshers want to become a full-stack developers and want to jump into this field and In this post, I’ve shared my journey. Hope my journey will inspire you in your career.&lt;/p&gt;

&lt;h2&gt;
  
  
  Starting of journey
&lt;/h2&gt;

&lt;p&gt;My journey started in 12th standard. I was curious to gain knowledge and I like to create websites using pure HTML and CSS from scratch without using any 3rd party service.&lt;/p&gt;

&lt;p&gt;I don’t prefer any dependency on other platforms like NoCode website builder (WordPress, Wix etc..) or anything else as much as I can.&lt;/p&gt;

&lt;p&gt;Warning: In these platforms we can’t get what we want from a design perspective I can customize my designs using CSS or tailwindcss.&lt;/p&gt;

&lt;p&gt;Then, I learned JavaScript basic concepts from &lt;a href="https://www.youtube.com/@CodeWithHarry" rel="noopener noreferrer"&gt;Code With Harry&lt;/a&gt; and &lt;a href="https://www.youtube.com/@YahooBaba" rel="noopener noreferrer"&gt;Yahoo Baba&lt;/a&gt; youtube channels. I learned basic concepts of javascript.&lt;/p&gt;

&lt;h2&gt;
  
  
  Project development
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://github.com/abhidadhaniya23/Portfolio-Website/tree/master/public/projects" rel="noopener noreferrer"&gt;Here&lt;/a&gt;, you can find those beginner-level projects that I’ve developed.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Then, I developed so many projects in HTML, CSS and JavaScript. Here’s the &lt;a href="https://github.com/abhidadhaniya23/Portfolio-Website" rel="noopener noreferrer"&gt;GitHub Repository&lt;/a&gt; that might be helpful for you.&lt;/p&gt;

&lt;p&gt;Note: Heroku is no longer free to deploy backend apps and You can’t visit that portfolio I apologize for it.&lt;/p&gt;

&lt;p&gt;After developing only front-end projects, I was getting bored and then I switched to the backend and choose &lt;a href="https://nodejs.org/en/" rel="noopener noreferrer"&gt;Node.js&lt;/a&gt; and &lt;a href="https://expressjs.com/" rel="noopener noreferrer"&gt;Express.js&lt;/a&gt; to learn.&lt;/p&gt;

&lt;p&gt;I’ve also implemented some projects in &lt;a href="https://ejs.co/" rel="noopener noreferrer"&gt;EJS&lt;/a&gt; which is a template engine in JavaScript.&lt;/p&gt;

&lt;p&gt;Tip: I don’t recommend you learn EJS template methods which are not useful nowadays because of React.js (we can create components).&lt;/p&gt;

&lt;p&gt;After that, I learned database concepts in &lt;a href="https://www.mongodb.com/" rel="noopener noreferrer"&gt;MongoDB&lt;/a&gt; and then I learned about &lt;a href="https://mongoosejs.com/" rel="noopener noreferrer"&gt;Mongoose Package&lt;/a&gt; which helps to connect MongoDB to Node.js and Express.js server applications.&lt;/p&gt;

&lt;h2&gt;
  
  
  Close to becoming Full stack developer
&lt;/h2&gt;

&lt;p&gt;I was only one step away to become a full stack developer and then I’d learned &lt;a href="https://reactjs.org/" rel="noopener noreferrer"&gt;React.js&lt;/a&gt; which is in demand nowadays and then I became MERN Stack Developer.&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%2F1hbuq8f3574vcphq2yg1.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%2F1hbuq8f3574vcphq2yg1.png" alt="https://www.bigscal.com/wp-content/uploads/2022/09/Features-of-Mern-stack-development-services-You-Should-Know.png" width="800" height="413"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;One thing is missing in React.js for front-end applications and is SEO (Search Engine Optimization).&lt;/p&gt;

&lt;p&gt;React is a client-side rendering technology and that’s why react.js has so many cons and one of the cons is SEO.&lt;/p&gt;

&lt;p&gt;Then, &lt;a href="https://nextjs.org/" rel="noopener noreferrer"&gt;Next.js&lt;/a&gt; was becoming popular in the market and I jumped into it. Next.js has some built-in functions for SEO and next.js is a powerful framework of React.js. Next.js has some amazing concepts like SSR (Server side rendering), SSG (Static site generation) etc.&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%2Ffj40qcypyn49hdj8tbki.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%2Ffj40qcypyn49hdj8tbki.png" alt="https://miro.medium.com/max/1200/1*1zgWFU3ZIYbmhlCUwiMmLw.png" width="800" height="560"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;I had so many dreams of building something big with the help of technology and that’s why I’ve started my journey as a full-stack developer.&lt;/p&gt;

</description>
      <category>jokes</category>
      <category>watercooler</category>
      <category>devmeme</category>
    </item>
    <item>
      <title>Guide to learn React.js</title>
      <dc:creator>Abhi Dadhaniya</dc:creator>
      <pubDate>Fri, 12 Aug 2022 15:24:00 +0000</pubDate>
      <link>https://dev.to/abhidadhaniya23/guide-to-learn-reactjs-2697</link>
      <guid>https://dev.to/abhidadhaniya23/guide-to-learn-reactjs-2697</guid>
      <description>&lt;p&gt;&lt;a href="https://reactjs.org/" rel="noopener noreferrer"&gt;React&lt;/a&gt; is an open source front-end javascript library to build web application and websites. React is build by &lt;a href="https://facebook.com/" rel="noopener noreferrer"&gt;Facebook&lt;/a&gt; in may 2013.&lt;/p&gt;

&lt;p&gt;There are so many resources to learn react.js but here, I've shared my journey about how I learned react.js after learning javascript. Before to learn react.js, You've to learn basic javascript concepts.&lt;/p&gt;

&lt;h4&gt;
  
  
  Here's I've added list of concepts to learn before react.
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;  Function Declarations and Arrow Functions&lt;/li&gt;
&lt;li&gt;  Template Literals&lt;/li&gt;
&lt;li&gt;  Short Conditionals&lt;/li&gt;
&lt;li&gt;  Three Array Methods: .map(), .filter(), .reduce()&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;These array methods are very useful while implementing data populating concepts where you'll fetch data from an API to your front-end interface.&lt;/p&gt;

&lt;p&gt;The examples of those type of web applications is &lt;a href="https://react-movie-app-000.netlify.app/" rel="noopener noreferrer"&gt;movie app&lt;/a&gt;, &lt;a href="https://recipe-app-fawn-three.vercel.app/" rel="noopener noreferrer"&gt;recipe app&lt;/a&gt; etc.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;  Object Tricks: Property Shorthand, Destructuring, Spread Operator&lt;/li&gt;
&lt;li&gt;  Promises + Async/Await Syntax&lt;/li&gt;
&lt;li&gt;  ES Modules + Import / Export syntax&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here's the &lt;a href="https://www.freecodecamp.org/news/javascript-skills-you-need-for-react-practical-examples/" rel="noopener noreferrer"&gt;blog post&lt;/a&gt; to refer all the things and I've list out above concepts from this article.&lt;/p&gt;

&lt;h2&gt;
  
  
  Learning perspectives
&lt;/h2&gt;

&lt;p&gt;There are 2 learning point of views by my side.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Learn concepts by doing projects.&lt;/li&gt;
&lt;li&gt;Learn concepts by making notes for those concepts.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Personally, I prefer 1st aspect to learn any technology. Again, there's nothing is wrong with 2nd point of view. It's also a good way to learn concepts. But 2nd way is better when if we are learning any particular programming language.&lt;/p&gt;

&lt;h3&gt;
  
  
  Here's, Why I prefer 1st way to learn react.js
&lt;/h3&gt;

&lt;p&gt;I've noticed one thing while learning react.js or learning any framework or library implementation where every youtuber or anyone who is teaching react.js, there are directly implementing concepts of that library or framework in any project and again trust me, It's the best way to learn framework.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Quick Tip : The best way to learn any framework is from it's own documentation.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Where I've learn React.js
&lt;/h2&gt;

&lt;p&gt;So, Finally came to the point, I wasn't following any particular course from youtube or udemy. I switched to many courses and tutorials and finally I've realized the one thing, which is to learn react.js by doing projects and implementing concepts in my projects.&lt;/p&gt;

&lt;h3&gt;
  
  
  Personal advice to learn React.js from
&lt;/h3&gt;

&lt;p&gt;So, my personal advice to learn react.js is to not stick to any one course or tutorial. The best way to learn react.js is to explore blogs which is written by developers but for that you need to get an index or kind of &lt;a href="https://github.com/adam-golab/react-developer-roadmap" rel="noopener noreferrer"&gt;roadmap of react.js&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So, first explore react.js road map &lt;a href="https://github.com/adam-golab/react-developer-roadmap" rel="noopener noreferrer"&gt;(github repository)&lt;/a&gt; and then go with the flow. You can also follow youtube videos for any specific concept or a topic.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why I prefer online tutorials over books?
&lt;/h3&gt;

&lt;p&gt;React.js versions update on daily bases. In current version of &lt;code&gt;react@18.2.0&lt;/code&gt; There are top updates and it &lt;a href="https://reactjs.org/blog/2022/03/08/react-18-upgrade-guide.html" rel="noopener noreferrer"&gt;changes&lt;/a&gt; some code basis of index root files. In this versions they've &lt;a href="https://reactjs.org/blog/2022/03/08/react-18-upgrade-guide.html#updates-to-server-rendering-apis" rel="noopener noreferrer"&gt;updated to server side rendering apis&lt;/a&gt;.&lt;br&gt;
So, the point is when you're learning from books, it can't be update but online tutorials can be. That's why, I prefer to learn from online resources.&lt;/p&gt;

&lt;h2&gt;
  
  
  Creating animations with react.js
&lt;/h2&gt;

&lt;p&gt;There's one of the best library to create animations with react.js is called &lt;a href="https://www.framer.com/motion/" rel="noopener noreferrer"&gt;Framer Motion&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  React.js examples
&lt;/h2&gt;

&lt;p&gt;Here, I'm mentioning the best websites for react examples&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;a href="https://reactjsexample.com/" rel="noopener noreferrer"&gt;https://reactjsexample.com/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://www.freecodecamp.org/news/tag/reactjs/" rel="noopener noreferrer"&gt;https://www.freecodecamp.org/news/tag/reactjs/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Web development free Resources &amp;amp; Tools
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;a href="https://www.web-developer-abhi.me/" rel="noopener noreferrer"&gt;I&lt;/a&gt; and my developer friend &lt;a href="https://www.rohankiratsata.xyz/" rel="noopener noreferrer"&gt;Rohan&lt;/a&gt; have created free resources to master full stack web development by using this &lt;a href="https://web-dev-resources.notion.site/web-dev-resources/Web-Development-Resources-be1207bcc32e434481c1ce6e90756964" rel="noopener noreferrer"&gt;free resources&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>react</category>
      <category>javascript</category>
      <category>webdev</category>
      <category>beginners</category>
    </item>
    <item>
      <title>xLinks.pro - clone of bio.link</title>
      <dc:creator>Abhi Dadhaniya</dc:creator>
      <pubDate>Tue, 19 Jul 2022 04:50:47 +0000</pubDate>
      <link>https://dev.to/abhidadhaniya23/xlinkspro-clone-of-biolink-2j6b</link>
      <guid>https://dev.to/abhidadhaniya23/xlinkspro-clone-of-biolink-2j6b</guid>
      <description>&lt;p&gt;Recently, I've build a platform &lt;a href="https://www.xlinks.pro/" rel="noopener noreferrer"&gt;xlinks.pro&lt;/a&gt; to link all social media links together. I've used MERN Stack technology to develop this full stack application.&lt;br&gt;
I've implemented CRUD operations in REST Api. If you don't know about CRUD operations, Don't worry, I'm here to explain.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;C - Create
R - Read
U - Update
D - Delete
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It is the kind of database (MongoDB) operations in backend with the REST Api.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I build this MERN Stack Application?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://twitter.com/AbhiDadhaniya3" rel="noopener noreferrer"&gt;Me&lt;/a&gt; and my developer friend &lt;a href="https://twitter.com/rohan_jpeg" rel="noopener noreferrer"&gt;Rohan K.&lt;/a&gt; are working on a big project where I was working on backend authentication and all kind of stuffs like that. When, I was dealing with google signin, I don't know that how can I deal with google login and even I also don't know that Can I build that functionality using client (&lt;a href="https://reactjs.org/" rel="noopener noreferrer"&gt;React&lt;/a&gt;) or backend (Node.Js &amp;amp; Express.Js).&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%2F7o6zu7847lm78fgy95ek.jpg" 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%2F7o6zu7847lm78fgy95ek.jpg" alt="xlinks.pro" width="697" height="817"&gt;&lt;/a&gt;&lt;br&gt;
For trying purpose, I started that functionality to implement with &lt;a href="https://www.passportjs.org/" rel="noopener noreferrer"&gt;passport.js&lt;/a&gt; which is a popular library for authorization in Javascript. Passport.Js has so many strategies to authenticate user. Also they've strategies for third party authentication.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Here is the difference between &lt;a href="https://www.onelogin.com/learn/authentication-vs-authorization" rel="noopener noreferrer"&gt;authorization and authentication&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;After dealing with passport.js with Node.Js and Express.Js, I feel tired and hard way to implement with google login.&lt;br&gt;
Then I've tried to find the answer : to implement google signin using react package and I founded packages to integrate google signin with React.Js.&lt;br&gt;
There are 2 popular packages to integrate with google signin.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://www.npmjs.com/package/react-google-login" rel="noopener noreferrer"&gt;react-google-login&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.npmjs.com/package/@react-oauth/google" rel="noopener noreferrer"&gt;react-oauth/google&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Both are good packages to integrate signin functionality in react application.&lt;br&gt;
But I was facing some problems while installing 1st react-google-login package where it was showing that react-google-login doesn't support react &amp;gt; 18.&lt;br&gt;
That's why I was facing some problems in build process of deployment and I couldn't found any solutions to fix these npm errors and finally at the end, I decreased versions of react, react-dom and react-scripts and I fixed all errors of my application.&lt;/p&gt;

&lt;h2&gt;
  
  
  Features of this MERN Stack application
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Google login function on client side&lt;/li&gt;
&lt;li&gt;Beautiful UI &amp;amp; UX using Tailwindcss&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Dependencies
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Client side
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Toastify&lt;/li&gt;
&lt;li&gt;React-google-login&lt;/li&gt;
&lt;li&gt;Axios&lt;/li&gt;
&lt;li&gt;React icons&lt;/li&gt;
&lt;li&gt;React meta tags&lt;/li&gt;
&lt;li&gt;React share : to share in twitter&lt;/li&gt;
&lt;li&gt;Tailwindcss, Autoprefixer, Postcss&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Server side
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Cors&lt;/li&gt;
&lt;li&gt;Dot env&lt;/li&gt;
&lt;li&gt;Express&lt;/li&gt;
&lt;li&gt;Mongoose&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Purpose to develop this application
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;To implement CRUD operations in Api.&lt;/li&gt;
&lt;li&gt;To create REST Api.&lt;/li&gt;
&lt;li&gt;To implement signin functionality - integrated with google&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Quick tips for terminal while installing npm packages
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;ctrl + c&lt;/code&gt; to break the terminal processes.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;--force&lt;/code&gt; to install any packages forcessfully. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;To delete file or folder In Linux terminal (or git)&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;rm&lt;/span&gt; &lt;span class="nt"&gt;-rf&lt;/span&gt; &amp;lt;filename or foldername&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  About xlinks.pro
&lt;/h2&gt;

&lt;p&gt;First of all, user have to &lt;a href="https://www.xlinks.pro/signin" rel="noopener noreferrer"&gt;singin in with google&lt;/a&gt; in this &lt;a href="https://www.xlinks.pro/" rel="noopener noreferrer"&gt;application&lt;/a&gt;.&lt;br&gt;
After signin, User can go to dashboard and create their profile by filling their social media links data in a form and then When user click on update profile, This application takes little bit time to add userdata in database.&lt;br&gt;
Then, user can share their profile in twitter where I've used &lt;a href="https://www.npmjs.com/package/react-share" rel="noopener noreferrer"&gt;react-share&lt;/a&gt; npm package. (where we can integrate with all social media sharing links.)&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I used &lt;a href="https://www.npmjs.com/package/react-toastify" rel="noopener noreferrer"&gt;toastify&lt;/a&gt; (&lt;a href="https://fkhadra.github.io/react-toastify/introduction/" rel="noopener noreferrer"&gt;official website&lt;/a&gt;) to give better ui and ux in xlinks.pro&lt;/p&gt;
&lt;/blockquote&gt;

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

&lt;p&gt;Thanks for reading this blog. Hope you understood about &lt;a href="https://xlinks.pro/" rel="noopener noreferrer"&gt;xlinks.pro&lt;/a&gt; Don't forget to create your profile in xlinks and add your profile's link your all social media account.&lt;/p&gt;

</description>
      <category>react</category>
      <category>node</category>
      <category>npm</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Increase Productivity using Flow Launcher</title>
      <dc:creator>Abhi Dadhaniya</dc:creator>
      <pubDate>Sun, 29 May 2022 08:17:01 +0000</pubDate>
      <link>https://dev.to/abhidadhaniya23/increase-productivity-using-flow-launcher-126b</link>
      <guid>https://dev.to/abhidadhaniya23/increase-productivity-using-flow-launcher-126b</guid>
      <description>&lt;p&gt;I've created a full thread on flow launcher.&lt;/p&gt;

&lt;p&gt;You can visit it and don't forget to share and follow me.&lt;/p&gt;

&lt;p&gt;Link of twitter thread : &lt;a href="https://twitter.com/AbhiDadhaniya3/status/1530808210860363776" rel="noopener noreferrer"&gt;Click Here&lt;/a&gt;&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>github</category>
      <category>productivity</category>
      <category>programming</category>
    </item>
    <item>
      <title>Get Web Development Resources for Free</title>
      <dc:creator>Abhi Dadhaniya</dc:creator>
      <pubDate>Tue, 01 Feb 2022 05:34:26 +0000</pubDate>
      <link>https://dev.to/abhidadhaniya23/get-web-development-resources-for-free-122b</link>
      <guid>https://dev.to/abhidadhaniya23/get-web-development-resources-for-free-122b</guid>
      <description>&lt;p&gt;Me and my developer friend &lt;a href="https://dev.to/rohankiratsata"&gt;@Rohan&lt;/a&gt; created web development resources for developers community.&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%2Fr85hkmlf38kk2l35jxtb.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%2Fr85hkmlf38kk2l35jxtb.png" alt="Web Development Resources" width="800" height="655"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can checkout these resources : &lt;a href="https://web-dev-resources.notion.site/Web-Development-Resources-be1207bcc32e434481c1ce6e90756964" rel="noopener noreferrer"&gt;Click Here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;➡️ Before thinking anything, just open the above link...&lt;br&gt;
We have compiled the  web development resources. Check the link and dive into it.&lt;/p&gt;

&lt;p&gt;✅ We strongly recommend you to learn web development using these resources.&lt;/p&gt;

&lt;p&gt;🌟 Now, You don't have to wander or surf to learn web development. All the efficient links are attached together. You are just a click away.&lt;/p&gt;

&lt;p&gt;🌈 Everything added in the given link is more than enough to excel web development. &lt;/p&gt;

&lt;p&gt;🔥 We have worked very hard for this compilation and this outlines our experience in the field.&lt;/p&gt;

&lt;p&gt;‼️ These resources are designed by two geeks. (We are web developers and currently working on freelancing . We have experience in web development for 1.5+ years)&lt;/p&gt;

&lt;p&gt;⬇️ Checkout our websites and skills&lt;br&gt;
&lt;a href="http://web-developer-abhi.herokuapp.com/" rel="noopener noreferrer"&gt;@Abhi_Dadhaniya&lt;/a&gt;&lt;br&gt;
&lt;a href="https://rohan-kiratsata.github.io/" rel="noopener noreferrer"&gt;@RohanKiratsata&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you found these resources helpful consider following us.&lt;br&gt;&lt;br&gt;
Also don't forgot to check out &lt;a href="https://dev.to/rohankiratsata"&gt;@Rohan&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Support me by buying me a Coffee!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.buymeacoffee.com/AbhiDadhaniya07" 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%2Fres.cloudinary.com%2Fpracticaldev%2Fimage%2Ffetch%2Fs--f71uWaIT--%2Fc_limit%252Cf_auto%252Cfl_progressive%252Cq_auto%252Cw_880%2Fhttps%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fslwwqwttlfdxz17r2i4k.png" alt="coffee" width="800" height="224"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>resource</category>
      <category>beginners</category>
      <category>100daysofcode</category>
    </item>
    <item>
      <title>Tailwindcss: Most Powerful and Popular Framework of CSS</title>
      <dc:creator>Abhi Dadhaniya</dc:creator>
      <pubDate>Sat, 20 Nov 2021 08:21:39 +0000</pubDate>
      <link>https://dev.to/abhidadhaniya23/tailwindcss-most-powerful-and-popular-framework-of-css-3m5e</link>
      <guid>https://dev.to/abhidadhaniya23/tailwindcss-most-powerful-and-popular-framework-of-css-3m5e</guid>
      <description>&lt;p&gt;In this article, I explained to you about &lt;a href="https://tailwindcss.com/docs" rel="noopener noreferrer"&gt;Tailwindcss&lt;/a&gt;. Which is the powerful framework of css. There are many css frameworks in the market like Bootstrap, Tailwindcss, Materialize CSS, and so on.&lt;/p&gt;

&lt;p&gt;Tailwind is the most popular and lightweight css framework to all others.&lt;/p&gt;

&lt;h3&gt;
  
  
  Reasons to use Tailwindcss:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;No default theme&lt;/li&gt;
&lt;li&gt;Doesn’t impose design decisions that you have to fight to undo&lt;/li&gt;
&lt;li&gt;Offers a head start implementing a custom design with its own identity&lt;/li&gt;
&lt;li&gt;Comes with a menu of predesigned widgets to build your site with&lt;/li&gt;
&lt;/ul&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%2Fres.cloudinary.com%2Fpracticaldev%2Fimage%2Ffetch%2Fs--eFmlJnAW--%2Fc_limit%252Cf_auto%252Cfl_progressive%252Cq_auto%252Cw_880%2Fhttps%3A%2F%2Fthemeselection.com%2Fwp-content%2Fuploads%2F2020%2F09%2Ftailwind-CSS.jpg" 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%2Fres.cloudinary.com%2Fpracticaldev%2Fimage%2Ffetch%2Fs--eFmlJnAW--%2Fc_limit%252Cf_auto%252Cfl_progressive%252Cq_auto%252Cw_880%2Fhttps%3A%2F%2Fthemeselection.com%2Fwp-content%2Fuploads%2F2020%2F09%2Ftailwind-CSS.jpg" alt="Tailwindcss" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can use tailwindcss with CDN links by importing styles to your project and another way to use tailwindcss with npm installation.&lt;/p&gt;

&lt;h3&gt;
  
  
  CDN Link
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;link&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"https://unpkg.com/tailwindcss@^2/dist/tailwind.min.css"&lt;/span&gt; &lt;span class="na"&gt;rel=&lt;/span&gt;&lt;span class="s"&gt;"stylesheet"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;There are lots of disadvantages to importing &lt;a href="https://tailwindcss.com/docs/functions-and-directives" rel="noopener noreferrer"&gt;Tailwindcss Directives&lt;/a&gt; into your project. When you import Tailwindcss directives, you are not able to do some tailwindcss customization.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;CDN takes a lot of time to interact with your website.&lt;/li&gt;
&lt;li&gt;It takes a lot of time to import and render styles with your HTML document.&lt;/li&gt;
&lt;li&gt;You can't remove unused styles from the main tailwindcss file.&lt;/li&gt;
&lt;li&gt;You aren't able to use some special &lt;a href="https://tailwindcss.com/docs/installation" rel="noopener noreferrer"&gt;features of tailwindcss&lt;/a&gt; by importing CDN.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Tailwindcss using NPM
&lt;/h3&gt;

&lt;p&gt;There are lots of benefits to using tailwindcss by installing from NPM.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You can remove unwanted css from your project to load fewer styles and it will impact on rendering documents.&lt;/li&gt;
&lt;li&gt;You can create directives to apply to common HTML elements.&lt;/li&gt;
&lt;li&gt;You can customize a dark and light theme using &lt;code&gt;tailwindcss.config.js&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;You can add some special colors and fonts by customizing the config file.
Personally, I recommend you to use tailwindcss using npm instead of importing styles through CDN.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Let's setup Tailwindcss using NPM
&lt;/h2&gt;

&lt;p&gt;Run the following command in your folder path.&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;You have to install some more packages to remove unwanted styles from your project.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm i autoprefixer postcss postcss-cli
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now, I will explain to you how to set up tailwindcss files and config files.&lt;/p&gt;

&lt;p&gt;Let's create &lt;code&gt;tailwind.config.js&lt;/code&gt;. Run the following command.&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;Now, create a &lt;code&gt;postcss.config.js&lt;/code&gt; file by running the command&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx tailwindcss init &lt;span class="nt"&gt;-p&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now, create a public/css folder and create a &lt;code&gt;tailwind.style&lt;/code&gt; name file inside css folder and add this code.&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;p&gt;Add a new script in &lt;code&gt;package.json&lt;/code&gt; to compile tailwindcss directives to styles.&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="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;build&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;postcss ./public/css/tailwind.css -o ./public/css/style.css -w&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When you run &lt;code&gt;npm run build&lt;/code&gt; tailwindcss automatically creates a &lt;code&gt;style.css&lt;/code&gt; inside public/css.&lt;/p&gt;

&lt;p&gt;Before you execute the build script, you need to set &lt;strong&gt;JIT Compiler&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Now, the most important step is we have to define JIT Compiler in &lt;code&gt;tailwind.config.js&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;You have to set JIT compiler like&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;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;jit&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;purge&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;./views/**/*.ejs&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;./views/*.ejs&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/**/*.html&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/*.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;darkMode&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&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="na"&gt;fontFamily&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{},&lt;/span&gt;
            &lt;span class="na"&gt;colors&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;variants&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;In the above code, when we define purge and in that purge array, we have to define the files where we applied styles or you can say that classes on HTML elements. Thus when the build script running, postcss packages automatically remove unwanted styles from &lt;code&gt;public/css/style.css&lt;/code&gt; and also add wanted styles.&lt;/p&gt;

&lt;p&gt;Now, You easily run the build script&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 build
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Setup Tailwindcss using a C++ program
&lt;/h2&gt;

&lt;p&gt;I have created a C++ program to generate tailwindcss with node and express project.&lt;/p&gt;

&lt;p&gt;You can check out my &lt;a href="https://github.com/abhidadhaniya23/Node-and-express-structure-using-cpp" rel="noopener noreferrer"&gt;Github Repository&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It will save you a lot of time and also you don't have to do anything to set up all folders and files. You have to just run that &lt;code&gt;program.exe&lt;/code&gt; file from the repository.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tailblocks
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://tailblocks.cc/" rel="noopener noreferrer"&gt;Tailblocks&lt;/a&gt; is a website to grab built-in templates using tailwindcss. You can directly copy those components from the website.&lt;/p&gt;

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

&lt;p&gt;Tailwind is the most popular framework. Tailwindcss is better than bootstrap because you can more customize your project with tailwindcss instead of bootstrap. There are lots of features than bootstrap. I strongly recommend you to use Tailwind instead of others. You can check out more features and &lt;a href="https://tailwindcss.com/docs" rel="noopener noreferrer"&gt;documentation&lt;/a&gt; from its website.&lt;/p&gt;

</description>
      <category>tailwindcss</category>
      <category>javascript</category>
      <category>css</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
