<?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: Anadee</title>
    <description>The latest articles on Forem by Anadee (@anadee11).</description>
    <link>https://forem.com/anadee11</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%2F718483%2Fb31bf22f-bafd-4731-a1e3-969bee2b0c9d.jpeg</url>
      <title>Forem: Anadee</title>
      <link>https://forem.com/anadee11</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/anadee11"/>
    <language>en</language>
    <item>
      <title>DFF: Docker for Frontend Folks</title>
      <dc:creator>Anadee</dc:creator>
      <pubDate>Wed, 18 Feb 2026 21:16:30 +0000</pubDate>
      <link>https://forem.com/anadee11/dff-docker-for-frontend-folks-2e48</link>
      <guid>https://forem.com/anadee11/dff-docker-for-frontend-folks-2e48</guid>
      <description>&lt;p&gt;This blog is written &lt;strong&gt;specifically for frontend engineers&lt;/strong&gt; who are curious about Docker but feel it’s &lt;em&gt;too DevOps-y&lt;/em&gt;, &lt;em&gt;too backend&lt;/em&gt;, or &lt;em&gt;too complicated&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;If you’ve ever heard:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“It works on my machine.”&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Docker exists to kill that sentence.&lt;/p&gt;

&lt;p&gt;While you can always Google the definition of Docker, I’ll break it down simply.&lt;/p&gt;

&lt;p&gt;At its core, &lt;strong&gt;Docker lets you ship your app &lt;em&gt;with its environment&lt;/em&gt; so it runs the same everywhere.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Think of it like this:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Docker = a runnable zip file&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Not just your code, but:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Node version
&lt;/li&gt;
&lt;li&gt;Dependencies
&lt;/li&gt;
&lt;li&gt;Build output
&lt;/li&gt;
&lt;li&gt;Web server
&lt;/li&gt;
&lt;li&gt;Environment assumptions
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All packed into a &lt;strong&gt;container&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkpu8qkplipv3l6zpeynv.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%2Fkpu8qkplipv3l6zpeynv.png" alt="Docker Concept" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The Problem Docker Solves
&lt;/h2&gt;

&lt;p&gt;Normally, running an app means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Install Node
&lt;/li&gt;
&lt;li&gt;Match versions
&lt;/li&gt;
&lt;li&gt;Install dependencies
&lt;/li&gt;
&lt;li&gt;Configure ports
&lt;/li&gt;
&lt;li&gt;Pray nothing breaks
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;With Docker:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You build once
&lt;/li&gt;
&lt;li&gt;You run anywhere
&lt;/li&gt;
&lt;li&gt;No setup questions
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Docker Basics
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Build an Image
&lt;/h3&gt;

&lt;p&gt;An &lt;strong&gt;image&lt;/strong&gt; is just a blueprint. It contains everything needed to run an app.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker build &lt;span class="nt"&gt;-t&lt;/span&gt; my-app &lt;span class="nb"&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After running this command:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Docker reads instructions from the &lt;code&gt;Dockerfile&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Creates a &lt;strong&gt;Docker image&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Tags (&lt;code&gt;-t&lt;/code&gt;) it as &lt;code&gt;my-app&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  2. Run a Container
&lt;/h3&gt;

&lt;p&gt;A container is a live, running instance of your app.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker run &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; 8080:80 my-app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;What happens:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A &lt;strong&gt;container&lt;/strong&gt; is created from the image
&lt;/li&gt;
&lt;li&gt;App runs in the background (&lt;code&gt;-d&lt;/code&gt; → detached mode)
&lt;/li&gt;
&lt;li&gt;Port &lt;code&gt;8080&lt;/code&gt; on your machine maps to &lt;code&gt;80&lt;/code&gt; inside the container
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn1evqsm3589apa2t2rly.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%2Fn1evqsm3589apa2t2rly.png" alt="Image vs Container" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Dockerizing a React App
&lt;/h2&gt;

