<?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: Ibrahim Ragab</title>
    <description>The latest articles on Forem by Ibrahim Ragab (@yuribenjamin).</description>
    <link>https://forem.com/yuribenjamin</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%2F120578%2F12369b88-d548-4f5e-b133-9708fa42b89d.jpeg</url>
      <title>Forem: Ibrahim Ragab</title>
      <link>https://forem.com/yuribenjamin</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/yuribenjamin"/>
    <language>en</language>
    <item>
      <title>🚀 Unlocking the Power of Micro Frontends for Scalable Applications</title>
      <dc:creator>Ibrahim Ragab</dc:creator>
      <pubDate>Fri, 04 Oct 2024 17:39:58 +0000</pubDate>
      <link>https://forem.com/yuribenjamin/unlocking-the-power-of-micro-frontends-for-scalable-applications-3ebf</link>
      <guid>https://forem.com/yuribenjamin/unlocking-the-power-of-micro-frontends-for-scalable-applications-3ebf</guid>
      <description>&lt;p&gt;Micro frontends have gained significant traction in recent years as a modern approach to building scalable and modular frontend architectures. They allow you to split a large application into smaller, independently developed, and deployable front-end microservices. As a lead front-end engineer, I’ve worked extensively with micro front-end architectures, harnessing their potential to streamline complex projects and enhance team productivity.&lt;/p&gt;

&lt;h2&gt;
  
  
  🤔 Why Micro Frontends?
&lt;/h2&gt;

&lt;p&gt;Micro frontends align with the microservices architecture commonly used in backend development. They provide teams the flexibility to build features in isolation, resulting in several key benefits:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Decoupled Architecture&lt;/strong&gt;: Micro frontends enable teams to work independently on distinct modules without impacting others, reducing integration challenges. This modularity results in a smoother workflow, allowing applications to scale effectively.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Independent Deployment&lt;/strong&gt;: Each micro frontend can be developed, tested, and deployed independently, accelerating the deployment cycle and allowing incremental updates without downtime.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tech Agnostic&lt;/strong&gt;: Teams can use different frameworks or libraries for each micro frontend. However, it’s crucial to standardize certain practices, like linting and code quality checks, for a cohesive development environment.&lt;/p&gt;

&lt;h2&gt;
  
  
  🛠️ The Journey with Micro Frontends and Module Federation
&lt;/h2&gt;

&lt;p&gt;In our projects, we manage an ecosystem of micro frontends, each focusing on a specific domain. Initially, we leveraged Module Federation in Webpack, which enables dynamically importing micro frontends at runtime. This approach allows us to encapsulate micro frontends and expose components or utilities across different modules without code duplication.&lt;/p&gt;

&lt;p&gt;Module Federation ensures seamless integration between micro frontends while maintaining their independence. For example, when a user navigates from the fees management module to the category settings, the application dynamically loads the respective micro frontend, providing an uninterrupted and smooth user experience.&lt;/p&gt;

&lt;h2&gt;
  
  
  💾 Handling State and Side Effects with Redux Query
&lt;/h2&gt;

&lt;p&gt;For managing state and handling side effects across our micro frontends, we rely exclusively on Redux Query. Instead of managing the state globally or using traditional state management tools, we use Redux Query to handle all data fetching, caching, and synchronization. This ensures that each micro frontend is data-driven, focusing on querying state only when needed.&lt;/p&gt;

&lt;h2&gt;
  
  
  🎯 Side Effects
&lt;/h2&gt;

&lt;p&gt;We handle side effects in services and middleware rather than within the components. Using onQueryStarted from Redux Query allows us to initiate side effects like data fetching and real-time updates efficiently. This approach ensures that side effects are managed in a centralized and predictable way, promoting cleaner and more maintainable components.&lt;/p&gt;

&lt;p&gt;By keeping all side effects in the services or middleware layers, we avoid the pitfalls of tightly coupling UI components with business logic, resulting in more reusable and modular code.&lt;/p&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;apiSlice&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;endpoints&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;getData&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;initiate&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;onQueryStarted&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;async &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;arg&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;dispatch&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;queryFulfilled&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;try&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;queryFulfilled&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="c1"&gt;// Handle side effect&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;catch &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;)&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="nf"&gt;error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Error fetching data:&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;error&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;
  
  
  🧩 Optimizing with a Data-Driven Approach
&lt;/h2&gt;

&lt;p&gt;Our data-driven approach has enabled us to optimize components by removing unnecessary useEffect hooks, focusing solely on querying data when needed. For instance, when a user interacts with an enterprise or service provider dropdown, Redux Query efficiently manages the state changes and updates the relevant components. This not only simplifies our codebase but also improves performance and user experience.&lt;/p&gt;

