<?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: Miracle Olorunsola</title>
    <description>The latest articles on DEV Community by Miracle Olorunsola (@techgirli).</description>
    <link>https://dev.to/techgirli</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%2F3686248%2F7ca0fab5-f420-43c9-a32d-91451262afd1.jpeg</url>
      <title>DEV Community: Miracle Olorunsola</title>
      <link>https://dev.to/techgirli</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/techgirli"/>
    <language>en</language>
    <item>
      <title>From Zero to Production: My HNG DevOps Stage 0 Journey</title>
      <dc:creator>Miracle Olorunsola</dc:creator>
      <pubDate>Mon, 20 Apr 2026 12:00:00 +0000</pubDate>
      <link>https://dev.to/techgirli/from-zero-to-production-my-hng-devops-stage-0-journey-250j</link>
      <guid>https://dev.to/techgirli/from-zero-to-production-my-hng-devops-stage-0-journey-250j</guid>
      <description>&lt;p&gt;I just completed a hands-on Linux server setup and deployment no Docker, no automation, just raw DevOps fundamentals.&lt;/p&gt;

&lt;p&gt;Here’s exactly how I approached it:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Server Provisioning &amp;amp; Access&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;Spun up a Linux server on the cloud&lt;br&gt;
Connected via SSH using key-based authentication&lt;br&gt;
Created a secure non-root user: hngdevops&lt;br&gt;
Granted sudo privileges&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Security Hardening&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;Disabled root SSH login&lt;br&gt;
Disabled password authentication (keys only)&lt;br&gt;
Configured Uncomplicated Firewall:&lt;br&gt;
Allowed only ports 22 (SSH), 80 (HTTP), 443 (HTTPS)&lt;br&gt;
Blocked everything else&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Web Server Setup&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;Installed and started Nginx&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="err"&gt;Configured&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;routes:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="err"&gt;/&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;→&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Static&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;HTML&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;page&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;displaying&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;my&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;HNG&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;username&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="err"&gt;/api&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;→&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;JSON&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;response:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="nl"&gt;"message"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"HNGI14 Stage 1"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="nl"&gt;"track"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"DevOps"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="nl"&gt;"username"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"my-username"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;SSL Configuration&lt;/strong&gt;
&lt;code&gt;Used Certbot to generate a valid SSL certificate
Enabled HTTPS on the server
Configured HTTP → HTTPS redirect (301)&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;5.** Validation &amp;amp; Debugging**&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Ensured:
/api returns HTTP 200 with Content-Type: application/json
Username matches exactly (case-sensitive)
SSL is valid (no self-signed certificates)
Firewall and Nginx are active and correctly configured

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Key Lessons&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;Most failures aren’t tools they’re mis-configurations (ports, services, permissions)&lt;br&gt;
“Connection refused” vs “Timeout” tells you exactly where the issue is&lt;br&gt;
Security first: lock down access before exposing your server&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
Live Demo

* Deployed and accessible over HTTPS 
This project sharpened my troubleshooting, Linux, and networking skills exactly what real-world DevOps demands.
hashtag#DevOps hashtag#Linux hashtag#Nginx hashtag#CyberSecurity hashtag#Cloud hashtag#LetsEncrypt hashtag#HNG hashtag#TechJourney

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>devops</category>
      <category>sideprojects</category>
    </item>
    <item>
      <title>HNG Stage 1 DevOps Task Completed — From Infrastructure to API Deployment</title>
      <dc:creator>Miracle Olorunsola</dc:creator>
      <pubDate>Mon, 20 Apr 2026 12:00:00 +0000</pubDate>
      <link>https://dev.to/techgirli/hng-stage-1-devops-task-completed-from-infrastructure-to-api-deployment-12ji</link>
      <guid>https://dev.to/techgirli/hng-stage-1-devops-task-completed-from-infrastructure-to-api-deployment-12ji</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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F68rzgrm9gv4jcnfb7975.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%2F68rzgrm9gv4jcnfb7975.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After successfully setting up a Linux server and configuring Nginx in Stage 0, I took things further in Stage 1 by building and deploying a minimal backend API — focusing not just on development, but on how services run in production.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I Built&lt;/strong&gt;&lt;br&gt;
