<?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: Faruq Awe</title>
    <description>The latest articles on DEV Community by Faruq Awe (@dimeji).</description>
    <link>https://dev.to/dimeji</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%2F2785412%2Fbdde8a2d-4671-4529-ad9b-9f7dbb195525.png</url>
      <title>DEV Community: Faruq Awe</title>
      <link>https://dev.to/dimeji</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/dimeji"/>
    <language>en</language>
    <item>
      <title>Building a RESTful API with Node.js and Cat Facts 🚀</title>
      <dc:creator>Faruq Awe</dc:creator>
      <pubDate>Thu, 16 Oct 2025 17:55:47 +0000</pubDate>
      <link>https://dev.to/dimeji/building-a-restful-api-with-nodejs-and-cat-facts-31h6</link>
      <guid>https://dev.to/dimeji/building-a-restful-api-with-nodejs-and-cat-facts-31h6</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%2Fimages.unsplash.com%2Fphoto-1627398242454-45a1465c2479%3Fixlib%3Drb-4.0.3%26auto%3Dformat%26fit%3Dcrop%26w%3D1000%26q%3D80" 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%2Fimages.unsplash.com%2Fphoto-1627398242454-45a1465c2479%3Fixlib%3Drb-4.0.3%26auto%3Dformat%26fit%3Dcrop%26w%3D1000%26q%3D80" alt="Node.js API" width="1000" height="750"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🎯 The Challenge
&lt;/h2&gt;

&lt;p&gt;As part of my backend development stage at HNG, I recently built a simple RESTful API that combines personal profile information with dynamic cat facts. Here's my story of turning requirements into a fully deployed application.&lt;/p&gt;

&lt;h2&gt;
  
  
  📋 Task Requirements
&lt;/h2&gt;

&lt;p&gt;The goal was straightforward but comprehensive:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create a GET endpoint at &lt;code&gt;/me&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Return JSON with specific structure&lt;/li&gt;
&lt;li&gt;Integrate with external Cat Facts API&lt;/li&gt;
&lt;li&gt;Include dynamic UTC timestamp&lt;/li&gt;
&lt;li&gt;Handle errors gracefully&lt;/li&gt;
&lt;li&gt;Deploy to a cloud platform&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🛠️ Tech Stack
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Backend&lt;/strong&gt;: Node.js with Express&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;HTTP Client&lt;/strong&gt;: Axios for external API calls&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deployment&lt;/strong&gt;: Render.com&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Environment Management&lt;/strong&gt;: dotenv&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🚀 The Implementation Journey
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 1: Setting Up the Foundation
&lt;/h3&gt;

&lt;p&gt;I started by creating a basic Express server with proper middleware:&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%2Fkf4smr3hzsycrnqrwaft.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%2Fkf4smr3hzsycrnqrwaft.png" alt=" " width="800" height="222"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: External API Integration
&lt;/h3&gt;

&lt;p&gt;The most exciting part was integrating with the Cat Facts API:&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%2Fy2a5n76h1xahmnmsprvl.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%2Fy2a5n76h1xahmnmsprvl.png" alt=" " width="618" height="216"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3: Building the Main Endpoint
&lt;/h3&gt;

&lt;p&gt;The core GET &lt;code&gt;/me&lt;/code&gt; endpoint brought everything together:&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%2F6yq1mn31zsu69wpd3o1b.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%2F6yq1mn31zsu69wpd3o1b.png" alt=" " width="800" height="426"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Challenges
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Challenge 1: CORS Package Compatibility&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Issue:&lt;/strong&gt; Path-to-regexp errors with Node.js v22&lt;br&gt;
&lt;strong&gt;Solution:&lt;/strong&gt; Implemented manual CORS headers instead of using the cors package&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Challenge 2: Deployment Platform Issues&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Experience:&lt;/strong&gt; Tried PXXL.app initially, encountered "no available server" errors&lt;br&gt;
&lt;strong&gt;Solution:&lt;/strong&gt; Successfully deployed on Render.com with their generous free tier&lt;/p&gt;