&lt;p&gt;Let’s go through a minimal, beginner-friendly example.&lt;/p&gt;

&lt;p&gt;No DevOps jargon — just Dockerizing a React app the easy way.&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 1: Build the React App
&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;p&gt;This creates a &lt;code&gt;/build&lt;/code&gt; folder with static assets.&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 2: Create a &lt;code&gt;Dockerfile&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Mental model:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Build happens &lt;strong&gt;outside&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Docker only serves the output&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A minimal &lt;code&gt;Dockerfile&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight docker"&gt;&lt;code&gt;&lt;span class="k"&gt;FROM&lt;/span&gt;&lt;span class="s"&gt; nginx:alpine&lt;/span&gt;
&lt;span class="k"&gt;COPY&lt;/span&gt;&lt;span class="s"&gt; build /usr/share/nginx/html&lt;/span&gt;
&lt;span class="k"&gt;EXPOSE&lt;/span&gt;&lt;span class="s"&gt; 80&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That’s it.&lt;/p&gt;

&lt;p&gt;No Node.&lt;br&gt;&lt;br&gt;
No npm.&lt;br&gt;&lt;br&gt;
Just static files served by Nginx.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; This setup works best for simple SPA-style React apps and may need tweaks for client-side routing. The goal here is to understand Docker basics, not cover every edge case.&lt;/p&gt;
&lt;/blockquote&gt;


&lt;h3&gt;
  
  
  Step 3: Build &amp;amp; Run
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker build &lt;span class="nt"&gt;-t&lt;/span&gt; my-react-app &lt;span class="nb"&gt;.&lt;/span&gt;
docker run &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; 8080:80 my-react-app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Now visit:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;🎉 Your React app is running inside Docker.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why This Matters
&lt;/h2&gt;

&lt;p&gt;Once dockerized, your app runs &lt;strong&gt;identically&lt;/strong&gt; on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Your laptop
&lt;/li&gt;
&lt;li&gt;EC2
&lt;/li&gt;
&lt;li&gt;DigitalOcean
&lt;/li&gt;
&lt;li&gt;Kubernetes
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No more “Node version mismatch” bugs.&lt;/p&gt;




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

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;A server is just a computer.&lt;/em&gt;&lt;br&gt;&lt;br&gt;
&lt;em&gt;A container is just a process.&lt;/em&gt;&lt;br&gt;&lt;br&gt;
&lt;em&gt;Docker is just packaging.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Once this clicks, &lt;strong&gt;cloud stops being scary&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;If this gets a good response, I’m planning to write about demystifying cloud for frontend engineers next.&lt;/p&gt;

</description>
      <category>docker</category>
      <category>frontend</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Getting Started With React Flow</title>
      <dc:creator>Anadee</dc:creator>
      <pubDate>Tue, 29 Aug 2023 17:09:08 +0000</pubDate>
      <link>https://forem.com/anadee11/getting-started-with-react-flow-3727</link>
      <guid>https://forem.com/anadee11/getting-started-with-react-flow-3727</guid>
      <description>&lt;p&gt;Building node-based editors and pages with interactive diagrams has never been so easy.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--nL5yBfNv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xrytmht7ufaxoyjt5e2s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--nL5yBfNv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xrytmht7ufaxoyjt5e2s.png" alt="React Flow" width="40" height="40"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why React Flow&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;React Flow is an interactive JavaScript library. Being built on top on React and the super detailed documentation makes it very easy to make customizable components with interactive flowcharts, diagrams, and graphs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Introduction&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;-&amp;gt; Nodes : A Node is a React Component. Basically it can render anything. By default, a Node looks like this.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--vOfaobSj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xv39m4y6f3cp4ypo0gp3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vOfaobSj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xv39m4y6f3cp4ypo0gp3.png" alt="Default Nodes" width="800" height="211"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We can create Custom Nodes which can be used to do stuff like :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Render form elements&lt;/li&gt;