A lightweight API with 3 endpoints:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;/&lt;/code&gt; → Confirms the API is running&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/health&lt;/code&gt; → Health check endpoint&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/me&lt;/code&gt; → Returns my profile details&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All endpoints:&lt;br&gt;
✔ Return JSON (&lt;code&gt;application/json&lt;/code&gt;)&lt;br&gt;
✔ Respond with HTTP 200&lt;br&gt;
✔ Optimized for &amp;lt;500ms response time&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Deployment Approach&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Provisioned a cloud VPS&lt;/li&gt;
&lt;li&gt;Ran the app on a &lt;strong&gt;non-public port&lt;/strong&gt; (security best practice)&lt;/li&gt;
&lt;li&gt;Configured &lt;strong&gt;Nginx as a reverse proxy&lt;/strong&gt; to handle public traffic&lt;/li&gt;
&lt;li&gt;Ensured high availability using a persistent service (&lt;code&gt;systemd&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Key Learning&lt;/strong&gt;&lt;br&gt;
As a DevOps engineer, deploying isn’t just about infrastructure — it’s about understanding the application lifecycle, performance, and reliability from the inside out.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Live API:&lt;/strong&gt; &lt;a href="http://my-live-domain-or-ip" rel="noopener noreferrer"&gt;http://my-live-domain-or-ip&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;GitHub Repo:&lt;/strong&gt; &lt;a href="https://github.com/Techgirli" rel="noopener noreferrer"&gt;https://github.com/Techgirli&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This project strengthened my skills in:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Linux server management&lt;/li&gt;
&lt;li&gt;Reverse proxy configuration with Nginx&lt;/li&gt;
&lt;li&gt;Service reliability &amp;amp; process management&lt;/li&gt;
&lt;li&gt;API structure and performance optimization&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;On to the next stage &lt;/p&gt;

&lt;h1&gt;
  
  
  DevOps #HNGInternship #Backend #Nginx #Linux #CloudComputing #APIs
&lt;/h1&gt;

</description>
      <category>devops</category>
      <category>backend</category>
      <category>webdev</category>
    </item>
    <item>
      <title>These are some Images from the App.</title>
      <dc:creator>Miracle Olorunsola</dc:creator>
      <pubDate>Thu, 09 Apr 2026 12:00:00 +0000</pubDate>
      <link>https://dev.to/techgirli/these-are-some-images-from-the-app-4n9j</link>
      <guid>https://dev.to/techgirli/these-are-some-images-from-the-app-4n9j</guid>
      <description>&lt;p&gt;GitHub Repository:&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/Innovators-UmojaAgri-Org" rel="noopener noreferrer"&gt;
        Innovators-UmojaAgri-Org
      &lt;/a&gt; / &lt;a href="https://github.com/Innovators-UmojaAgri-Org/UmojaAgri-Org" rel="noopener noreferrer"&gt;
        UmojaAgri-Org
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &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;UmojaAgri-Org&lt;/h1&gt;
&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;UmojaAgri 🌾&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;AI-Driven Agricultural Logistics Platform&lt;/strong&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;A logistics intelligence platform that helps farmers and transporters monitor produce freshness, predict delivery delays, and reduce post-harvest losses using rule-based AI
With the collaboration of the twam we could bring the mobile app to life.&lt;/h2&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Project Overview&lt;/h1&gt;

&lt;/div&gt;
&lt;p&gt;UmojaAgri is an MVP designed to address a major challenge in African agriculture: &lt;strong&gt;food spoilage due to unpredictable transportation&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;The platform calculates a &lt;strong&gt;Freshness Window&lt;/strong&gt; — a real-time countdown that determines whether produce will arrive at its destination before spoilage risk becomes critical.&lt;/p&gt;
&lt;p&gt;It combines logistics tracking, rule-based intelligence, and supply-chain visibility into a single system.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Problem Statement&lt;/h1&gt;

&lt;/div&gt;
&lt;p&gt;A significant percentage of agricultural produce in Africa spoils before reaching markets due to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Poor road conditions&lt;/li&gt;
&lt;li&gt;Unpredictable travel times&lt;/li&gt;
&lt;li&gt;Lack of real-time freshness tracking&lt;/li&gt;
&lt;li&gt;Inefficient logistics coordination&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;UmojaAgri provides predictive insights so farmers and transporters can make smarter decisions and reduce waste.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Core Features&lt;/h1&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Produce&lt;/h2&gt;…&lt;/div&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/Innovators-UmojaAgri-Org/UmojaAgri-Org" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;Live Demo (Render):&lt;br&gt;
Farmers Dashboard: &lt;/p&gt;
&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
      &lt;div class="c-embed__body flex items-center justify-between"&gt;
        &lt;a href="https://umojaagri-org-1.onrender.com/#/dashboard" rel="noopener noreferrer" class="c-link fw-bold flex items-center"&gt;
          &lt;span class="mr-2"&gt;umojaagri-org-1.onrender.com&lt;/span&gt;
          

        &lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;
&lt;br&gt;
Marketer Dashboard: &lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
      &lt;div class="c-embed__body flex items-center justify-between"&gt;
        &lt;a href="https://umojaagri-org-1.onrender.com/#/home-marketer" rel="noopener noreferrer" class="c-link fw-bold flex items-center"&gt;
          &lt;span class="mr-2"&gt;umojaagri-org-1.onrender.com&lt;/span&gt;
          

        &lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;
&lt;br&gt;
Transporter Dashboard: &lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
      &lt;div class="c-embed__body flex items-center justify-between"&gt;
        &lt;a href="https://umojaagri-org" rel="noopener noreferrer" class="c-link fw-bold flex items-center"&gt;
          &lt;span class="mr-2"&gt;umojaagri-org&lt;/span&gt;
          

        &lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&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%2F3in78l643c3dy2jf7fme.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%2F3in78l643c3dy2jf7fme.png" alt=" " width="800" height="450"&gt;&lt;/a&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%2Fmjmww81b3epteb0j9ta0.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%2Fmjmww81b3epteb0j9ta0.png" alt=" " width="800" height="450"&gt;&lt;/a&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%2Fzsb9k4rle1n796q5b1j0.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%2Fzsb9k4rle1n796q5b1j0.png" alt=" " width="800" height="450"&gt;&lt;/a&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%2Fal91g7j3j22qtxh4mlg3.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%2Fal91g7j3j22qtxh4mlg3.png" alt=" " width="800" height="450"&gt;&lt;/a&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%2Fd1ngys4wa9swpcteas4n.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%2Fd1ngys4wa9swpcteas4n.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>mobileapp</category>
      <category>ai</category>
      <category>devops</category>
    </item>
    <item>
      <title>The Slides on the information UmojaAgri</title>
      <dc:creator>Miracle Olorunsola</dc:creator>
      <pubDate>Tue, 07 Apr 2026 12:00:00 +0000</pubDate>
      <link>https://dev.to/techgirli/the-slides-on-the-information-umojaagri-3pbh</link>
      <guid>https://dev.to/techgirli/the-slides-on-the-information-umojaagri-3pbh</guid>
      <description>&lt;p&gt;If you’d like to explore UmojaAgri 🌱 in action:&lt;br&gt;
Check out more information &lt;br&gt;
&lt;/p&gt;
&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
      &lt;div class="c-embed__body flex items-center justify-between"&gt;
        &lt;a href="https://www.canva.com/design/DAHEywhPj3E/-hDsdWXEPDaqebvMcXW9Kw/edit?utm_content=DAHEywhPj3E&amp;amp;utm_campaign=designshare&amp;amp;utm_medium=link2&amp;amp;utm_source=sharebutton" rel="noopener noreferrer" class="c-link fw-bold flex items-center"&gt;
          &lt;span class="mr-2"&gt;canva.com&lt;/span&gt;
          

        &lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&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%2F5eco7iqw73aq13enlpxw.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%2F5eco7iqw73aq13enlpxw.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>You can Explore the app</title>
      <dc:creator>Miracle Olorunsola</dc:creator>
      <pubDate>Mon, 06 Apr 2026 13:00:00 +0000</pubDate>
      <link>https://dev.to/techgirli/you-can-explore-the-app-55i8</link>
      <guid>https://dev.to/techgirli/you-can-explore-the-app-55i8</guid>
      <description>&lt;p&gt;If you’d like to explore UmojaAgri 🌱 in action:&lt;br&gt;
GitHub Repository:&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/Innovators-UmojaAgri-Org" rel="noopener noreferrer"&gt;
        Innovators-UmojaAgri-Org
      &lt;/a&gt; / &lt;a href="https://github.com/Innovators-UmojaAgri-Org/UmojaAgri-Org" rel="noopener noreferrer"&gt;
        UmojaAgri-Org
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &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;UmojaAgri-Org&lt;/h1&gt;
&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;UmojaAgri 🌾&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;AI-Driven Agricultural Logistics Platform&lt;/strong&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;A logistics intelligence platform that helps farmers and transporters monitor produce freshness, predict delivery delays, and reduce post-harvest losses using rule-based AI
With the collaboration of the twam we could bring the mobile app to life.&lt;/h2&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Project Overview&lt;/h1&gt;

&lt;/div&gt;
&lt;p&gt;UmojaAgri is an MVP designed to address a major challenge in African agriculture: &lt;strong&gt;food spoilage due to unpredictable transportation&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;The platform calculates a &lt;strong&gt;Freshness Window&lt;/strong&gt; — a real-time countdown that determines whether produce will arrive at its destination before spoilage risk becomes critical.&lt;/p&gt;
&lt;p&gt;It combines logistics tracking, rule-based intelligence, and supply-chain visibility into a single system.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Problem Statement&lt;/h1&gt;

&lt;/div&gt;
&lt;p&gt;A significant percentage of agricultural produce in Africa spoils before reaching markets due to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Poor road conditions&lt;/li&gt;
&lt;li&gt;Unpredictable travel times&lt;/li&gt;
&lt;li&gt;Lack of real-time freshness tracking&lt;/li&gt;
&lt;li&gt;Inefficient logistics coordination&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;UmojaAgri provides predictive insights so farmers and transporters can make smarter decisions and reduce waste.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Core Features&lt;/h1&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Produce&lt;/h2&gt;…&lt;/div&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/Innovators-UmojaAgri-Org/UmojaAgri-Org" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;Live Demo (Render):&lt;br&gt;
Farmers Dashboard: &lt;/p&gt;
&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
      &lt;div class="c-embed__body flex items-center justify-between"&gt;
        &lt;a href="https://umojaagri-org-1.onrender.com/#/dashboard" rel="noopener noreferrer" class="c-link fw-bold flex items-center"&gt;
          &lt;span class="mr-2"&gt;umojaagri-org-1.onrender.com&lt;/span&gt;
          

        &lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;
&lt;br&gt;
Marketer Dashboard: &lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
      &lt;div class="c-embed__body flex items-center justify-between"&gt;
        &lt;a href="https://umojaagri-org-1.onrender.com/#/home-marketer" rel="noopener noreferrer" class="c-link fw-bold flex items-center"&gt;
          &lt;span class="mr-2"&gt;umojaagri-org-1.onrender.com&lt;/span&gt;
          

        &lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;
&lt;br&gt;
Transporter Dashboard: &lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
      &lt;div class="c-embed__body flex items-center justify-between"&gt;
        &lt;a href="https://umojaagri-org" rel="noopener noreferrer" class="c-link fw-bold flex items-center"&gt;
          &lt;span class="mr-2"&gt;umojaagri-org&lt;/span&gt;
          

        &lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;Project Structure Highlights:&lt;br&gt;
/frontend → Flutter application&lt;br&gt;
/backend → Supabase integration &amp;amp; services&lt;br&gt;
/nginx → Reverse proxy configuration&lt;br&gt;
.github/workflows → CI/CD automation&lt;/p&gt;

&lt;p&gt;What this project demonstrates:&lt;br&gt;
Full-stack collaboration (Flutter + Supabase + PostgreSQL)&lt;br&gt;
DevOps pipeline design using GitHub Actions&lt;br&gt;
Cloud deployment and management via Render&lt;br&gt;
Real-world debugging and system optimization&lt;/p&gt;

&lt;p&gt;Results:&lt;br&gt;
Faster deployment cycles&lt;br&gt;
Improved reliability through automation&lt;br&gt;
Clean and scalable project structure&lt;/p&gt;

&lt;p&gt;Future Improvements:&lt;br&gt;
Container orchestration using Kubernetes&lt;br&gt;
Monitoring &amp;amp; observability with Prometheus + Grafana&lt;br&gt;
Centralized logging and alerting&lt;br&gt;
Scaling into microservices architecture&lt;br&gt;
I’m actively seeking DevOps / Cloud Engineering roles where I can contribute to building scalable, production-ready systems.&lt;br&gt;
Let’s connect &lt;br&gt;
hashtag#DevOpsEngineer hashtag#CloudEngineering hashtag#Kubernetes hashtag#Prometheus hashtag#Grafana hashtag#GitHub hashtag#Portfolio hashtag#OpenToWork&lt;br&gt;
umoja_agri&lt;br&gt;
umojaagri-org-1.onrender.com&lt;/p&gt;

</description>
      <category>mobiledev</category>
      <category>devops</category>
      <category>ai</category>
      <category>programming</category>
    </item>
    <item>
      <title>Here’s how we structured and deployed UmojaAgri 🌱 from a DevOps perspective. Architecture Overview:</title>
      <dc:creator>Miracle Olorunsola</dc:creator>
      <pubDate>Fri, 03 Apr 2026 12:00:00 +0000</pubDate>
      <link>https://dev.to/techgirli/heres-how-we-structured-and-deployed-umojaagri-from-a-devops-perspectivearchitecture-overview-51i6</link>
      <guid>https://dev.to/techgirli/heres-how-we-structured-and-deployed-umojaagri-from-a-devops-perspectivearchitecture-overview-51i6</guid>
      <description>&lt;p&gt;Here’s how we structured and deployed UmojaAgri 🌱 from a DevOps perspective.&lt;br&gt;
Architecture Overview:&lt;br&gt;
Flutter (Frontend) → API layer (Supabase) → PostgreSQL database&lt;br&gt;
Nginx acting as a reverse proxy (where applicable)&lt;br&gt;
Application services deployed via Render&lt;br&gt;
CI/CD handled with GitHub Actions&lt;/p&gt;

&lt;p&gt;Infrastructure Stack:&lt;br&gt;
Hosting: Render&lt;br&gt;
Backend Services: Supabase&lt;br&gt;
Database: PostgreSQL&lt;br&gt;
CI/CD: GitHub Actions&lt;br&gt;
Containerization: Docker&lt;br&gt;
Server Config: Nginx&lt;br&gt;
CI/CD Workflow:&lt;br&gt;
Code pushed to GitHub&lt;br&gt;
GitHub Actions triggers build &amp;amp; checks&lt;br&gt;
Updates deployed to Render&lt;br&gt;
Backend services sync via Supabase&lt;/p&gt;

&lt;p&gt;System Improvements:&lt;br&gt;
Faster and consistent deployments&lt;br&gt;
Simplified rollback via version control&lt;br&gt;
Reduced human error through automation&lt;br&gt;
DevOps Principles Applied:&lt;br&gt;
Automation-first workflows&lt;br&gt;
Service separation (frontend, backend, database)&lt;br&gt;
Scalable and maintainable architecture&lt;/p&gt;

&lt;p&gt;Next: GitHub repo + live demo + future upgrades 👇&lt;br&gt;
hashtag#DevOps hashtag#SystemDesign hashtag#Cloud hashtag#Supabase hashtag#PostgreSQL hashtag#Render hashtag#Infrastructure&lt;/p&gt;

&lt;p&gt;Back&lt;br&gt;
Dialog content end.&lt;br&gt;
Miracle OlorunsolaStatus is online&lt;br&gt;
MessagingYou are on the messaging overlay. Press enter to open the list of conversations.&lt;/p&gt;

&lt;p&gt;Compose message&lt;br&gt;
You are on the messaging overlay. Press enter to open the list of conversations.&lt;/p&gt;

</description>
      <category>mobiledev</category>
      <category>devops</category>
      <category>ai</category>
      <category>programming</category>
    </item>
    <item>
      <title>Created and Deployed an Agri-Tech</title>
      <dc:creator>Miracle Olorunsola</dc:creator>
      <pubDate>Thu, 02 Apr 2026 12:00:00 +0000</pubDate>
      <link>https://dev.to/techgirli/created-and-deployed-an-agri-tech-47la</link>
      <guid>https://dev.to/techgirli/created-and-deployed-an-agri-tech-47la</guid>
      <description>&lt;p&gt;I recently joined a team of amazing women to build a mobile app called UmojaAgri Santana Jepchumba Blen Redwan Michelle Fayeun Blessing Omonye Abanonkhua Nkechika Collins Akpe Rotimi Amusa &lt;/p&gt;

&lt;p&gt;I deployed UmojaAgri 🌱  an AgriTech platform focused on improving how farmers access tools, insights, and resources.&lt;/p&gt;

&lt;p&gt;But beyond development, I approached this project with a DevOps and production-first mindset.&lt;/p&gt;

&lt;p&gt;What I implemented:&lt;/p&gt;

&lt;p&gt;Containerization using Docker&lt;/p&gt;

&lt;p&gt;Automated CI/CD pipelines with GitHub Actions&lt;/p&gt;

&lt;p&gt;Reverse proxy configuration using Nginx&lt;/p&gt;

&lt;p&gt;Cloud deployment using Render&lt;/p&gt;

&lt;p&gt;Debugging real-world deployment issues (including “Cannot GET /”)&lt;/p&gt;

&lt;p&gt;Performance &amp;amp; Impact:&lt;/p&gt;

&lt;p&gt;Deployment time reduced by ~60% using CI/CD automation&lt;/p&gt;

&lt;p&gt;Average response time improved through optimized server routing&lt;/p&gt;

&lt;p&gt;Achieved stable uptime during testing and deployment phases&lt;/p&gt;

&lt;p&gt;Key takeaway:&lt;/p&gt;

&lt;p&gt;This wasn’t just about building features  it was about shipping reliable, scalable systems.&lt;/p&gt;

&lt;p&gt;I’ve included an architecture breakdown in the next post &lt;/p&gt;

&lt;h1&gt;
  
  
  DevOps #CloudEngineering #Render #Docker #CI_CD #Nginx #AgriTech #OpenToWork
&lt;/h1&gt;

</description>
      <category>mobiledev</category>
      <category>devops</category>
    </item>
    <item>
      <title>FAILURE ANALYSIS &amp; DEBUGGING</title>
      <dc:creator>Miracle Olorunsola</dc:creator>
      <pubDate>Sun, 01 Mar 2026 12:00:00 +0000</pubDate>
      <link>https://dev.to/techgirli/failure-analysis-debugging-29p6</link>
      <guid>https://dev.to/techgirli/failure-analysis-debugging-29p6</guid>
      <description>&lt;p&gt;What Pipeline Failures Taught Me&lt;/p&gt;

&lt;p&gt;Failures included:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Missing tools&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Incorrect build paths&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Credential scope issues&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each failure improved:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Pipeline resilience&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Observability&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;System understanding&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;DevSecOps is about controlled failure.&lt;br&gt;
This project demonstrates hands-on experience with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Jenkins CI/CD&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Docker &amp;amp; Kubernetes&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Terraform &amp;amp; AWS&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Container security&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Secure infrastructure design&lt;/p&gt;

&lt;p&gt;I’m actively growing as a DevSecOps / Cloud Engineer and open to opportunities.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>cicd</category>
      <category>devops</category>
    </item>
    <item>
      <title>Secure Secrets Injection in Terraform &amp; Jenkins</title>
      <dc:creator>Miracle Olorunsola</dc:creator>
      <pubDate>Sat, 28 Feb 2026 12:00:00 +0000</pubDate>
      <link>https://dev.to/techgirli/secure-secrets-injection-in-terraform-jenkins-3c8n</link>
      <guid>https://dev.to/techgirli/secure-secrets-injection-in-terraform-jenkins-3c8n</guid>
      <description>&lt;p&gt;Secrets are injected at runtime using:&lt;/p&gt;

&lt;p&gt;Jenkins credentials&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;TF_VAR_db_username&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;TF_VAR_db_password&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;They are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Not committed&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Not logged&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Not baked into images&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This limits blast radius.&lt;/p&gt;

</description>
      <category>terraform</category>
      <category>jenkins</category>
      <category>security</category>
      <category>cicd</category>
    </item>
    <item>
      <title>Provisioning AWS Infrastructure with Terraform</title>
      <dc:creator>Miracle Olorunsola</dc:creator>
      <pubDate>Wed, 25 Feb 2026 12:30:00 +0000</pubDate>
      <link>https://dev.to/techgirli/provisioning-aws-infrastructure-with-terraform-a1c</link>
      <guid>https://dev.to/techgirli/provisioning-aws-infrastructure-with-terraform-a1c</guid>
      <description>&lt;p&gt;Infrastructure is code — and should be treated that way.&lt;/p&gt;

&lt;p&gt;Terraform manages:&lt;/p&gt;

&lt;p&gt;VPC networking&lt;/p&gt;

&lt;p&gt;EKS cluster&lt;/p&gt;

&lt;p&gt;IAM permissions&lt;/p&gt;

&lt;p&gt;Benefits:&lt;/p&gt;

&lt;p&gt;Version control&lt;/p&gt;

&lt;p&gt;Repeatability&lt;/p&gt;

&lt;p&gt;Reduced misconfiguration risk&lt;/p&gt;

</description>
      <category>ai</category>
      <category>devops</category>
      <category>cicd</category>
      <category>terraform</category>
    </item>
    <item>
      <title>Embedding Security Gates with Trivy</title>
      <dc:creator>Miracle Olorunsola</dc:creator>
      <pubDate>Mon, 23 Feb 2026 12:00:00 +0000</pubDate>
      <link>https://dev.to/techgirli/embedding-security-gates-with-trivy-28jp</link>
      <guid>https://dev.to/techgirli/embedding-security-gates-with-trivy-28jp</guid>
      <description>&lt;p&gt;Security scans should:&lt;/p&gt;

&lt;p&gt;Fail builds on HIGH/CRITICAL issues&lt;/p&gt;

&lt;p&gt;Run automatically&lt;/p&gt;

&lt;p&gt;Be enforced before deployment&lt;/p&gt;

&lt;p&gt;Trivy scans every image before it’s pushed or deployed.&lt;/p&gt;

&lt;p&gt;This shifts security left in the SDLC.&lt;br&gt;
Securing Docker Image Distribution&lt;/p&gt;

&lt;p&gt;Container registries are part of your attack surface.&lt;/p&gt;

&lt;p&gt;Measures used:&lt;/p&gt;

&lt;p&gt;Jenkins credentials manager&lt;/p&gt;

&lt;p&gt;Scoped DockerHub tokens&lt;/p&gt;

&lt;p&gt;No plaintext secrets&lt;/p&gt;

&lt;p&gt;Supply chain security is DevSecOps responsibility.&lt;/p&gt;

</description>
      <category>trivy</category>
      <category>devops</category>
    </item>
    <item>
      <title>Dockerizing Applications for CI/CD</title>
      <dc:creator>Miracle Olorunsola</dc:creator>
      <pubDate>Sat, 21 Feb 2026 12:00:00 +0000</pubDate>
      <link>https://dev.to/techgirli/dockerizing-applications-for-cicd-22pf</link>
      <guid>https://dev.to/techgirli/dockerizing-applications-for-cicd-22pf</guid>
      <description>&lt;p&gt;Docker is more than packaging; it’s runtime security.&lt;/p&gt;

&lt;p&gt;In this project:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Backend and frontend have separate Dockerfiles&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Build contexts are explicitly defined&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Images are tagged deterministically&lt;/p&gt;

&lt;p&gt;Key lessons:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Dockerfile location matters&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Build context errors break pipelines&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Reproducibility beats cleverness&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devops</category>
      <category>cicd</category>
      <category>docker</category>
    </item>
  </channel>
</rss>