&lt;h2&gt;
  
  
  📊 The Final Result
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;API Response Structure&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%2Fttz17r8lb2xrld5ll8ve.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%2Fttz17r8lb2xrld5ll8ve.png" alt=" " width="800" height="124"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🔗 Project Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Main API:&lt;/strong&gt; &lt;a href="https://profile-api-6tan.onrender.com/me" rel="noopener noreferrer"&gt;https://profile-api-6tan.onrender.com/me&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Health Check:&lt;/strong&gt; &lt;a href="https://profile-api-6tan.onrender.com/health" rel="noopener noreferrer"&gt;https://profile-api-6tan.onrender.com/health&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Repository:&lt;/strong&gt; &lt;a href="https://github.com/Ladii1/profile-api.git" rel="noopener noreferrer"&gt;https://github.com/Ladii1/profile-api.git&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;📚 Resources That Helped&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://expressjs.com/" rel="noopener noreferrer"&gt;Express.js Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://catfact.ninja/" rel="noopener noreferrer"&gt;Cat Facts API&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://render.com/docs/deploy-node-express-app" rel="noopener noreferrer"&gt;Render Deployment Guide&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Building this API taught me that even simple projects involve complex considerations. From handling time zones to managing external API dependencies, every line of code serves a purpose.&lt;br&gt;
&lt;strong&gt;P.S.&lt;/strong&gt; Don't forget to test the live API and let me know what cat fact you get! &lt;/p&gt;

</description>
      <category>node</category>
      <category>backend</category>
      <category>javascript</category>
      <category>api</category>
    </item>
    <item>
      <title>Uncovering UX Gaps</title>
      <dc:creator>Faruq Awe</dc:creator>
      <pubDate>Tue, 04 Feb 2025 06:12:05 +0000</pubDate>
      <link>https://dev.to/dimeji/uncovering-ux-gaps-3o01</link>
      <guid>https://dev.to/dimeji/uncovering-ux-gaps-3o01</guid>
      <description>&lt;p&gt;&lt;strong&gt;Introduction&lt;/strong&gt;&lt;br&gt;
&lt;a href="//Cars.ng"&gt;Cars.ng&lt;/a&gt;, Nigeria’s premier online marketplace for buying and selling cars, promises a seamless experience for users. But does it deliver? To find out, I conducted exploratory testing of its core user journeys, uncovering critical bugs, usability flaws, and opportunities for improvement. Here’s what I discovered.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Methodology&lt;/strong&gt;&lt;br&gt;
I tested Cars.ng on Windows (Firefox v134.0.2) and mobile device (iOS- Firefox v135.0) to evaluate:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;User Flows: Registration, search, car listings, and seller contact.&lt;/li&gt;
&lt;li&gt;Performance: Page load times and responsiveness.&lt;/li&gt;
&lt;li&gt;Cross-Device Compatibility: Desktop vs. mobile experiences.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Tools Used:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Firefox DevTools (for mobile emulation and debugging).&lt;/li&gt;
&lt;li&gt;Lighthouse (for performance metrics).&lt;/li&gt;
&lt;li&gt;Screen recording tools (for capturing visual proof).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Findings&lt;/strong&gt;&lt;br&gt;
I found different issues using the website, like a broken login/registration button, different server errors, and a lot of sellers posting with either missing images or descriptions, which in my opinion, is blocking the primary goal of the platform. I also ran lighthouse to quantify the platform's technical health which showed a strong baseline for accessibility but a little above average for the performance.&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%2Fizva4ev5utzoqax7blnj.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%2Fizva4ev5utzoqax7blnj.png" alt="Image description" width="800" height="373"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Recommendation&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Fix High Severity Bugs Immediately - Debug the server errors and Facebook login integration.&lt;/li&gt;
&lt;li&gt;Optimize Mobile Responsiveness - Use CSS media queries to prevent text overlap and alignment issues.&lt;/li&gt;
&lt;li&gt;Improve Data Validation - Ensure image description mappings are accurate.&lt;/li&gt;
&lt;li&gt;Add Error Handling - Replace generic status errors with user friendly messages like "Oops! Try again later".&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br&gt;
While Cars.ng offers a robust platform for car enthusiasts, critical bugs hinder its potential. Addressing these issues would significantly improve user trust and satisfaction.&lt;/p&gt;

