<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Muhammad Uzair</title>
    <description>The latest articles on Forem by Muhammad Uzair (@heyitsuzair).</description>
    <link>https://forem.com/heyitsuzair</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%2F946129%2F5359a524-64f4-4fdc-8a48-884190b6318c.jpeg</url>
      <title>Forem: Muhammad Uzair</title>
      <link>https://forem.com/heyitsuzair</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/heyitsuzair"/>
    <language>en</language>
    <item>
      <title>VPS Deployment Guide (NEXT JS/REACT JS + GITHUB ACTIONS)</title>
      <dc:creator>Muhammad Uzair</dc:creator>
      <pubDate>Thu, 14 Aug 2025 22:03:42 +0000</pubDate>
      <link>https://forem.com/heyitsuzair/vps-deployment-guide-next-jsreact-js-github-actions-ff5</link>
      <guid>https://forem.com/heyitsuzair/vps-deployment-guide-next-jsreact-js-github-actions-ff5</guid>
      <description>&lt;p&gt;If you follow this exactly, your app will:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Deploy from GitHub with &lt;code&gt;.env&lt;/code&gt; replaced each time&lt;/li&gt;
&lt;li&gt;Serve over HTTPS automatically&lt;/li&gt;
&lt;li&gt;Keep running after reboots&lt;/li&gt;
&lt;li&gt;Renew SSL certs without downtime&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;0️⃣ Prerequisites&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;VPS with &lt;strong&gt;Ubuntu/Debian&lt;/strong&gt; OR &lt;strong&gt;CentOS/AlmaLinux/Amazon Linux&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Domain pointing to VPS IP (A record set in DNS)&lt;/li&gt;
&lt;li&gt;GitHub repo with app code&lt;/li&gt;
&lt;li&gt;SSH access to VPS&lt;/li&gt;
&lt;li&gt;GitHub Actions enabled&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;1️⃣ Install Required Packages&lt;/strong&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Ubuntu/Debian&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt update &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;sudo &lt;/span&gt;apt upgrade &lt;span class="nt"&gt;-y&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;curl git nginx ufw &lt;span class="nt"&gt;-y&lt;/span&gt;
curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://deb.nodesource.com/setup_22.x | &lt;span class="nb"&gt;sudo&lt;/span&gt; &lt;span class="nt"&gt;-E&lt;/span&gt; bash -
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-y&lt;/span&gt; nodejs
&lt;span class="nb"&gt;sudo &lt;/span&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; pm2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;strong&gt;CentOS / AlmaLinux / Amazon Linux&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;yum update &lt;span class="nt"&gt;-y&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;yum &lt;span class="nb"&gt;install &lt;/span&gt;curl git nginx &lt;span class="nt"&gt;-y&lt;/span&gt;
curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://rpm.nodesource.com/setup_22.x | &lt;span class="nb"&gt;sudo &lt;/span&gt;bash -
&lt;span class="nb"&gt;sudo &lt;/span&gt;yum &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-y&lt;/span&gt; nodejs
&lt;span class="nb"&gt;sudo &lt;/span&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; pm2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  &lt;strong&gt;2️⃣ Create a Repo-Level Deploy Key&lt;/strong&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ssh-keygen &lt;span class="nt"&gt;-t&lt;/span&gt; rsa &lt;span class="nt"&gt;-b&lt;/span&gt; 4096 &lt;span class="nt"&gt;-C&lt;/span&gt; &lt;span class="s2"&gt;"deploy-key"&lt;/span&gt;
&lt;span class="c"&gt;# Save as: /home/ubuntu/.ssh/deploy_key_example&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Press &lt;strong&gt;Enter&lt;/strong&gt; twice for no passphrase.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;3️⃣ Add Public Key to GitHub Repo&lt;/strong&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cat&lt;/span&gt; ~/.ssh/deploy_key_example.pub
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;GitHub Repo → &lt;strong&gt;Settings → Deploy Keys → Add Deploy Key&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Name: &lt;code&gt;VPS Deploy Key&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Paste the public key&lt;/li&gt;
&lt;li&gt;✅ Check “Allow write access” (optional)&lt;/li&gt;
&lt;li&gt;Save&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;4️⃣ Configure SSH for GitHub&lt;/strong&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nano ~/.ssh/config
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Paste:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ssh"&gt;&lt;code&gt;&lt;span class="k"&gt;Host&lt;/span&gt; github-example
  &lt;span class="k"&gt;HostName&lt;/span&gt; github.com
  &lt;span class="k"&gt;User&lt;/span&gt; git
  &lt;span class="k"&gt;IdentityFile&lt;/span&gt; ~/.ssh/deploy_key_example
  &lt;span class="k"&gt;IdentitiesOnly&lt;/span&gt; &lt;span class="no"&gt;yes&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  &lt;strong&gt;5️⃣ Clone the Repo&lt;/strong&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; /var/www
&lt;span class="nb"&gt;sudo chown&lt;/span&gt; &lt;span class="nv"&gt;$USER&lt;/span&gt;:&lt;span class="nv"&gt;$USER&lt;/span&gt; /var/www
&lt;span class="nb"&gt;cd&lt;/span&gt; /var/www
git clone git@github-example:username/repo-name.git example-app
&lt;span class="nb"&gt;cd &lt;/span&gt;example-app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  &lt;strong&gt;6️⃣ Install Dependencies&lt;/strong&gt;
&lt;/h2&gt;



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

&lt;/div&gt;






&lt;h2&gt;
  
  
  &lt;strong&gt;7️⃣ Build the App&lt;/strong&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Next.js&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm run build