&lt;h2&gt;
  
  
  🏗️ Key Components of Our Architecture
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Micro Frontends&lt;/strong&gt;: Our architecture comprises several micro frontends built using React, Redux Query, and TypeScript. Each micro frontend targets a specific domain, independently managed and deployed. This focus on independent modules allows us to enhance individual areas of the application without affecting others.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Shared Components&lt;/strong&gt;: To promote consistency across micro frontends, we use a centralized library packaged with Rollup. Shared components, like forms or tables, are built once and reused, ensuring design consistency and reducing development effort.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Module Federation&lt;/strong&gt;: With Webpack's Module Federation, we dynamically load and share components or utilities between micro frontends. This feature enables a seamless user experience across various parts of our application without requiring a full reload or significant overhead.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Communication&lt;/strong&gt;: To facilitate communication between micro frontends, we rely on Redux Query's centralized approach to data management. This, combined with custom event emitters when necessary, ensures that data flows smoothly without creating tight coupling between modules.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Authentication&lt;/strong&gt;: We’ve recently migrated to a new ACL (Access Control List) infrastructure, centralizing authentication across the main application and its micro frontends. This change has enhanced user experience and security, allowing for a unified access control system.&lt;/p&gt;

&lt;h2&gt;
  
  
  📝 Best Practices and Lessons Learned
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Utilize Redux Query for All Data Handling&lt;/strong&gt;: By exclusively using Redux Query, we streamline state management and handle all side effects in services or middleware. This approach centralizes data fetching, caching, and state updates, resulting in optimized and maintainable code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Automate Linting and Formatting&lt;/strong&gt;: Maintaining code quality is crucial when working with multiple micro frontends. We standardized our projects with automated linting tools and integrated them into our CI/CD pipelines. 🛡️&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Enforce PR Reviews&lt;/strong&gt;: To ensure code quality and consistency, we established a policy where every pull request requires multiple reviewers. This practice has significantly reduced bugs and technical debt while promoting knowledge sharing among team members.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Experiment in Separate Branches&lt;/strong&gt;: For experimental migrations, like transitioning from React 18 to the new React 19 beta, we conduct these changes in isolated branches. This method mitigates risk and ensures the main codebase remains stable during experimentation.&lt;/p&gt;

&lt;h2&gt;
  
  
  🚀 Future Directions
&lt;/h2&gt;

&lt;p&gt;As we continue to refine our architecture, we're exploring further integration of our micro frontends into other platforms using module federation. This strategy will provide users with a seamless experience, allowing access to various services without leaving their main application environment.&lt;/p&gt;

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

&lt;p&gt;Adopting micro frontends has transformed our development process, offering flexibility, scalability, and enhanced collaboration across teams. By combining micro frontends with Redux Query for centralized state management and side effect handling, we’ve streamlined our codebase and improved performance.&lt;/p&gt;

&lt;p&gt;💬 Have you experimented with micro frontends? Share your insights and experiences in the comments – let’s learn from each other!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>react</category>
      <category>microfrontends</category>
    </item>
    <item>
      <title>Write Node server with ES6 Classes</title>
      <dc:creator>Ibrahim Ragab</dc:creator>
      <pubDate>Thu, 04 Jul 2019 17:57:05 +0000</pubDate>
      <link>https://forem.com/yuribenjamin/write-node-server-with-es6-classes-3b0j</link>
      <guid>https://forem.com/yuribenjamin/write-node-server-with-es6-classes-3b0j</guid>
      <description>&lt;p&gt;I'm learning Node.js and all back-end stuff and I see there's one way to implement a server by import the module and declare the path and the app and so on.&lt;/p&gt;

&lt;p&gt;I wrote a simple server using ES6 classes and it looks like this:&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;When I log the response it seems typical to the regular server, check the repository below you can clone and run it.&lt;br&gt;
I need answers about what is the advantages and the difference.&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/Yuribenjamin" rel="noopener noreferrer"&gt;
        Yuribenjamin
      &lt;/a&gt; / &lt;a href="https://github.com/Yuribenjamin/node-server-class" rel="noopener noreferrer"&gt;
        node-server-class
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Such a node server is written with ECMAScript 2015 (ES6)
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;node-server-class&lt;/h1&gt;

&lt;/div&gt;
&lt;p&gt;Such a Express Node server is written with ECMAScript 2015 (ES6) JavaScript classes.&lt;/p&gt;
&lt;/div&gt;



&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/Yuribenjamin/node-server-class" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


</description>
      <category>discuss</category>
      <category>node</category>
      <category>express</category>
      <category>javascript</category>
    </item>
    <item>
      <title>How to deploy React App to GitHub Pages</title>
      <dc:creator>Ibrahim Ragab</dc:creator>
      <pubDate>Sun, 23 Jun 2019 17:44:24 +0000</pubDate>
      <link>https://forem.com/yuribenjamin/how-to-deploy-react-app-in-github-pages-2a1f</link>
      <guid>https://forem.com/yuribenjamin/how-to-deploy-react-app-in-github-pages-2a1f</guid>
      <description>&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/BZidYA3dgXA"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Did you build React app and want to deploy it, following these simple steps you able to deploy and showing the world your amazing app.&lt;/p&gt;

