<?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: CodeWithArif</title>
    <description>The latest articles on Forem by CodeWithArif (@codewitharif).</description>
    <link>https://forem.com/codewitharif</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%2F825136%2Fd32e6159-d6ad-46be-a9ac-137c89515482.jpg</url>
      <title>Forem: CodeWithArif</title>
      <link>https://forem.com/codewitharif</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/codewitharif"/>
    <language>en</language>
    <item>
      <title>QUIZER</title>
      <dc:creator>CodeWithArif</dc:creator>
      <pubDate>Mon, 21 Mar 2022 17:51:44 +0000</pubDate>
      <link>https://forem.com/codewitharif/quizer-3pmb</link>
      <guid>https://forem.com/codewitharif/quizer-3pmb</guid>
      <description>&lt;p&gt;A premium quality open-source discord bot specially crafted for hosting and managing quizes autometically and punctually.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/arif-2005/Quizer-v2"&gt;Check GitHub&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Here are some screenshots of QUIZER Bot.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;

&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--CJX86mU_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/arif-2005/Quizer-v2/master/docs/1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--CJX86mU_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/arif-2005/Quizer-v2/master/docs/1.png" width="880" height="495"&gt;&lt;/a&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--YtRCrIpb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/arif-2005/Quizer-v2/master/docs/2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--YtRCrIpb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/arif-2005/Quizer-v2/master/docs/2.png" width="880" height="495"&gt;&lt;/a&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--G4E2PzvW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/arif-2005/Quizer-v2/master/docs/3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--G4E2PzvW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/arif-2005/Quizer-v2/master/docs/3.png" width="880" height="495"&gt;&lt;/a&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Jp23U0xW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/arif-2005/Quizer-v2/master/docs/4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Jp23U0xW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/arif-2005/Quizer-v2/master/docs/4.png" width="880" height="495"&gt;&lt;/a&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rKZNu_kV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/arif-2005/Quizer-v2/master/docs/5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rKZNu_kV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/arif-2005/Quizer-v2/master/docs/5.png" width="880" height="495"&gt;&lt;/a&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--GwAk9zH0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/arif-2005/Quizer-v2/master/docs/6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--GwAk9zH0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/arif-2005/Quizer-v2/master/docs/6.png" width="880" height="495"&gt;&lt;/a&gt;

&lt;/p&gt;

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

&lt;ol&gt;
&lt;li&gt;Clone this repository or download the zip and unzip.&lt;/li&gt;
&lt;li&gt;Then install all the necessory packages using the commands in the terminal.
&lt;/li&gt;
&lt;/ol&gt;

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

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Then to run the project run this command.
&lt;/li&gt;
&lt;/ol&gt;

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

&lt;/div&gt;



&lt;p&gt;The production build of the frontend is already there in the public folder.&lt;br&gt;
But you can change all the code freely.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The project is ready to host online.&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Environment Variables
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;To run this project, you will need to add the following environment variables to your .env file&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;MONGO_URI=&amp;lt;YOUR_MONGODB_URI&amp;gt;
DISCORD_TOKEN=&amp;lt;YOUR_DISCORD_TOKEN&amp;gt;
CLIENT_ID=&amp;lt;YOUR_CLIENT_ID&amp;gt;
CLIENT_SECRET=&amp;lt;YOUR_CLIENT_SECRET&amp;gt;
REDIRECT_URL=&amp;lt;YOUR_REDIRECT_URL&amp;gt;

GUILD_ID=&amp;lt;THE_SERVER_GUILD_ID&amp;gt;
QUIZ_MORDERATOR_ID=&amp;lt;ID_OF_THE_QUIZ_MORDERATOR_ROLE&amp;gt;
QUIZ_LOG_CHANNEL_ID=&amp;lt;THE_ID_OF_THE_CHANNEL_WHERE_ALL_THE_QUIZ_WILL_B_LOGGED&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;MONGO_URI&lt;/strong&gt;
  Provide the mongo db url. This Quizer bot will store all the quizes in this database. You can also provide mongodb atlas uri.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DISCORD_TOKEN&lt;/strong&gt;
  Create a discord bot. then copy the Bot Token here to allow the bot to login. You have to add the bot to your server and provide it the Administrator Role.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CLIENT_ID&lt;/strong&gt;
  Provide the Client id of your bot&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CLIENT_SECRET&lt;/strong&gt;
  Provade the Client Secret of your bot&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;REDIRECT_URL&lt;/strong&gt;
  Provide the Redirect Url of your bot. This is the same url of your app.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GUILD_ID&lt;/strong&gt;
  Provide the Guild/Server id.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;QUIZ_MORDERATOR_ID&lt;/strong&gt;
  Provide the id of the role who can host or manage the quizes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;QUIZ_LOG_CHANNEL_ID&lt;/strong&gt;
  Provide the id of the channel where all the Quizes will be logged. Hide this from all other members. The quistions along with the answers, update log, delition log will appear here.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  How to get DISCORD_TOKEN, CLIENT_ID, CLIENT_SECRET, GUILD_ID, QUIZ_MORDERATOR_ID and QUIZ_LOG_CHANNEL_ID