pm2 start npm &lt;span class="nt"&gt;--name&lt;/span&gt; &lt;span class="s2"&gt;"example-app"&lt;/span&gt; &lt;span class="nt"&gt;--&lt;/span&gt; start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;strong&gt;React&lt;/strong&gt;
&lt;/h3&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;
  
  
  &lt;strong&gt;8️⃣ Install SSL&lt;/strong&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Ubuntu/Debian&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;certbot python3-certbot-nginx &lt;span class="nt"&gt;-y&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;certbot certonly &lt;span class="nt"&gt;--nginx&lt;/span&gt; &lt;span class="nt"&gt;-d&lt;/span&gt; example.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;strong&gt;CentOS / AlmaLinux / Amazon Linux&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;yum &lt;span class="nb"&gt;install &lt;/span&gt;certbot python3-certbot-nginx &lt;span class="nt"&gt;-y&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;certbot certonly &lt;span class="nt"&gt;--nginx&lt;/span&gt; &lt;span class="nt"&gt;-d&lt;/span&gt; example.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  &lt;strong&gt;9️⃣ Nginx Configuration (With SSL)&lt;/strong&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Ubuntu/Debian&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;nano /etc/nginx/sites-available/example.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;strong&gt;CentOS / AlmaLinux / Amazon Linux&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;nano /etc/nginx/conf.d/example.com.conf
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h4&gt;
  
  
  &lt;strong&gt;Next.js (SSR)&lt;/strong&gt;
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight nginx"&gt;&lt;code&gt;&lt;span class="k"&gt;server&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kn"&gt;listen&lt;/span&gt; &lt;span class="mi"&gt;80&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kn"&gt;server_name&lt;/span&gt; &lt;span class="s"&gt;example.com&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kn"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;301&lt;/span&gt; &lt;span class="s"&gt;https://&lt;/span&gt;&lt;span class="nv"&gt;$host$request_uri&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;server&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kn"&gt;listen&lt;/span&gt; &lt;span class="mi"&gt;443&lt;/span&gt; &lt;span class="s"&gt;ssl&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kn"&gt;server_name&lt;/span&gt; &lt;span class="s"&gt;example.com&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="kn"&gt;ssl_certificate&lt;/span&gt; &lt;span class="n"&gt;/etc/letsencrypt/live/example.com/fullchain.pem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kn"&gt;ssl_certificate_key&lt;/span&gt; &lt;span class="n"&gt;/etc/letsencrypt/live/example.com/privkey.pem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="kn"&gt;location&lt;/span&gt; &lt;span class="n"&gt;/&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="kn"&gt;proxy_pass&lt;/span&gt; &lt;span class="s"&gt;http://localhost:&amp;lt;PORT_OF_YOUR_APP&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="kn"&gt;proxy_http_version&lt;/span&gt; &lt;span class="mf"&gt;1.1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="kn"&gt;proxy_set_header&lt;/span&gt; &lt;span class="s"&gt;Upgrade&lt;/span&gt; &lt;span class="nv"&gt;$http_upgrade&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="kn"&gt;proxy_set_header&lt;/span&gt; &lt;span class="s"&gt;Connection&lt;/span&gt; &lt;span class="s"&gt;'upgrade'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="kn"&gt;proxy_set_header&lt;/span&gt; &lt;span class="s"&gt;Host&lt;/span&gt; &lt;span class="nv"&gt;$host&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="kn"&gt;proxy_cache_bypass&lt;/span&gt; &lt;span class="nv"&gt;$http_upgrade&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;h4&gt;
  
  
  &lt;strong&gt;React (Static)&lt;/strong&gt;
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight nginx"&gt;&lt;code&gt;&lt;span class="k"&gt;server&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kn"&gt;listen&lt;/span&gt; &lt;span class="mi"&gt;80&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kn"&gt;server_name&lt;/span&gt; &lt;span class="s"&gt;example.com&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kn"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;301&lt;/span&gt; &lt;span class="s"&gt;https://&lt;/span&gt;&lt;span class="nv"&gt;$host$request_uri&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;server&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kn"&gt;listen&lt;/span&gt; &lt;span class="mi"&gt;443&lt;/span&gt; &lt;span class="s"&gt;ssl&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kn"&gt;server_name&lt;/span&gt; &lt;span class="s"&gt;example.com&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="kn"&gt;ssl_certificate&lt;/span&gt; &lt;span class="n"&gt;/etc/letsencrypt/live/example.com/fullchain.pem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kn"&gt;ssl_certificate_key&lt;/span&gt; &lt;span class="n"&gt;/etc/letsencrypt/live/example.com/privkey.pem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="kn"&gt;root&lt;/span&gt; &lt;span class="n"&gt;/var/www/example-app/build&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kn"&gt;index&lt;/span&gt; &lt;span class="s"&gt;index.html&lt;/span&gt; &lt;span class="s"&gt;index.htm&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="kn"&gt;location&lt;/span&gt; &lt;span class="n"&gt;/&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="kn"&gt;try_files&lt;/span&gt; &lt;span class="nv"&gt;$uri&lt;/span&gt; &lt;span class="n"&gt;/index.html&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;h2&gt;
  
  
  &lt;strong&gt;🔟 Enable Config &amp;amp; Restart Nginx&lt;/strong&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Ubuntu/Debian&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo ln&lt;/span&gt; &lt;span class="nt"&gt;-s&lt;/span&gt; /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled
&lt;span class="nb"&gt;sudo &lt;/span&gt;nginx &lt;span class="nt"&gt;-t&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl restart nginx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;strong&gt;CentOS / AlmaLinux / Amazon Linux&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;nginx &lt;span class="nt"&gt;-t&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl restart nginx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  &lt;strong&gt;1️⃣1️⃣ Enable PM2 Auto-Start (Next.js Only)&lt;/strong&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pm2 save
pm2 startup
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Follow the command PM2 outputs and run it.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;1️⃣2️⃣ Enable Automatic SSL Renewal&lt;/strong&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;certbot renew &lt;span class="nt"&gt;--dry-run&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Add a cron job:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;crontab &lt;span class="nt"&gt;-e&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Paste:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;0 3 * * * /usr/bin/certbot renew --quiet &amp;amp;&amp;amp; /bin/systemctl reload nginx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  &lt;strong&gt;1️⃣3️⃣ GitHub Actions Deployment Pipeline&lt;/strong&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Next.js&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Deploy Next.js to VPS&lt;/span&gt;

&lt;span class="na"&gt;on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;push&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;branches&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt; &lt;span class="nv"&gt;main&lt;/span&gt; &lt;span class="pi"&gt;]&lt;/span&gt;

