<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Owoola Muhammed </title>
    <description>The latest articles on DEV Community by Owoola Muhammed  (@drace2).</description>
    <link>https://dev.to/drace2</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%2F1004105%2Fa7abd8bf-1478-4ab3-8f61-b585f3bbbafe.jpg</url>
      <title>DEV Community: Owoola Muhammed </title>
      <link>https://dev.to/drace2</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/drace2"/>
    <language>en</language>
    <item>
      <title>Altschool Github App Project</title>
      <dc:creator>Owoola Muhammed </dc:creator>
      <pubDate>Sun, 08 Jan 2023 21:17:52 +0000</pubDate>
      <link>https://dev.to/drace2/altschool-github-app-project-11hl</link>
      <guid>https://dev.to/drace2/altschool-github-app-project-11hl</guid>
      <description>&lt;p&gt;*&lt;em&gt;Table of content&lt;br&gt;
Brief intro to React&lt;br&gt;
About this App&lt;br&gt;
Overview of this project&lt;br&gt;
Setting up React&lt;br&gt;
Setting up React Router&lt;br&gt;
Homepage structure&lt;br&gt;
Pagination&lt;br&gt;
Error boundary &lt;br&gt;
Error 404 page&lt;br&gt;
SEO&lt;br&gt;
Conclusion&lt;br&gt;
References&lt;br&gt;
*&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Brief intro to React
&lt;/h2&gt;

&lt;p&gt;React is one of the most important frameworks of Javascript. It is arguably the most popular framework. It was developed by Jordan Walke, a software developer at Meta and was initially released in 2013.&lt;br&gt;
   React is a framework that simplifies complex Javascript concepts.&lt;/p&gt;
&lt;h2&gt;
  
  
  About this App
&lt;/h2&gt;

&lt;p&gt;I built this Github App as a student at Altschool Africa. This App is a project for second semester exams. In this project, I implemented some interesting features which includes but not limited to Fetch API, Nested routes, pagination, error boundary, error 404 page, Search Engine Optimization.&lt;/p&gt;
&lt;h2&gt;
  
  
  Overview of Project
&lt;/h2&gt;

&lt;p&gt;This is a Github App which displays all my repositories in a paginated format with 6 Repos per page which spans over 5 pages. Clicking each repository gives more information about the clicked repository. I also implemented Nested routes which allows navigation between &lt;strong&gt;Home&lt;/strong&gt; and &lt;strong&gt;Repo&lt;/strong&gt; without rendering the whole page. Error boundary, error 404 page and Search Engine Optimization were also implemented.&lt;/p&gt;
&lt;h2&gt;
  
  
  Setting up React
&lt;/h2&gt;

&lt;p&gt;I created a new React App using &lt;br&gt;
     &lt;code&gt;npx create-react-app my-app&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;After a successful creation, I created the necessary folders and files.&lt;/p&gt;
&lt;h2&gt;
  
  
  Setting up React Router
&lt;/h2&gt;

&lt;p&gt;Navigation is one of the primary features of any App or website. Without a good navigation, an App becomes difficult to use. React comes with  a library called React Router which allows for navigation within the App. React Router is set up using the command.&lt;br&gt;
         &lt;code&gt;npm install react-router-dom&lt;/code&gt; &lt;/p&gt;

&lt;p&gt;After installing this library, I implemented Nested routes which allows for navigation without rendering the whole page.&lt;/p&gt;
&lt;h2&gt;
  
  
  Home page
&lt;/h2&gt;

&lt;p&gt;This consists mainly of the &lt;strong&gt;Home and Repo navbar&lt;/strong&gt; buttons, error boundary button and relevant texts.&lt;br&gt;
The Repo navbar button takes user to the paginated repositories while the home navbar button returns user to the homepage. Both buttons work without rendering the whole page due to implemented nested routes.&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%2F2z50zmre1mbpamt9olgy.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%2F2z50zmre1mbpamt9olgy.png" alt="Image description" width="800" height="509"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Pagination
&lt;/h2&gt;

&lt;p&gt;I implemented this feature after effecting Fetch API of all my Github repositories using the URL &lt;/p&gt;

&lt;p&gt;&lt;a href="https://api.github.com/users/Dr-Ace2/repos" rel="noopener noreferrer"&gt;https://api.github.com/users/Dr-Ace2/repos&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;With quite a lot of repositories, I needed to equally distribute(paginate) them to make the App user-friendly. I made each repo into a small card and placed 6 of them on a single page which spans over 5 pages &lt;/p&gt;

&lt;p&gt;&lt;code&gt;pageLimit={5} dataLimit={6}&lt;/code&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%2Fr4jtmhwtkx2u3y7lgx3q.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%2Fr4jtmhwtkx2u3y7lgx3q.png" alt="Image description" width="409" height="163"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Error boundary
&lt;/h2&gt;

&lt;p&gt;Errors within a an App may crash the whole App if it isn't caught and effectively managed by an error boundary. I executed this using the lifecycle methods namely&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; static getDerivedStateFromError() or componentDidCatch()
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;p&gt;This can be tested by simply clicking on the error boundary button in the home page.&lt;/p&gt;

&lt;h2&gt;
  
  
  Error 404 page
&lt;/h2&gt;

&lt;p&gt;This is a page that is displayed when user enters a wrong route.&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%2Fq3r7gqkzyxlh0eygoyow.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%2Fq3r7gqkzyxlh0eygoyow.png" alt="Image description" width="454" height="330"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Search Engine Optimization (SEO)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;SEO ensures that a website is easily accessible to a search engine. This increases the chances of a website appearing in a search.&lt;/p&gt;

&lt;p&gt;I effected SEO using React Helmet which is a React library. &lt;br&gt;
I imported React Helmet from react-helmet-async which I used to wrap the Title, Meta and Link tags.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  import { Helmet } from "react-helmet-async";
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

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

&lt;p&gt;This is the end of my little Github App walkthrough. I hope you have benefitted from this. Below is the Github Repository link to the code and deploy link. &lt;/p&gt;

&lt;p&gt;Thanks for reading.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/Dr-Ace2/exam-second" rel="noopener noreferrer"&gt;https://github.com/Dr-Ace2/exam-second&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://exam-second.vercel.app/" rel="noopener noreferrer"&gt;https://exam-second.vercel.app/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;References&lt;br&gt;
Wikipedia&lt;br&gt;
&lt;a href="https://reactjs.org" rel="noopener noreferrer"&gt;https://reactjs.org&lt;/a&gt;&lt;/p&gt;

</description>
      <category>discord</category>
      <category>ai</category>
      <category>automation</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