&lt;/h3&gt;

&lt;p&gt;To use the QUIZER, you have to create a discord bot.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Goto &lt;a href="https://discord.com/developers/applications"&gt;https://discord.com/developers/applications&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Create a new application.&lt;/li&gt;
&lt;li&gt;After creating, go to &lt;code&gt;Bot&lt;/code&gt; on the left pannel , then click the &lt;code&gt;Reset Token&lt;/code&gt; and copy the new Token. &lt;strong&gt;This is your DISCORD_TOKEN&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Now goto &lt;code&gt;OAuth2&lt;/code&gt; on the left pannel, then copy the CLIENT_ID and CLIENT_SECRET.&lt;/li&gt;
&lt;li&gt;Now add an redirect url. This is the url where your frontend site is hosted. If localhost then &lt;code&gt;http://localhost:3000&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Now for other three env variables, you have to be in the devloper mode.
  &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_sU9wFRo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/arif-2005/Quizer-v2/master/docs/7.png" alt="Developer Mode" width="880" height="495"&gt;
&lt;/li&gt;
&lt;li&gt;Then right click on your server and copy id. Goto Roles and copy the id of the required role. Then copy the channels id.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Put all the Variables at &lt;code&gt;.env&lt;/code&gt; file properly. And you are done.&lt;/p&gt;

&lt;h2&gt;
  
  
  Authors
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://github.com/arif-2005"&gt;@CodeWithArif&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>@WEVER - the modern technology to built incredible User Interfaces </title>
      <dc:creator>CodeWithArif</dc:creator>
      <pubDate>Tue, 08 Mar 2022 01:52:03 +0000</pubDate>
      <link>https://forem.com/wever/wever-the-modern-technology-to-built-incredible-user-interfaces-1plf</link>
      <guid>https://forem.com/wever/wever-the-modern-technology-to-built-incredible-user-interfaces-1plf</guid>
      <description>&lt;p&gt;&lt;strong&gt;@WEVER JS&lt;/strong&gt; is a node js framework and at the same time a beautiful technology to built &lt;strong&gt;incredible user interface&lt;/strong&gt; in the web. It is &lt;strong&gt;fully customizable, flexible, declarative, component-based JavaScript framework &amp;amp; library to build complex and incredible UI (User Interface)&lt;/strong&gt;. This technology is an advance technology and at the same time a &lt;strong&gt;beginner friendly technology&lt;/strong&gt;. This framework works on virtual dom, like react and others. Here we also use JSX (Javascript XML) toale the development declarative.&lt;/p&gt;

&lt;h2&gt;
  
  
  XEON JS
&lt;/h2&gt;

&lt;p&gt;The main library of &lt;strong&gt;@WEVER is XEON JS&lt;/strong&gt;. It's nothing but a lightweight javascript library. Here we have multiple functions to help developers to create their dream projects. The most useful function is &lt;code&gt;xeon.XSET();&lt;/code&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;h4&gt;
  
  
  1. createElement()
&lt;/h4&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;xeon.createElement();&lt;/code&gt; function is used to create document node. This is functionally simple but working complex. This can create &lt;strong&gt;5 types of namespace&lt;/strong&gt; element including &lt;strong&gt;HTML and SVG&lt;/strong&gt;.&lt;/p&gt;


&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="cm"&gt;/*
 * @param {String|Function} tag - tha name of the element or a function if component.
 * @param {Objects} attributes - Key value pairs of attributes
 * @param {Array} children - list of children.
 * @param {HTMLElement} parent - the parent element of the element, if exist.
 */&lt;/span&gt;