&lt;li&gt;Visualize data&lt;/li&gt;
&lt;li&gt;Support multiple handles&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Nodes can be defined as :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const nodes = [
  {
    id: '1', //required
    position: { x: 0, y: 0 },//required
    data: { label: 'Hello' },//optional
    type: 'input', //optional
  },
{
    id: '2',
    position: { x: 100, y: 100 },
    data: { label: 'Hello' },
  },
];
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;We can use other components as labels&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;-&amp;gt; Edges : An edge is used to connect two nodes. Every edge needs a source and a target node. React flow comes with four built-in edge types : &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Bezier(Default)&lt;/li&gt;
&lt;li&gt;Smoothstep&lt;/li&gt;
&lt;li&gt;Step&lt;/li&gt;
&lt;li&gt;Straight&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Edges can be styled using CSS and are completely customizable.&lt;br&gt;
You can play around with Edges to make Custom Edges to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Add a button to remove an edge&lt;/li&gt;
&lt;li&gt;Custom routing behaviour to match with the application design and requirements.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If we have two or more nodes, edges can be defined as :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const edges = [{ id: '1-2', source: '1', target: '2' }];
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;-&amp;gt; Handles : It is the place where an edge gets connected to the Node. The handle can be placed anywhere, and styled as you like.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Let's Jump On to Creating a Simple Flow :&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Firstly, let's start with Adding React Flow to your react app&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install reactflow
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;yarn add reactflow
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The reactflow package exports the &lt;code&gt;&amp;lt;ReactFlow /&amp;gt;&lt;/code&gt; component as the default export. &lt;br&gt;
Next, is to use this component to create a basic flow.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import ReactFlow from 'reactflow';
import 'reactflow/dist/style.css';
function Flow() {
  return (
    &amp;lt;div style={{ height: '100%' }}&amp;gt;
      &amp;lt;ReactFlow&amp;gt;
        &amp;lt;Background /&amp;gt;
        &amp;lt;Controls /&amp;gt;
      &amp;lt;/ReactFlow&amp;gt;
    &amp;lt;/div&amp;gt;
  );
}

export default Flow;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;The &lt;code&gt;&amp;lt; ReactFlow /&amp;gt;&lt;/code&gt; component must be wrapped in an element with a width and height.&lt;/em&gt;&lt;br&gt;
&lt;em&gt;Remember to import the ReactFlow Styles&lt;/em&gt; .&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;code&gt;&amp;lt;ReactFlow /&amp;gt;&lt;/code&gt; component has various attributes.&lt;br&gt;
The important ones to start with are nodes and edges.&lt;/p&gt;

&lt;p&gt;React Flow also offers some built-in plugins, few of the one's I find useful are : &lt;strong&gt;Controls&lt;/strong&gt;, &lt;strong&gt;MiniMap&lt;/strong&gt; and &lt;strong&gt;Background&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;They can be used as :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;ReactFlow nodes={nodes} edges={edges}&amp;gt;
     &amp;lt;Background /&amp;gt;
     &amp;lt;Controls /&amp;gt;
     &amp;lt;MiniMap /&amp;gt;
&amp;lt;/ReactFlow&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And now, the basic version looks like : &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--jeLOt1YS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/an9wv808fmze0l4jdtor.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jeLOt1YS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/an9wv808fmze0l4jdtor.png" alt="Basic Flow" width="800" height="331"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Interactiveness&lt;/strong&gt;&lt;br&gt;
To make this interactive, so that one can drag, remove and select nodes and edges we have to implement a &lt;strong&gt;onNodesChange&lt;/strong&gt; and &lt;strong&gt;onEdgesChange&lt;/strong&gt; handler.&lt;/p&gt;