&lt;p&gt;Explore &lt;a href="//Cars.ng"&gt;Cars.ng&lt;/a&gt; yourself, and check out my full bug report &lt;a href="https://docs.google.com/spreadsheets/d/15JpC2IW1EkfK29OzsEimAOuwMeQ87D0k0thC6eD9Q1g/edit?usp=sharing" rel="noopener noreferrer"&gt;here&lt;/a&gt; for details.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Devops Stage 0</title>
      <dc:creator>Faruq Awe</dc:creator>
      <pubDate>Wed, 29 Jan 2025 16:57:34 +0000</pubDate>
      <link>https://dev.to/dimeji/devops-stage-0-5h3m</link>
      <guid>https://dev.to/dimeji/devops-stage-0-5h3m</guid>
      <description>&lt;p&gt;As part of my DevOps learning journey, I was tasked with setting up an NGINX web server on a fresh Ubuntu instance hosted on AWS. The goal was to serve a custom HTML page with a welcome message and document the process. Here’s how I tackled it!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Approach&lt;/strong&gt;&lt;br&gt;
I chose AWS EC2 for this task because of its free tier offering and scalability. Here’s my step-by-step process:&lt;/p&gt;

&lt;p&gt;Launched an Ubuntu Server:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Created an AWS account, navigated to EC2, and launched a t2.micro instance with Ubuntu 22.04.&lt;/li&gt;
&lt;li&gt;Generated a .pem SSH key pair for secure access.&lt;/li&gt;
&lt;li&gt;Ensured the security group allowed inbound HTTP traffic (port 80). 
&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%2F2yac3hnazv2jbgm8lmj9.png" alt="Image description" width="800" height="197"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Updated NGINX:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Updated packages with sudo apt update and NGINX.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Started the service and enabled auto-start with systemctl.&lt;br&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%2Fp9jorrk0jj08ejqec2a9.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%2Fp9jorrk0jj08ejqec2a9.png" alt="Image description" width="567" height="81"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Created the Custom Page:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
Replaced the default HTML file at /var/www/html/index.html with my message:
&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%2Fzvu25oo7471ttgywekw3.png" alt="Image description" width="800" height="35"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Tested the Server:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
Accessed &lt;a href="http://54.210.153.16/" rel="noopener noreferrer"&gt;http://54.210.153.16/&lt;/a&gt; in my browser and saw my custom page!&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%2Filesyq91xz4plqkxim1j.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%2Filesyq91xz4plqkxim1j.png" alt="Image description" width="800" height="408"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Challenges &amp;amp; Solutions&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Firewall Configuration:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Issue: Forgot to enable HTTP traffic in AWS security groups initially.&lt;/li&gt;
&lt;li&gt;Fix: Edited the EC2 security group to allow inbound port 80.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Editing Files with Sudo:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Issue: Permission denied when i tried to edit /var/www/html/index.html.&lt;/li&gt;
&lt;li&gt;Fix: Learned to use sudo tee to write files with root privileges.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Learning &amp;amp; Professional Growth&lt;/strong&gt;&lt;br&gt;
This experience aligns with my goal to become a DevOps Engineer, where tasks like server provisioning, automation, and CI/CD pipeline management are critical. As highlighted in the &lt;a href="https://hng.tech/hire/devops-engineers" rel="noopener noreferrer"&gt;HNG DevOps Engineers&lt;/a&gt; page, these skills are essential for optimizing development workflows.&lt;/p&gt;

&lt;p&gt;I also see how cloud platforms like AWS are central to modern DevOps. The &lt;a href="https://hng.tech/hire/aws-solutions-architects" rel="noopener noreferrer"&gt;AWS Solutions Architects&lt;/a&gt; role, for instance, requires deep familiarity with EC2 and networking skills.&lt;/p&gt;

&lt;p&gt;Completing this task was good and easy. From staring at a terminal to hosting a live webpage, I’ve gained confidence in working with servers. While I still have much to learn, this project solidified my passion for DevOps.&lt;br&gt;
To anyone starting out: Embrace the errors, they’re the best teachers!&lt;/p&gt;

&lt;p&gt;References&lt;br&gt;
&lt;a href="https://hng.tech/hire/devops-engineers" rel="noopener noreferrer"&gt;HNG DevOps Engineers&lt;/a&gt;&lt;br&gt;
&lt;a href="https://hng.tech/hire/aws-solutions-architects" rel="noopener noreferrer"&gt;AWS Solutions Architects&lt;/a&gt;&lt;/p&gt;

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