&lt;span class="nx"&gt;createElement&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;tag&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;String&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="nb"&gt;Function&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;attributes&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;Object&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;children&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;Array&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;parent&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;HTMLElement&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/blockquote&gt;


&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  To be continued...
&lt;/h2&gt;

</description>
    </item>
    <item>
      <title>Precautions &amp; Rules You Must Follow in Your ME(R/A)N Project...</title>
      <dc:creator>CodeWithArif</dc:creator>
      <pubDate>Mon, 07 Mar 2022 13:51:08 +0000</pubDate>
      <link>https://forem.com/codewitharif/precautions-rules-you-must-follow-in-your-meran-project-4g6j</link>
      <guid>https://forem.com/codewitharif/precautions-rules-you-must-follow-in-your-meran-project-4g6j</guid>
      <description>&lt;p&gt;If you are reading this blog, then you must be a MERN or MEAN developer, and now you want to increase you website's productivity or may want gather more skills. I am not much skillful person though. But, here are some tips &amp;amp; tricks that I use in my work and this may also help you.&lt;/p&gt;




&lt;h2&gt;
  
  
  Backend
&lt;/h2&gt;

&lt;p&gt;First let's talk about the backend. Here we are using Express JS in Node JS (MERN/MEAN). There we already have tons of middleware to use.&lt;/p&gt;

&lt;blockquote&gt;
&lt;h4&gt;
  
  
  1) Don't make any your APIs routs in GET method.
&lt;/h4&gt;

&lt;blockquote&gt;
&lt;p&gt;It is the best practices to make all your routs in any methods rather than GET. Whenever you will publish your application for production, you will have to put your frontend codes in your server. This will require GET method will all selectors. So if your api path and frontend path is same and your api in GET method, then you won't get your frontend. You will receive the data that the api provides.&lt;/p&gt;


&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// main.js&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;express&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;express&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;app&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;express&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;http&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;http&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;server&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;http&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;createServer&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;// Add an api&lt;/span&gt;
&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="kd"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/getTodo&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;res&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="c1"&gt;// Your logic&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="c1"&gt;// Surve frontend&lt;/span&gt;
&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="kd"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;*&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;res&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="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;sendFile&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;./build/index.html&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="c1"&gt;// This won't be surved for /getTodo&lt;/span&gt;
&lt;span class="c1"&gt;// Start server&lt;/span&gt;
&lt;span class="nx"&gt;server&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;listen&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;PORT&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="mi"&gt;5000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;err&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;throw&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nb"&gt;Error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Server is started...&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/blockquote&gt;

&lt;h4&gt;
  
  
  2) Always try to write your backend code in multiple files and connect them together with &lt;code&gt;express.router()&lt;/code&gt;
&lt;/h4&gt;

&lt;blockquote&gt;
&lt;p&gt;On breaking your code into several files makes you project management easier. To devide the APIs there is an inbuilt function in express called router.&lt;/p&gt;


&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// main.js&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;express&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;express&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;app&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;express&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;http&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;http&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;server&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;http&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;createServer&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;// Let's add server.&lt;/span&gt;
&lt;span class="nx"&gt;express&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;use&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/api&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;./api&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="c1"&gt;// Start server&lt;/span&gt;
&lt;span class="nx"&gt;server&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;listen&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;PORT&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="mi"&gt;5000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;err&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;throw&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nb"&gt;Error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Server is started...&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;Setup routes...&lt;/p&gt;


&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// api.js&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;express&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;express&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;Router&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;express&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;router&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="c1"&gt;// Add all APIs as shown bellow&lt;/span&gt;
&lt;span class="c1"&gt;// /api/getTodo&lt;/span&gt;
&lt;span class="nx"&gt;Router&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;post&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/getTodo&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;res&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="c1"&gt;// Logics&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="c1"&gt;// Export the router&lt;/span&gt;
&lt;span class="nx"&gt;module&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;exports&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;Router&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/blockquote&gt;

&lt;h4&gt;
  
  
  3) Don't keep any error or warnings to resolve later.
&lt;/h4&gt;

&lt;blockquote&gt;
&lt;p&gt;A very bad way of coding is to keep all your warnings even sometimes runtime errors to fix later. When you will move forward, you can realise that your code is messing up, and so soon it will be impossible to continue your project. So, whenever you see an error or warnings, fix that first and then move to other features.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h4&gt;
  
  
  4) Make all your APIs first, then implement bit to the frontend.