&lt;p&gt;I will show how to create and deploy React App using &lt;a href="https://github.com/facebook/create-react-app" rel="noopener noreferrer"&gt;&lt;code&gt;create-react-app&lt;/code&gt;&lt;/a&gt; and &lt;a href="https://www.npmjs.com/package/gh-pages" rel="noopener noreferrer"&gt;GitHub Pages&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prerequisites&lt;/strong&gt; :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://github.com/join" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; Account.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Install &lt;a href="https://git-scm.com/" rel="noopener noreferrer"&gt;Git&lt;/a&gt; in your machine and &lt;a href="https://help.github.com/en/articles/set-up-git" rel="noopener noreferrer"&gt;Set up Git&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Make sure you have Node.js and Npm installed in your machine.&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Install &lt;a href="https://nodejs.org/en/" rel="noopener noreferrer"&gt;Node.js&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Install &lt;a href="https://nodejs.org/en/" rel="noopener noreferrer"&gt;Npm&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Notice&lt;/strong&gt; You’ll need to have Node 8.10.0 or later on your local machine.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Procedure&lt;/strong&gt; :&lt;/p&gt;

&lt;p&gt;1- First create a repository named &lt;code&gt;my-app&lt;/code&gt; using &lt;a href="https://github.com/facebook/create-react-app" rel="noopener noreferrer"&gt;&lt;code&gt;create-react-app&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;npm init react-app my-app&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;2- We need to install &lt;a href="https://www.npmjs.com/package/gh-pages" rel="noopener noreferrer"&gt;GitHub Pages&lt;/a&gt; package as a dev-dependency.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;cd my-app&lt;/code&gt;&lt;br&gt;
&lt;code&gt;npm install gh-pages --save-dev&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;3- Add properties to &lt;code&gt;package.json&lt;/code&gt; file.&lt;/p&gt;

&lt;p&gt;The first property we need to add at the top level &lt;code&gt;homepage&lt;/code&gt; second we will define this as a string and the value will be &lt;code&gt;"http://{username}.github.io/{repo-name}"&lt;/code&gt; {username} is your GitHub username, and {repo-name} is the name of the GitHub repository you created it will look like this :&lt;/p&gt;

&lt;p&gt;&lt;code&gt;"homepage": "http://yuribenjamin.github.io/my-app"&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Second in the existing &lt;code&gt;scripts&lt;/code&gt; property we to need to add &lt;code&gt;predeploy&lt;/code&gt; and &lt;code&gt;deploy&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;"scripts": {&lt;br&gt;
  //...&lt;br&gt;
  "predeploy": "npm run build",&lt;br&gt;
  "deploy": "gh-pages -d build"&lt;br&gt;
}&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffzq9zt7fwr0hda2rexpu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffzq9zt7fwr0hda2rexpu.png" alt="package.json example"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;4- Create a Github repository and initialize it and add it as a remote in your local git repository.&lt;/p&gt;

&lt;p&gt;Now, create a remote GitHub repository with your app name and go back initialize this&lt;br&gt;
&lt;code&gt;git init&lt;/code&gt;&lt;br&gt;
add it as remote&lt;br&gt;
&lt;code&gt;git remote add origin git@github.com:Yuribenjamin/my-app.git&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;5- Now deploy it to GitHub Pages.&lt;/p&gt;

&lt;p&gt;just run the following command :&lt;/p&gt;

&lt;p&gt;&lt;code&gt;npm run deploy&lt;/code&gt;&lt;/p&gt;

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

&lt;p&gt;this command will create a branch named &lt;code&gt;gh-pages&lt;/code&gt; this branch host your app, and homepage property you created in &lt;code&gt;package.json&lt;/code&gt; file hold your link for a live preview, or you can open the branch setting scroll down to GitHub Pages section you will find this:&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F620kpsnj0rz3xuobzbh0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F620kpsnj0rz3xuobzbh0.png" alt="Your site is puplished"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://yuribenjamin.github.io/my-app/" rel="noopener noreferrer"&gt;Visit deployed app&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;6- commit and push your commit to GitHub. &lt;em&gt;Optionally&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;git add .&lt;/code&gt;&lt;br&gt;
&lt;code&gt;git commit -m "Your awesome message"&lt;/code&gt;&lt;br&gt;
&lt;code&gt;git push origin master&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Recap&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We created React App using &lt;code&gt;create-react-app&lt;/code&gt;&lt;br&gt;
then we installed &lt;code&gt;gh-pages&lt;/code&gt; as a dev-dependency&lt;br&gt;
and in &lt;code&gt;package.json&lt;/code&gt; file we added some properties &lt;code&gt;homepage&lt;/code&gt; also in existing &lt;code&gt;scripts&lt;/code&gt; property we added &lt;code&gt;predeploy&lt;/code&gt; and &lt;code&gt;deploy&lt;/code&gt;&lt;br&gt;
and created a remote repository and initialize it&lt;br&gt;
and run &lt;code&gt;npm run deploy&lt;/code&gt; to generate a production build and deploy it to GitHub Pages.&lt;/p&gt;

&lt;p&gt;if you have any questions, please don't hesitate to ask.&lt;br&gt;
Always happy to hear from you.&lt;/p&gt;

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

</description>
      <category>javascript</category>
      <category>react</category>
      <category>github</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