&lt;p&gt;Firstly, setup states for both nodes and edges.&lt;br&gt;
The initial state will be set as nodes and edges we declared.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const [nodes, setNodes] = useState(initialNodes);
const [edges, setEdges] = useState(initialEdges);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Next, we need to implement the handlers.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const onNodesChange = (changes) =&amp;gt; {
    setNodes((prevNodes) =&amp;gt; {
      const updatedNodes = applyNodeChanges(changes, prevNodes);
      return updatedNodes;
    });
  };
  const onEdgesChange = (changes) =&amp;gt; {
    setEdges((prevEdges) =&amp;gt; {
      const updatedEdges = applyEdgeChanges(changes, prevEdges);
      return updatedEdges;
    });
  };
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;React Flow provides the applyNodeChanges and applyEdgeChanges for handling the changes, instead of us handling these changes manually.&lt;/em&gt; &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;With the above, we can drag the nodes, select the nodes and edges and remove them.&lt;/p&gt;

&lt;p&gt;Now, if we want to connect the Nodes manually we have to use the &lt;strong&gt;onConnect&lt;/strong&gt; handler.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  const onConnect =  (connection) =&amp;gt; {
    setEdges((eds) =&amp;gt; {
      const updatedEdges = addEdge(connection, eds);
      return updatedEdges;
    });
  };
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;React Flow also provides this addEdge handler&lt;/em&gt; .&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--e9se5blJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nnoanjcrbtlwi75jkybh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--e9se5blJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nnoanjcrbtlwi75jkybh.png" alt="Final" width="800" height="573"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A whole lot of other things and customizations can also be done. Do explore!&lt;/p&gt;




&lt;p&gt;Did the article help or anything else would you like to suggest? Add a reaction or drop a comment below. 😉&lt;/p&gt;




&lt;p&gt;Follow me on &lt;a href="https://dev.to/anadee11"&gt;Dev Community&lt;/a&gt;.&lt;br&gt;
Connect with me here &lt;a href="https://twitter.com/Anadee11_"&gt;Twitter&lt;/a&gt; &amp;amp; &lt;a href="https://www.linkedin.com/in/anadee11/"&gt;LinkedIn&lt;/a&gt;&lt;/p&gt;

</description>
      <category>react</category>
      <category>webdev</category>
      <category>javascript</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Introduction to Open Source</title>
      <dc:creator>Anadee</dc:creator>
      <pubDate>Sun, 19 Jun 2022 19:55:16 +0000</pubDate>
      <link>https://forem.com/anadee11/introduction-to-open-source-4f9g</link>
      <guid>https://forem.com/anadee11/introduction-to-open-source-4f9g</guid>
      <description>&lt;p&gt;&lt;em&gt;Open source&lt;/em&gt; is more about the people. The people make the community and the community makes collaboration possible.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Contributing to open source helps one grow their skills as well as  build their network .&lt;/li&gt;
&lt;li&gt;One of the major motivations to contribute to open source is the impact that the contribution makes to the community and all the user base.&lt;/li&gt;
&lt;li&gt;Open Source programs help you gain practical knowledge and the fact one get's to connect with some great people also ensures that they never lack mentorship.&lt;/li&gt;
&lt;li&gt;Being a part of the Open Source Ecosystem, one learns to Communicate, to Collaborate and to asynchronously work with their peers.&lt;/li&gt;
&lt;li&gt;Don't be afraid to make mistakes. One can always ask questions from the community (without feeling like an imposter).&lt;/li&gt;
&lt;li&gt;Once a person gets a bit familiar to open source contributions, they should try to pass on the knowledge  and creating a happy place for  fellow contributors.&lt;/li&gt;
&lt;li&gt;Non-code contributions are equally important .&lt;/li&gt;
&lt;li&gt;While choosing an open source project to contribute to, it is important to self-evaluate and understand your interests.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Don't wait, go ahead and make your first contribution. &lt;em&gt;All the best!!&lt;/em&gt;&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>opensource</category>
      <category>community</category>
      <category>computerscience</category>
    </item>
  </channel>
</rss>