&lt;/h4&gt;

&lt;blockquote&gt;
&lt;p&gt;If you creates all your APIs first according to your project, it becomes more easier to manage your project. To built APIs calls or to test it, you can use &lt;a href="https://www.postman.com/downloads/"&gt;Postman(Software)&lt;/a&gt; or &lt;a href="https://marketplace.visualstudio.com/items?itemName=rangav.vscode-thunder-client"&gt;ThunderClient(VS Code Extension)&lt;/a&gt;. From here you can manage all your APIs easily.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--TtR_c_TR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/r3vi67g4gmv51a14ak5n.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--TtR_c_TR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/r3vi67g4gmv51a14ak5n.jpeg" alt="ThunderClient over postman" width="880" height="528"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h4&gt;
  
  
  5) Access your database visually.
&lt;/h4&gt;

&lt;blockquote&gt;
&lt;p&gt;To manage or check your database, it's well to check it visually. If you are working on &lt;a href="https://www.mongodb.com/atlas/database"&gt;MongoDB Atlas&lt;/a&gt;, you can directly view all your collections and entries from the web. Else, if you are using MongoDB in local system, then install an application called &lt;a href="https://www.mongodb.com/products/compass"&gt;MongoDB Compass&lt;/a&gt;. It is officially launched by MongoDB.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--CWGXiODP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3205vuxv7drma8gc5zzh.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--CWGXiODP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3205vuxv7drma8gc5zzh.jpg" alt="GUI for MongoDB" width="480" height="181"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h4&gt;
  
  
  6) Use environment variables to store your secrets.
&lt;/h4&gt;

&lt;blockquote&gt;
&lt;p&gt;Generously our MERN or MEAN app contains a bunch of secret keys which we don't want to share with anybody. Those secrets might be your MongoDB URI, some open source api keys, secret value for JSON Web Token etc. So, to store those keys, we use environment variables inside an &lt;code&gt;.env&lt;/code&gt; file. You can access those keys directly in your Express Server using &lt;a href="https://www.npmjs.com/package/dotenv"&gt;dotenv&lt;/a&gt; package.&lt;/p&gt;
&lt;/blockquote&gt;


&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Frontend
&lt;/h2&gt;

&lt;p&gt;Now let's come to Frontend part. Here we will cover only about React JS as it has more developers than Angular. And we have to choose one for now.&lt;/p&gt;

&lt;blockquote&gt;
&lt;h4&gt;
  
  
  1) Simple App
&lt;/h4&gt;

&lt;blockquote&gt;
&lt;p&gt;Try making your app as simple as you can. Don't make tons of unorganized components. This will generally mesh up your app.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h4&gt;
  
  
  2) Modules
&lt;/h4&gt;