&lt;span class="na"&gt;jobs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;deploy&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;runs-on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ubuntu-latest&lt;/span&gt;
    &lt;span class="na"&gt;steps&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;actions/checkout@v3&lt;/span&gt;

      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Deploy via SSH&lt;/span&gt;
        &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;appleboy/ssh-action@master&lt;/span&gt;
        &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;host&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;${{ secrets.VPS_HOST }}&lt;/span&gt;
          &lt;span class="na"&gt;username&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;${{ secrets.VPS_USER }}&lt;/span&gt;
          &lt;span class="na"&gt;key&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;${{ secrets.VPS_KEY }}&lt;/span&gt;
          &lt;span class="na"&gt;script&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;|&lt;/span&gt;
            &lt;span class="s"&gt;cd /var/www/example-app&lt;/span&gt;
            &lt;span class="s"&gt;git pull origin main&lt;/span&gt;
            &lt;span class="s"&gt;rm -f .env&lt;/span&gt;
            &lt;span class="s"&gt;echo "${{ secrets.ENV_FILE }}" &amp;gt; .env&lt;/span&gt;
            &lt;span class="s"&gt;npm install&lt;/span&gt;
            &lt;span class="s"&gt;npm run build&lt;/span&gt;
            &lt;span class="s"&gt;pm2 restart example-app&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  &lt;strong&gt;React&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Deploy React to VPS&lt;/span&gt;

&lt;span class="na"&gt;on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;push&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;branches&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt; &lt;span class="nv"&gt;main&lt;/span&gt; &lt;span class="pi"&gt;]&lt;/span&gt;

&lt;span class="na"&gt;jobs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;deploy&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;runs-on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ubuntu-latest&lt;/span&gt;
    &lt;span class="na"&gt;steps&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;actions/checkout@v3&lt;/span&gt;

      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Deploy via SSH&lt;/span&gt;
        &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;appleboy/ssh-action@master&lt;/span&gt;
        &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;host&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;${{ secrets.VPS_HOST }}&lt;/span&gt;
          &lt;span class="na"&gt;username&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;${{ secrets.VPS_USER }}&lt;/span&gt;
          &lt;span class="na"&gt;key&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;${{ secrets.VPS_KEY }}&lt;/span&gt;
          &lt;span class="na"&gt;script&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;|&lt;/span&gt;
            &lt;span class="s"&gt;cd /var/www/example-app&lt;/span&gt;
            &lt;span class="s"&gt;git pull origin main&lt;/span&gt;
            &lt;span class="s"&gt;rm -f .env&lt;/span&gt;
            &lt;span class="s"&gt;echo "${{ secrets.ENV_FILE }}" &amp;gt; .env&lt;/span&gt;
            &lt;span class="s"&gt;npm install&lt;/span&gt;
            &lt;span class="s"&gt;npm run build&lt;/span&gt;
            &lt;span class="s"&gt;sudo systemctl restart nginx&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  &lt;strong&gt;1️⃣4️⃣ Add GitHub Secrets&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;In &lt;strong&gt;GitHub Repo → Settings → Secrets → Actions&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;VPS_HOST&lt;/code&gt; → VPS IP&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;VPS_USER&lt;/code&gt; → &lt;code&gt;ubuntu&lt;/code&gt; (or VPS username)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;VPS_KEY&lt;/code&gt; → contents of &lt;code&gt;~/.ssh/deploy_key_example&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;ENV_FILE&lt;/code&gt; → entire &lt;code&gt;.env&lt;/code&gt; file contents&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  ✅ Key Differences
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;Next.js (SSR)&lt;/th&gt;
&lt;th&gt;React (Static)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Build Command&lt;/td&gt;
&lt;td&gt;&lt;code&gt;npm run build&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;npm run build&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Serve Method&lt;/td&gt;
&lt;td&gt;PM2 Node.js process&lt;/td&gt;
&lt;td&gt;Nginx static serve&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Nginx Role&lt;/td&gt;
&lt;td&gt;Reverse proxy to Node server&lt;/td&gt;
&lt;td&gt;Directly serve &lt;code&gt;/build&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Port Required&lt;/td&gt;
&lt;td&gt;✅ &lt;code&gt;&amp;lt;PORT_OF_YOUR_APP&amp;gt;&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PM2 Required&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




</description>
      <category>nextjs</category>
      <category>vps</category>
      <category>node</category>
      <category>prisma</category>
    </item>
    <item>
      <title>Deploy Next JS App To Cpanel Using Github Actions</title>
      <dc:creator>Muhammad Uzair</dc:creator>
      <pubDate>Sat, 04 Nov 2023 17:01:35 +0000</pubDate>
      <link>https://forem.com/heyitsuzair/deploy-next-js-app-to-cpanel-using-github-actions-1nl9</link>
      <guid>https://forem.com/heyitsuzair/deploy-next-js-app-to-cpanel-using-github-actions-1nl9</guid>
      <description>&lt;p&gt;Deployment can be a challenging and time-consuming process if you zip files manually, put the zip on the server, and extract the files each time🥴&lt;/p&gt;

