<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title><![CDATA[Daniel Amekpoagbe Portfolio - Blog]]></title>
    <link>https://www.amekpoagbe.com</link>
    <description><![CDATA[Latest blog posts from Daniel Amekpoagbe Portfolio]]></description>
    <language>en-US</language>
    <lastBuildDate>Sun, 19 Jul 2026 09:40:45 GMT</lastBuildDate>
    <managingEditor>work@amekpoagbe.com (Daniel Amekpoagbe)</managingEditor>
    <webMaster>work@amekpoagbe.com (Daniel Amekpoagbe)</webMaster>
    <atom:link href="https://www.amekpoagbe.com/rss.xml" rel="self" type="application/rss+xml" />
    
    <item>
      <title><![CDATA[SEO & Geo-Targeting in Next.js: A Practical Guide with Agentic AI Skills]]></title>
      <link>https://www.amekpoagbe.com/blog/seo-geo-targeting-nextjs-agentic-skills</link>
      <guid isPermaLink="true">https://www.amekpoagbe.com/blog/seo-geo-targeting-nextjs-agentic-skills</guid>
      <description><![CDATA[Search engine optimisation (SEO) is the single highest-leverage investment you can make for your website. But doing it well — especially when your audience spans multiple countries or cities — demands a strategy that goes beyond meta tags and keywords.In this post, I walk through how I handle SEO and geo-targeting in Next.js, and then go a step further: how I've turned the most repetitive parts of SEO work over to agentic AI skills that monitor, audit, and improve my site's search presence autom]]></description>
      <pubDate>Tue, 07 Jul 2026 08:32:31 GMT</pubDate>
      <author>work@amekpoagbe.com (Daniel Amekpoagbe)</author>
      <enclosure url="https://grwqjnzyessysgpjjjvi.supabase.co/storage/v1/object/public/blog-images/ChatGPT%20Image%20Jul%2012,%202026,%2008_10_52%20PM.png" type="image/jpeg" />
      <category>Next.js, SEO, Geo-Targeting, AI Agents, Web Development, Performance</category>
    </item>
    <item>
      <title><![CDATA[How Much Does a Website Cost in Ghana in 2026?]]></title>
      <link>https://www.amekpoagbe.com/blog/how-much-does-a-website-cost-in-ghana-in-2026</link>
      <guid isPermaLink="true">https://www.amekpoagbe.com/blog/how-much-does-a-website-cost-in-ghana-in-2026</guid>
      <description><![CDATA[If you are a business owner in Accra, Kumasi, or anywhere in Ghana, you have probably asked yourself: how much should I actually pay for a website?It is a fair question. Quotes from different developers can range anywhere from GH¢500 to GH¢50,000, and without context, there is no easy way to know what is reasonable. That confusion is normal, and it almost always comes down to one thing: not knowing what actually drives the price.My name is Daniel Amekpoagbe. I am a full-stack web developer based]]></description>
      <pubDate>Wed, 27 May 2026 20:30:57 GMT</pubDate>
      <author>work@amekpoagbe.com (Daniel Amekpoagbe)</author>
      <enclosure url="https://grwqjnzyessysgpjjjvi.supabase.co/storage/v1/object/public/blog-images/website-cost-ghana-cover.jpg" type="image/jpeg" />
      <category>Web Development, Ghana, Business, Pricing, E-commerce</category>
    </item>
    <item>
      <title><![CDATA[Why Fetching Data Inside useEffect Is Not a Good Idea]]></title>
      <link>https://www.amekpoagbe.com/blog/why-fetching-data-inside-useeffect-is-not-a-good-idea</link>
      <guid isPermaLink="true">https://www.amekpoagbe.com/blog/why-fetching-data-inside-useeffect-is-not-a-good-idea</guid>
      <description><![CDATA[If you’ve ever dropped a fetch inside a useEffect and thought “this feels right,” welcome to the club. I did it for years. It was my default pattern.But after enough production bugs, race conditions, and “why is this fetching twice?” moments, I realized it’s like trying to cook Banku(Ghanaian food) in a rice cooker: it technically works, but it’s messy, inefficient, and you’re left wondering why you didn’t just use the right tool.Let’s break down why useEffect data fetching is almost always the]]></description>
      <pubDate>Wed, 11 Feb 2026 16:13:13 GMT</pubDate>
      <author>work@amekpoagbe.com (Daniel Amekpoagbe)</author>
      <enclosure url="https://grwqjnzyessysgpjjjvi.supabase.co/storage/v1/object/public/blog-images/ChatGPT%20Image%20Feb%2011,%202026,%2003_50_35%20PM.png" type="image/jpeg" />
      <category>React, useEffect, Data Fetching, Best Practices</category>
    </item>
    <item>
      <title><![CDATA[React Compiler Explained- Performance Optimization]]></title>
      <link>https://www.amekpoagbe.com/blog/react-compiler-explained-performance-optimization</link>
      <guid isPermaLink="true">https://www.amekpoagbe.com/blog/react-compiler-explained-performance-optimization</guid>
      <description><![CDATA[Picture this: You've built a solid React application, but it's starting to feel sluggish. Components re-render when they shouldn't. You reach for useMemo, useCallback, and React.memo — the classic performance toolkit. Your code works, but now it's filled with hooks and complexity that make your head spin. There has to be a better way.
Enter React Compiler, a tool that handles performance optimization automatically, letting you write clean React code without the mental gymnastics.

The Old Manual]]></description>
      <pubDate>Sun, 30 Nov 2025 13:40:26 GMT</pubDate>
      <author>work@amekpoagbe.com (Daniel Amekpoagbe)</author>
      <enclosure url="https://grwqjnzyessysgpjjjvi.supabase.co/storage/v1/object/public/blog-images/ChatGPT%20Image%20Nov%2030,%202025,%2001_10_25%20PM.png" type="image/jpeg" />
      <category>React</category>
    </item>
    <item>
      <title><![CDATA[Mastering React 19's useFormStatus Hook : The Right Way to Handle Form Submissions]]></title>
      <link>https://www.amekpoagbe.com/blog/mastering-react-19s-useformstatus-hook-the-right-way-to-handle-form-submissions</link>
      <guid isPermaLink="true">https://www.amekpoagbe.com/blog/mastering-react-19s-useformstatus-hook-the-right-way-to-handle-form-submissions</guid>
      <description><![CDATA[Last week, while diving into the React 19 documentation, I stumbled upon a hook that immediately caught my attention: useFormStatus(). At first glance, it seemed straightforward, but as I experimented with it and dug deeper into its behavior, I realized there's more to this hook than meets the eye. After spending considerable time researching and testing different implementations, I wanted to share what I've learned so we can all level up our form handling in React.

What is useFormStatus?

The]]></description>
      <pubDate>Sat, 22 Nov 2025 10:43:32 GMT</pubDate>
      <author>work@amekpoagbe.com (Daniel Amekpoagbe)</author>
      <enclosure url="https://grwqjnzyessysgpjjjvi.supabase.co/storage/v1/object/public/blog-images/hookform.png" type="image/jpeg" />
      <category>React, Hooks</category>
    </item>
    <item>
      <title><![CDATA[Exploring New Frameworks With Intention: My Experience With TanStack Router]]></title>
      <link>https://www.amekpoagbe.com/blog/exploring-new-frameworks-with-intention-my-experience-with-tanstack-router</link>
      <guid isPermaLink="true">https://www.amekpoagbe.com/blog/exploring-new-frameworks-with-intention-my-experience-with-tanstack-router</guid>
      <description><![CDATA[There's a common piece of advice in the React and frontend engineering world: "Don't just jump to new frameworks."
And honestly, that advice holds weight. In a constantly evolving JavaScript ecosystem filled with new libraries, meta-frameworks, and tooling updates, it's easy to feel overwhelmed. Many developers get trapped in the cycle of learning a little bit of everything and mastering nothing.
But here's the perspective I've grown into:
Exploring new frameworks isn't bad — exploring without i]]></description>
      <pubDate>Wed, 19 Nov 2025 19:42:39 GMT</pubDate>
      <author>work@amekpoagbe.com (Daniel Amekpoagbe)</author>
      <enclosure url="https://grwqjnzyessysgpjjjvi.supabase.co/storage/v1/object/public/blog-images/ChatGPT%20Image%20Nov%2019,%202025,%2008_01_52%20PM.png" type="image/jpeg" />
      <category>Tanstack Router</category>
    </item>
    <item>
      <title><![CDATA[How I Built My Developer Portfolio ]]></title>
      <link>https://www.amekpoagbe.com/blog/how-i-built-my-developer-portfolio</link>
      <guid isPermaLink="true">https://www.amekpoagbe.com/blog/how-i-built-my-developer-portfolio</guid>
      <description><![CDATA[Launching my portfolio website has been one of the most meaningful milestones in my software engineering journey. What started as a small fun project quickly evolved into a full professional platform — custom pages, a structured design system, animations, and my proudest achievement: a fully custom blog built from scratch using Supabase, React Markdown, and my own dashboard (which I call Mini-Notion).
This blog breaks down my full process:

How I built the portfolio
Why I changed direction multi]]></description>
      <pubDate>Mon, 17 Nov 2025 22:46:45 GMT</pubDate>
      <author>work@amekpoagbe.com (Daniel Amekpoagbe)</author>
      <enclosure url="https://grwqjnzyessysgpjjjvi.supabase.co/storage/v1/object/public/blog-images/pf.png" type="image/jpeg" />
      <category>Nextjs, React</category>
    </item>
  </channel>
</rss>