&lt;blockquote&gt;
&lt;p&gt;In any type of Web app, we use some modules from npm, or some we create by self. The modules created by self, should be stored in a seperate file in a different location like &lt;code&gt;modules/*&lt;/code&gt;. Therefore you can access them from anywhere you want.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h4&gt;
  
  
  3) Module CSS
&lt;/h4&gt;

&lt;blockquote&gt;
&lt;p&gt;In react js we used to get css simply using-&lt;/p&gt;


&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;./style.css&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;But in this case, we can't create styles with same class again. If we do so, we will mixed up those classes. React actually works on webpack, and importing styles is a feature of webpack. While importing them, webpack usually bundles them and put then in html together. So, your styles Frome different sources, used to mix together.&lt;br&gt;
To get rid of this, now we have module css. This usually converts css into modules. So, that we can easily use same classes over react app.&lt;/p&gt;


&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;style&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;./style.module.css&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;Here we need to add a sub-extension to the css file called "module". Thus it converts into a module css. Importing this, returns an object with the keys with value of the actual classes and the values with the value of new partially randomly generated class. Thus each classes stays indifferent from each other.&lt;/p&gt;


&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;style&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;./style.module.css&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="c1"&gt;// Return jsx&lt;/span&gt;
&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;App&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h1&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;style&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;heading&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Hello World&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h1&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/blockquote&gt;

&lt;h4&gt;
  
  
  4) Avoid using CSS class based framework or library.
&lt;/h4&gt;

&lt;blockquote&gt;
&lt;p&gt;Try avoiding CSS frameworks like Tailwind or Bootstrap. Those are really good, but sometime it becomes harder to understand jsx code with tons of classes.&lt;/p&gt;
&lt;/blockquote&gt;


&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  To be continue...
&lt;/h3&gt;

</description>
      <category>javascript</category>
      <category>react</category>
      <category>mern</category>
      <category>webdev</category>
    </item>
    <item>
      <title>How to create react app on Android devices.</title>
      <dc:creator>CodeWithArif</dc:creator>
      <pubDate>Sat, 05 Mar 2022 08:29:13 +0000</pubDate>
      <link>https://forem.com/codewitharif/how-to-create-react-app-on-android-devices-9f2</link>
      <guid>https://forem.com/codewitharif/how-to-create-react-app-on-android-devices-9f2</guid>
      <description>&lt;p&gt;React is a wonderful technology in web development category. It is basically a javascript library which is used in multiple react based framework like create-react-app or Next app. But the problem arouses when it comes to device preferences. Create-react-app requires &lt;strong&gt;symlink&lt;/strong&gt; or symbolic links to be enabled on the device. That's why we needs a perfect device. It doesn't work on any virtual devices or kernels. Many beginners faced this problem, who doesn't have any laptop or PC. But now you can also run react app directly from your device.&lt;/p&gt;

&lt;p&gt;To create a react app, we will need a custom Linux kernel, because we can't use node cli commands on Android without root. So, we will use an application known as &lt;strong&gt;Termux&lt;/strong&gt;. You can find it from &lt;strong&gt;play-store&lt;/strong&gt;. But it is deprecated now. So, download it from &lt;strong&gt;f-droid&lt;/strong&gt;.&lt;a href="https://f-droid.org/en/packages/com.termux/"&gt; 🔗 Link&lt;/a&gt;. After downloading, open it and give it required time to initialise. Then run the following commands.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;apt update &amp;amp;&amp;amp; apt upgrade
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This command will update all of the application dependencies. Then we have to install node js.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Pkg install nodejs-lts
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This will install the lifetime supported version of node js. A package manager called NPM and NPX automatically comes with node. Now we will create our first react app from Android.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Using localstorage system in termux allows you to access all the files of your device storage and sd-card. But this requires symlink or symbolic links. So, we will create our app inside termux virtual storage.&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npx create-react-app &amp;lt;your_app_name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This process will take a few moment and then you will find your react app ready. All the necessary tools required in developing a react app are all here.&lt;/p&gt;

&lt;p&gt;Now to edit the files, we will use an application called Acode-editor. Get it on &lt;a href="https://play.google.com/store/apps/details?id=com.foxdebug.acode"&gt;play-store&lt;/a&gt;. And follow the rules.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--pAxRMeBs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8wu9z20zje02ads5s9yd.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pAxRMeBs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8wu9z20zje02ads5s9yd.jpg" alt="Image description" width="878" height="2000"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--cgEGcO4U--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9g3kxvmbjgpu887yfa5e.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--cgEGcO4U--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9g3kxvmbjgpu887yfa5e.jpg" alt="Image description" width="878" height="2000"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--w_JYA0To--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hw30ygu1ymmppdx5eu7r.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--w_JYA0To--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hw30ygu1ymmppdx5eu7r.jpg" alt="Image description" width="878" height="2000"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--E8KAjKmH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pnwtlxefjvx786cfv8wz.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--E8KAjKmH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pnwtlxefjvx786cfv8wz.jpg" alt="Image description" width="878" height="2000"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--v2n_tE-6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/d7qlics73pyapyhomff4.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--v2n_tE-6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/d7qlics73pyapyhomff4.jpg" alt="Image description" width="878" height="2000"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8Jo68Asd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bxdc8f2q56k4ms4ubs1c.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8Jo68Asd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bxdc8f2q56k4ms4ubs1c.jpg" alt="Image description" width="878" height="2000"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--c33kyz6h--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9u281swomhozkox95wdu.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--c33kyz6h--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9u281swomhozkox95wdu.jpg" alt="Image description" width="878" height="2000"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_usFqvZt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wywdg4cqhgex53vwskvq.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_usFqvZt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wywdg4cqhgex53vwskvq.jpg" alt="Image description" width="878" height="2000"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--h6xDt3Fv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nm944tepb50mdawiyys2.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--h6xDt3Fv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nm944tepb50mdawiyys2.jpg" alt="Image description" width="878" height="2000"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;All done.&lt;br&gt;
Happy hacking...&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