&lt;p&gt;Github actions solve this problem by giving us an automated CI/CD platform.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Prerequisite&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;FTP account created in cpanel (&lt;a href="https://support.cpanel.net/hc/en-us/articles/1500012573002-How-to-create-an-FTP-account" rel="noopener noreferrer"&gt;Check this link&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Configuration of FTP Details in github repository secrets, if you don't know how to add one, you can check this &lt;a href="https://docs.github.com/en/actions/security-guides/using-secrets-in-github-actions#creating-secrets-for-a-repository" rel="noopener noreferrer"&gt;link&lt;/a&gt; out&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You should have 3 mandatory repository secrets in your repo settings&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;FTP_HOST&lt;/li&gt;
&lt;li&gt;FTP_USERNAME&lt;/li&gt;
&lt;li&gt;FTP_PASSWORD&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Setting Up Cpanel&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Before proceeding, create an empty nodejs app in CPanel with the application startup file named as &lt;code&gt;server.js&lt;/code&gt;, you can visit this &lt;a href="https://www.inmotionhosting.com/support/edu/cpanel/setup-node-js-app/" rel="noopener noreferrer"&gt;link&lt;/a&gt; for reference&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Process&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;In your &lt;code&gt;next.config.js&lt;/code&gt;, add the following line&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  distDir: "_next",
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Create a file named as &lt;code&gt;server.js&lt;/code&gt; in root of your directory and add the following code in it&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const { createServer } = require("http");
const { parse } = require("url");
const next = require("next");

const dev = process.env.NODE_ENV !== "production";
const hostname = "localhost";
const port = process.env.PORT || 3000;

const app = next({ dev, hostname, port });
const handle = app.getRequestHandler();

app.prepare().then(() =&amp;gt; {
  createServer(async (req, res) =&amp;gt; {
    try {
      const parsedUrl = parse(req.url, true);
      const { pathname, query } = parsedUrl;

      if (pathname === "/a") {
        await app.render(req, res, "/a", query);
      } else if (pathname === "/b") {
        await app.render(req, res, "/b", query);
      } else {
        await handle(req, res, parsedUrl);
      }
    } catch (err) {
      console.error("Error occurred handling", req.url, err);
      res.statusCode = 500;
      res.end("internal server error");
    }
  }).listen(port, (err) =&amp;gt; {
    if (err) throw err;
    console.log(`&amp;gt; Ready on http://${hostname}:${port}`);
  });
});
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Create a file named &lt;code&gt;deploy.yml&lt;/code&gt;, the path of the file should be&lt;/p&gt;

&lt;p&gt;&lt;code&gt;/projectpath/.github/workflows/deploy.yml&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Look I am not going to take much of your time, so if you only want to know the code, here it is.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;name: Deploy to FTP

on:
  push:
    branches:
      - master  # Adjust the branch name if needed

jobs:
  deploy:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout code
        uses: actions/checkout@v2

      - name: Set up Node.js
        uses: actions/setup-node@v2
        with:
          node-version: 14.21.2  # Use the desired Node.js version

      - name: Install dependencies and build Next.js app
        run: |
          yarn install  # Install project dependencies
          touch .env.local
          echo MONGO_URL=${{ secrets.MONGO_URL }} &amp;gt;&amp;gt; .env.local
          echo JWT_SECRET=${{ secrets.JWT_SECRET }} &amp;gt;&amp;gt; .env.local
          yarn build  # Build Next.js app

      - name: Deploy via FTPS
        uses: SamKirkland/FTP-Deploy-Action@4.3.3
        with:
          server: ${{ secrets.FTP_HOST }}
          username: ${{ secrets.FTP_USERNAME }}
          password: ${{ secrets.FTP_PASSWORD }}
          local-dir: ./  # This points to the build output directory of your Next.js app
          server-dir: /
          protocol: ftps
          timeout: 300000  # Set a longer timeout value in milliseconds (here, 2 minutes)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Lets breakdown steps&lt;/p&gt;

&lt;h2&gt;
  
  
  Checkout Code
&lt;/h2&gt;

&lt;p&gt;This action checks-out your repository under $GITHUB_WORKSPACE, so your workflow can access it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Set up Node.js
&lt;/h2&gt;

&lt;p&gt;This step involves setting up your GitHub Actions workflow with a specific version of node.js, in our case, we set it up to 14.21.2, that's the lastest version upto which cpanel supports.&lt;/p&gt;

&lt;h2&gt;
  
  
  Install dependencies and build Next.js app
&lt;/h2&gt;

&lt;p&gt;In this step, we can run commands like yarn install/npm install to install the dependencies required to run our app. It also includes getting env values from repo secrets and setting them in &lt;code&gt;.env.local&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Deploy via FTPS
&lt;/h2&gt;

&lt;p&gt;This step involves deploying built code on the server using ftp account&lt;/p&gt;

</description>
    </item>
    <item>
      <title>WordPress Vs Coding. Which One To Go For?</title>
      <dc:creator>Muhammad Uzair</dc:creator>
      <pubDate>Sat, 09 Sep 2023 12:57:48 +0000</pubDate>
      <link>https://forem.com/heyitsuzair/wordpress-vs-coding-18o1</link>
      <guid>https://forem.com/heyitsuzair/wordpress-vs-coding-18o1</guid>
      <description>&lt;p&gt;WordPress and coding are two different approaches to building websites, and the choice between them depends on your specific needs and preferences. Let's compare the two&lt;/p&gt;

&lt;h2&gt;
  
  
  🚀 &lt;strong&gt;WordPress&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Look, I am not going to take much of your time. If you only want to know keypoints, here they are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ease of Use&lt;/li&gt;
&lt;li&gt;Templates and Plugins&lt;/li&gt;
&lt;li&gt;Community and Support&lt;/li&gt;
&lt;li&gt;Speed of Development&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  &lt;em&gt;1. Ease of Use&lt;/em&gt;
&lt;/h1&gt;

&lt;p&gt;WordPress is a &lt;strong&gt;content management system&lt;/strong&gt; (CMS) that is known for its user-friendly interface. You don't need extensive coding knowledge to create and manage a WordPress website. &lt;/p&gt;

&lt;p&gt;It's a great choice for &lt;strong&gt;beginners&lt;/strong&gt; and those who want to quickly set up a website without diving deep into coding.&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;em&gt;2. Templates and Plugins&lt;/em&gt;
&lt;/h1&gt;

&lt;p&gt;WordPress offers a wide range of &lt;strong&gt;pre-designed&lt;/strong&gt; templates (themes) and plugins that can add various functionalities to your site. This makes it easy to customize your website without writing a lot of code.&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;em&gt;3. Community and Support&lt;/em&gt;
&lt;/h1&gt;

&lt;p&gt;WordPress has a &lt;strong&gt;large and active&lt;/strong&gt; community of users and developers, which means you can find plenty of support, tutorials, and resources online. &lt;/p&gt;

&lt;p&gt;There are also many third-party services that specialize in WordPress hosting and maintenance.&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;em&gt;4. Speed of Development&lt;/em&gt;
&lt;/h1&gt;

&lt;p&gt;With WordPress, you can get a basic website up and running very quickly, which can be a significant advantage for small businesses or personal blogs.&lt;/p&gt;

&lt;h2&gt;
  
  
  🚀 &lt;strong&gt;Coding&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;If you only want to know keypoints, here they are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Customization&lt;/li&gt;
&lt;li&gt;Scalability&lt;/li&gt;
&lt;li&gt;Security&lt;/li&gt;
&lt;li&gt;Learning Curve&lt;/li&gt;
&lt;li&gt;Maintenance&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  &lt;em&gt;1. Customization&lt;/em&gt;
&lt;/h1&gt;

&lt;p&gt;Coding gives you complete control over every aspect of your website. You can create a truly unique and highly customized website tailored to your specific needs. T&lt;/p&gt;

&lt;p&gt;his is particularly important for &lt;strong&gt;complex&lt;/strong&gt; or &lt;strong&gt;highly&lt;/strong&gt; specialized projects.&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;em&gt;2. Scalability&lt;/em&gt;
&lt;/h1&gt;

&lt;p&gt;Coding allows for more &lt;strong&gt;scalability&lt;/strong&gt; and &lt;strong&gt;flexibility&lt;/strong&gt;. If your website needs to handle a lot of traffic or requires unique features, coding from scratch or using a framework can provide better performance and adaptability.&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;em&gt;3. Security&lt;/em&gt;
&lt;/h1&gt;

&lt;p&gt;While WordPress is generally &lt;strong&gt;secure&lt;/strong&gt;, coding your website from scratch allows you to implement security measures specific to your site's needs. &lt;/p&gt;

&lt;p&gt;This can be crucial for websites that handle &lt;strong&gt;sensitive&lt;/strong&gt; data.&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;em&gt;4. Learning Curve&lt;/em&gt;
&lt;/h1&gt;

&lt;p&gt;Learning to code and building a website from scratch can be &lt;strong&gt;challenging&lt;/strong&gt;, especially if you have no prior experience. &lt;/p&gt;

&lt;p&gt;It requires a good understanding of web development languages like HTML, CSS, JavaScript, and potentially server-side languages like PHP or Python.&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;em&gt;5. Maintenance&lt;/em&gt;
&lt;/h1&gt;

&lt;p&gt;Websites built from code require ongoing maintenance and updates, which can be &lt;strong&gt;time-consuming&lt;/strong&gt; and may require more technical expertise.&lt;/p&gt;

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

&lt;p&gt;In summary, if you need a simple website quickly and don't want to deal with coding, WordPress is a solid choice. &lt;/p&gt;

&lt;p&gt;On the other hand, if you require a highly customized or complex website with specific features, coding may be the better option. &lt;/p&gt;

&lt;p&gt;Some projects may even involve a combination of both, where you use WordPress for the frontend and custom coding for specialized backend functionality. Ultimately, the decision depends on your project's requirements and your own skillset or the resources available to you.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Don't forget to like and follow.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Follow Me On GitHub, Linkedin And Instagram For More Valuable Content:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/heyitsuzair" rel="noopener noreferrer"&gt;https://github.com/heyitsuzair&lt;/a&gt;&lt;br&gt;
&lt;a href="https://linkedin.com/in/uzair-dev" rel="noopener noreferrer"&gt;https://linkedin.com/in/uzair-dev&lt;/a&gt;&lt;br&gt;
&lt;a href="https://instagram.com/codewith_uzair" rel="noopener noreferrer"&gt;https://instagram.com/codewith_uzair&lt;/a&gt;&lt;/p&gt;

</description>
      <category>wordpress</category>
      <category>coding</category>
      <category>webdev</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Flutter Vs React Native. Which one to choose in 2023?</title>
      <dc:creator>Muhammad Uzair</dc:creator>
      <pubDate>Sat, 01 Apr 2023 09:59:02 +0000</pubDate>
      <link>https://forem.com/heyitsuzair/flutter-vs-react-native-which-one-to-choose-in-2023-496j</link>
      <guid>https://forem.com/heyitsuzair/flutter-vs-react-native-which-one-to-choose-in-2023-496j</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%2Ffjum85zszmk9t4upw4dm.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%2Ffjum85zszmk9t4upw4dm.png" alt="React Native Vs Flutter" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  ⚛️What is React Native?
&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%2Ffhq8vy8py0twft74tejo.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%2Ffhq8vy8py0twft74tejo.png" alt="React" width="196" height="178"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;React Native is a framework that combines the best parts of native development with React to build user interfaces. Facebook developed React Native in 2015. It is an open-source framework that is based on JavaScript. &lt;/p&gt;

&lt;p&gt;It also provides a similar feature, using the same codebase to create cross-platform apps, thus eliminating the need to compile other technologies for creating mobile apps. Skype, Instagram, Uber Eats, etc., depends upon React Native for development. It lets you build mobile apps using only JavaScript. &lt;/p&gt;

&lt;p&gt;These mobile applications are downloadable on Google Play Store and Apple Store. React Native is similar to React (JavaScript Library). So if you are a react developer, then you will find react native an easy path.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Advantages of using React Native&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Uses JavaScript&lt;/li&gt;
&lt;li&gt;Can create apps for multiple platforms using a single codebase&lt;/li&gt;
&lt;li&gt;Understands the importance of code reusability and promotes it&lt;/li&gt;
&lt;li&gt;Growing and active community&lt;/li&gt;
&lt;li&gt;Helps in accelerating coding time&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Disadvantages of using React Native&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Not native&lt;/li&gt;
&lt;li&gt;Does not provide innovative, out-of-the-box components&lt;/li&gt;
&lt;li&gt;Limited choices&lt;/li&gt;
&lt;li&gt;Abandoned libraries and packages&lt;/li&gt;
&lt;li&gt;UI can be hampered easily and needs to undergo vigorous UI testing&lt;/li&gt;
&lt;li&gt;Larger apps&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🚀What is Flutter?
&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%2Ffvz2xvbl9hx97k3x8qb7.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%2Ffvz2xvbl9hx97k3x8qb7.png" alt="Flutter" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Flutter is a cross-platform mobile app development framework developed by Google. It gives developers an easy way to build and deploy visually attractive, natively compiled applications for mobile (iOS, Android), web, and desktop, all using a single code base. Flutter is based on dart programming language.&lt;/p&gt;

&lt;p&gt;A lot of big companies like Alibaba, Philips Hue, Hamilton, etc., choose Flutter for development. Moreover, Google frequently provides updates for Flutter, improving its performance with each update. &lt;/p&gt;

&lt;p&gt;Now that you know what the two frameworks are, look at some of the differences between the two.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Advantages of using Flutter&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Great UI&lt;/li&gt;
&lt;li&gt;Has a number of widgets&lt;/li&gt;
&lt;li&gt;Apps are faster&lt;/li&gt;
&lt;li&gt;Helps build web apps (Flutter 2)&lt;/li&gt;
&lt;li&gt;Well-structured documentation and community&lt;/li&gt;
&lt;li&gt;Helps replicate and create the same UI for different devices &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Disadvantages of using Flutter&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Not native&lt;/li&gt;
&lt;li&gt;Apps are larger&lt;/li&gt;
&lt;li&gt;Has a limited set of tools&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;We really hope that this Flutter vs React Native article has given you some clarity and understanding about these two frameworks. &lt;/p&gt;

&lt;p&gt;Overall, after all the above research, we can conclude that Flutter is a great choice to save time and money on mobile app development.&lt;/p&gt;

</description>
      <category>reactnative</category>
      <category>flutter</category>
      <category>javascript</category>
      <category>dart</category>
    </item>
    <item>
      <title>Will AI Replace Developers?</title>
      <dc:creator>Muhammad Uzair</dc:creator>
      <pubDate>Tue, 21 Mar 2023 02:07:24 +0000</pubDate>
      <link>https://forem.com/heyitsuzair/will-ai-replace-developers-2oop</link>
      <guid>https://forem.com/heyitsuzair/will-ai-replace-developers-2oop</guid>
      <description>&lt;p&gt;Are you worried about the rise of AI and its potential to replace developers? Many people share this concern, but the reality is more complex than we might think. In this article, we’ll explore the relationship between AI and developers and address some common misconceptions.&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%2F68e11g08uhn1r8mgnp8s.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%2F68e11g08uhn1r8mgnp8s.png" alt="Banner" width="800" height="240"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🔥 The Reality of AI and Developers
&lt;/h2&gt;

&lt;p&gt;First, let’s consider the ways in which AI and developers are already working together. Here are some examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Automating repetitive tasks: AI can take care of tedious and time-consuming tasks, such as testing and debugging, freeing up developers to focus on more creative and high-value work.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Enhancing software testing: AI can help improve software testing by automatically identifying bugs and suggesting improvements.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Improving code quality: AI can analyze code to identify potential vulnerabilities and recommend changes to improve its quality.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As you can see, AI and development are not mutually exclusive fields. Instead, they complement each other in various ways.&lt;/p&gt;

&lt;h2&gt;
  
  
  🤔 How Can AI Simplify Human Work?
&lt;/h2&gt;

&lt;p&gt;Frameworks as development frameworks or libraries with definitions already naturally simplify the work of software developers. Developments such as containerization or the serverless concept also go in this direction.&lt;/p&gt;

&lt;p&gt;The developers take care of the heart of the application, while the runtime environment is made available by others. More or less annoying peripheral tasks, such as the implementation and configuration of the hardware, the management of the traffic, and the like, are no longer necessary.&lt;/p&gt;

&lt;p&gt;An example: A creative web designer could in future hand over his mockup to the AI, which then creates the HTML code from it. All the rules and all the knowledge that the AI ​​needs for this would be very easy to teach it.&lt;/p&gt;

&lt;h2&gt;
  
  
  🎩 How Will AI Impact Programming Jobs?
&lt;/h2&gt;

&lt;p&gt;The fact also seems that the work of software developers will change fundamentally. Neural networks or artificial intelligence will help improve digital work, but they will hardly replace developers in the foreseeable future.&lt;/p&gt;

&lt;p&gt;We are already using small-scale learning systems – from the auto-completion already mentioned in the Google search to playlists from the music streaming service provider that always offers the right music according to individual taste, current mood, and times of the day.&lt;/p&gt;

&lt;p&gt;The need for application developers has increased significantly. Digitization is taking place in all areas of life and work – after all, someone has to develop the AI, control it, and set the framework and data.&lt;/p&gt;

&lt;h2&gt;
  
  
  😀 How Can AI Help Programmers?
&lt;/h2&gt;

&lt;p&gt;In the meantime, before replacing them, AI rather begins to integrate with programming tools to help developers improve the quality of their code and speed up their work. Thus, the new Visual Studio 2019 incorporates an AI called &lt;em&gt;IntelliCode&lt;/em&gt;, which helps in formatting the code and provides recommendations. &lt;em&gt;Kite&lt;/em&gt; does the same for programming in Python. &lt;em&gt;DeepCode&lt;/em&gt; scans source codes for vulnerabilities.&lt;/p&gt;

&lt;p&gt;Google also has a bug prediction AI. Another example, “ &lt;em&gt;Sketch 2Code&lt;/em&gt; “, is based on an AI which transforms interface drawings made by hand into HTML code&lt;/p&gt;

&lt;h2&gt;
  
  
  🔥 What is the Future of AI?
&lt;/h2&gt;

&lt;p&gt;In short, AI ​​is not yet ready to replace programmers. But current projects demonstrate that we will be able to ask him to code for himself in the relatively near future. In the meantime, it is part of the “augmented” developer movement, allowing it to produce fewer bugs and code faster.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Don't forget to like and follow.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Happy Coding ☺️&lt;/p&gt;

</description>
      <category>ai</category>
      <category>gpt3</category>
      <category>chatgpt</category>
      <category>python</category>
    </item>
    <item>
      <title>Roadmap To Become A Full Stack Web Developer In 2023</title>
      <dc:creator>Muhammad Uzair</dc:creator>
      <pubDate>Sat, 18 Mar 2023 14:59:39 +0000</pubDate>
      <link>https://forem.com/heyitsuzair/roadmap-to-become-a-full-stack-web-developer-in-2023-2237</link>
      <guid>https://forem.com/heyitsuzair/roadmap-to-become-a-full-stack-web-developer-in-2023-2237</guid>
      <description>&lt;p&gt;According to the US Bureau of Labor Statistics, the number of employment opportunities in the web development domain is expected to increase by 13% in 2020-2030. It is among the highest numbers concerning the average of all other professions.&lt;/p&gt;

&lt;p&gt;A web developer is a professional who develops websites for individuals or businesses. A full-stack web developer works on the front-end as well as the back-end components of the website. The front-end component entails how websites will look when delivered to the clients. The back-end component, on the other hand, stores and processes data securely.&lt;/p&gt;

&lt;p&gt;In today's digital era, where almost every business is looking for its own website, web developers are one of the most sought-after professionals. Due to their level of impact through their expertise, they fall under one of the most highly paid professionals.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. What is web development?
&lt;/h2&gt;

&lt;p&gt;Web development, as mentioned above, is a process that constitutes the development of a website. Let's understand how a website works and comprehend the distinctions between front-end and back-end development. Web Developer roadmap consists of learning of both these concepts.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. What’s the difference between front-end and back-end?
&lt;/h2&gt;

&lt;p&gt;The terminologies “front-end,” “back-end,” and “full-stack” web development outline which component of the client/server you’ll be working on (Here, “client” can be referred to as a web browser, like Google Chrome, Firefox, etc. whereas “server” is a web application server at a remote location that will process web requests and send pages to the client).&lt;/p&gt;

&lt;p&gt;“Front-end” refers to the tasks you'll be undertaking, majorly regarding the client side or the part of the website with which the user interacts. It’s known as the “front-end,” containing elements you can directly see through the browser. On the contrary, the “back-end” is the website component you can't see, but it deals with a ton of crucial functionality and logic and is responsible for the internal workings of a website.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Full-Stack Developer Roadmap - Top Skills A Full-Stack Developer Should Have
&lt;/h2&gt;

&lt;p&gt;Let us now look at the full-stack developer roadmap which will serve as a guide regarding the skills you need to learn to become a full-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%2Fhmx77zk7hwlfq9euo1nx.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%2Fhmx77zk7hwlfq9euo1nx.png" alt="Full Stack Roadmap" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🚀 Learn the Fundamentals - HTML, CSS, and JavaScript
&lt;/h2&gt;

&lt;p&gt;As we saw earlier, HTML, CSS, and JavaScript are three of the fundamental skills to become a front-end developer. Thus, you must make yourself familiar and comfortable with these three skills. This is the very first step in our front-end road map.&lt;/p&gt;

&lt;p&gt;🔸 Resource to learn HTML and CSS: &lt;a href="https://youtu.be/6mbwJ2xhgzM" rel="noopener noreferrer"&gt;https://youtu.be/6mbwJ2xhgzM&lt;/a&gt; (Tutorial 1 - 45)&lt;/p&gt;

&lt;p&gt;⚠️ Before diving into JavaScript make sure your basics of HTML And CSS are good. Practice by creating personal projects using HTML And CSS.&lt;/p&gt;

&lt;p&gt;🔸 Resource to learn JavaScript: &lt;a href="https://youtube.com/playlist?list=PLu0W_9lII9ahR1blWXxgSlL4y9iQBnLpR" rel="noopener noreferrer"&gt;https://youtube.com/playlist?list=PLu0W_9lII9ahR1blWXxgSlL4y9iQBnLpR&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🚀 Learn any of the CSS Frameworks
&lt;/h2&gt;

&lt;p&gt;Once you are comfortable with the basics - HTML, CSS, and JavaScript, it is time to move on to the next step in the roadmap for the front end, which is learning any of the CSS Frameworks. These frameworks would speed up the development process for you. CSS Frameworks like Bootstrap, Materialize, Tailwind (Preferred), Semantic UI, Bulma, etc. make it easier to develop a consistent website. &lt;/p&gt;

&lt;p&gt;⚠️ Before diving into the CSS framework, create at least 3 - 4 personal projects In HTML CSS JS without following any tutorial on youtube or somewhere else. It will make your fundamentals strong.&lt;/p&gt;

&lt;p&gt;🔸 Resource to learn Tailwind CSS: &lt;a href="https://youtu.be/OYdkBxbJFks" rel="noopener noreferrer"&gt;https://youtu.be/OYdkBxbJFks&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🚀 Learn any of the CSS Preprocessors
&lt;/h2&gt;

&lt;p&gt;CSS files can quickly become huge and difficult to maintain. Moreover, CSS doesn’t support some powerful programming features like variables and functions. Thus, we make use of CSS preprocessors that are scripting languages, extending the default capabilities of CSS. SASS/SCSS (Preferred), Stylus, and Less are a few popular preprocessors.&lt;/p&gt;

&lt;p&gt;🔸 Resource to learn SCSS: &lt;a href="https://youtu.be/tEQOdFgUXI4" rel="noopener noreferrer"&gt;https://youtu.be/tEQOdFgUXI4&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🚀 Learn any JavaScript Framework
&lt;/h2&gt;

&lt;p&gt;JavaScript framework is pre-written code to support features and benefits beyond plain or vanilla JavaScript. As these frameworks are built on top of JavaScript, it is possible to achieve all the features of a framework with normal JavaScript as well. However, these frameworks offer enhanced functionality without writing the code from scratch. This is the reason why Front End Developers usually prefer using a framework over plain JavaScript. Angular, React (Preferred), Vue.js, and Meteor are some of the popular JavaScript frameworks for front-end development. Express JS is the popular JavaScript framework for backend development. You can also find specialized roles in React, Angular, Vue, And Express JS&lt;/p&gt;

&lt;p&gt;🔸 Resource to learn React And Express JS: &lt;a href="https://youtu.be/-mJFZp84TIY" rel="noopener noreferrer"&gt;https://youtu.be/-mJFZp84TIY&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🚀 Learn State Management Libraries
&lt;/h2&gt;

&lt;p&gt;Along with any JavaScript Framework, it is recommended to learn State Management Libraries like Redux (Preferred), VueX, NgRX, XState, etc. depending on which framework you choose to learn. &lt;/p&gt;

&lt;p&gt;All the interactive web applications work by responding to “events”. When a certain event occurs, the “state” of your application, i.e. the data stored in variables, gets updated. The variables that determine the state of your interactive web application need to be stored somewhere. This is where State Management comes into the picture. It deals with storing and updating the state of the application. &lt;/p&gt;

&lt;p&gt;⚠️ Before diving into state management libraries make sure your react concepts (Context API, API Calls, useState And useEffect Hooks) are good. Make at least 2 - 3 Projects (some ideas - Netflix clone, todo app, weather app) without following any tutorial on youtube or somewhere else.&lt;/p&gt;

&lt;p&gt;🔸 Resource to learn Redux Toolkit: &lt;a href="https://youtu.be/bbkBuqC1rU4" rel="noopener noreferrer"&gt;https://youtu.be/bbkBuqC1rU4&lt;/a&gt; (Learn redux toolkit as it will save much of your time that official redux setup takes. It is also recommended by developers of redux to use the redux toolkit instead of core redux)&lt;/p&gt;

&lt;h2&gt;
  
  
  🚀 Learn the basics of Package Managers
&lt;/h2&gt;

&lt;p&gt;While working on Full Stack Development, you will come across Package Managers. A Package Manager is a tool that allows you to install, configure, update, and manage software packages, and product dependencies and also to publish your own packages. With the use of Package Managers, the development process is faster and easier as you can reuse code libraries created by other developers that are published to a central repository. NPM and Yarn (Preferred) are two popular package managers. &lt;/p&gt;

&lt;p&gt;🔸 You would have learned how to use npm in react js course that I mentioned above. For yarn, it works the same way as npm. There is not much difference b/w them. &lt;/p&gt;

&lt;p&gt;🔸 You can read this for yarn: &lt;a href="https://phoenixnap.com/kb/yarn-vs-npm#ftoc-heading-11" rel="noopener noreferrer"&gt;https://phoenixnap.com/kb/yarn-vs-npm#ftoc-heading-11&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🚀 Learn Version Control System
&lt;/h2&gt;

&lt;p&gt;A Version Control System is useful if you are working on a large project or need to collaborate with other developers. It is software that allows you to manage and track changes to the source code and also revert to a previous version of the code, instead of manually reverting the changes. Git is one of the most popular and widely used version control systems.&lt;/p&gt;

&lt;p&gt;🔸 Resource to learn Git: &lt;a href="https://youtu.be/evknSAkUIvs" rel="noopener noreferrer"&gt;https://youtu.be/evknSAkUIvs&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🚀 Learn Testing
&lt;/h2&gt;

&lt;p&gt;While many companies have dedicated Quality Assurance teams for extensive testing of the application, as a developer, you will be expected to perform basic testing of your application to ensure usability and functionality. Writing test cases for your code is a way to ensure that the code is working as expected. There are different levels of testing in front-end development like Unit Testing and End-to-End Testing. Several tools are available for testing like Jest (Preferred), Mocha, Jasmine, Cypress, etc.&lt;/p&gt;

&lt;p&gt;🔸 Resource to learn Jest: &lt;a href="https://youtu.be/T2sv8jXoP4s" rel="noopener noreferrer"&gt;https://youtu.be/T2sv8jXoP4s&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🚀 Learn Tools for Website Deployment
&lt;/h2&gt;

&lt;p&gt;Once you have built your website, you need to deploy this website so that anyone on the internet can visit the website and use it. To deploy a website, you will need to know the basics of hosting tools. You can use tools like Github Pages, Netlify, Vercel, etc. Cloud Providers like Amazon Web Services, Google Cloud Platform, and Microsoft Azure also provide hosting services.&lt;/p&gt;

&lt;p&gt;🔸 Resource to learn Vercel: &lt;a href="https://www.youtube.com/watch?v=IeFlfBR1lxw" rel="noopener noreferrer"&gt;https://www.youtube.com/watch?v=IeFlfBR1lxw&lt;/a&gt;&lt;br&gt;
🔸 Resource to learn Netlify: &lt;a href="https://youtu.be/OiGf_FUJFz4" rel="noopener noreferrer"&gt;https://youtu.be/OiGf_FUJFz4&lt;/a&gt;&lt;br&gt;
🔸 Resource to learn Github Pages: You would have learned Github Pages in react js course by Code With Harry that I mentioned above.&lt;/p&gt;

&lt;h2&gt;
  
  
  🚀 Learn Advanced Topic
&lt;/h2&gt;

&lt;p&gt;Practice, Practice, And Practice. Explore more things on your own. Research advanced topics of react and express js for example you can learn Next JS after learning to react or you can learn React Native for mobile application development. Just Don't Stop!&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Role of AI (Artificial Intelligence) In Web
&lt;/h2&gt;

&lt;p&gt;The role of AI in web development is massive. Its prominence has created business opportunities that would not have otherwise existed. For example, ride-sharing platforms like Uber and Lyft use AI to pair drivers and riders in real time. Their machine learning algorithm can predict when there will be demand for the service, so drivers can use this information to maximize their income. Now, these companies are amongst the largest in the world. Many enterprises use artificial intelligence to gather online insights to improve their operations and surpass their competitors. With all these benefits, it is difficult to predict that AI will lose its prominence in web development. It is likely to be used more and improved over time.&lt;/p&gt;

&lt;p&gt;Happy Coding! 😀&lt;/p&gt;

&lt;p&gt;Follow Me On GitHub And Linkedin For More Info: &lt;a href="https://github.com/heyitsuzair" rel="noopener noreferrer"&gt;https://github.com/heyitsuzair&lt;/a&gt;&lt;br&gt;
&lt;a href="https://linkedin.com/in/uzair-dev" rel="noopener noreferrer"&gt;https://linkedin.com/in/uzair-dev&lt;/a&gt;&lt;/p&gt;

</description>
      <category>node</category>
      <category>webdev</category>
      <category>javascript</category>
      <category>react</category>
    </item>
    <item>
      <title>Are You Bored Setting Up Node/Express Server Everytime You Start New Project? Setup Express App In Seconds</title>
      <dc:creator>Muhammad Uzair</dc:creator>
      <pubDate>Tue, 14 Mar 2023 23:55:11 +0000</pubDate>
      <link>https://forem.com/heyitsuzair/are-you-bored-setting-up-nodeexpress-server-everytime-you-start-new-project-setup-express-app-in-seconds-339h</link>
      <guid>https://forem.com/heyitsuzair/are-you-bored-setting-up-nodeexpress-server-everytime-you-start-new-project-setup-express-app-in-seconds-339h</guid>
      <description>&lt;p&gt;In This Article, We Will Learn How To Setup Express JS Boiler Plate In Some Seconds.&lt;/p&gt;

&lt;h2&gt;
  
  
  📌 Installation
&lt;/h2&gt;

&lt;p&gt;First Of All Install The CLI Globally So You Don't Need To Install It Every Time You Start A New Project.&lt;/p&gt;

&lt;p&gt;Install the CLI globally. If you are windows user, run your command prompt/terminal as administrator. If you are macOS user, add &lt;code&gt;sudo&lt;/code&gt; before the following command.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm i -g @heyitsuzair/express-setup
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  📌 Usage
&lt;/h2&gt;

&lt;p&gt;Enter the following in your terminal where you want to initialize app:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;new-express-app my-app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  📌 Features That Are Currently Supported By CLI
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;MongoDB Support&lt;/li&gt;
&lt;li&gt;Mongoose Support&lt;/li&gt;
&lt;li&gt;Nodemon Server&lt;/li&gt;
&lt;li&gt;A Dummy Predefined Routes, Controller And Model So You Can Start Working On It Right In&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>node</category>
      <category>express</category>
      <category>javascript</category>
      <category>mongodb</category>
    </item>
  </channel>
</rss>
