<?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: Mbanefo Emmanuel Ifechukwu </title>
    <description>The latest articles on DEV Community by Mbanefo Emmanuel Ifechukwu  (@ifehdelight).</description>
    <link>https://dev.to/ifehdelight</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3984479%2F7d9d78d2-119f-4a1b-86f0-bead61b8f326.png</url>
      <title>DEV Community: Mbanefo Emmanuel Ifechukwu </title>
      <link>https://dev.to/ifehdelight</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ifehdelight"/>
    <language>en</language>
    <item>
      <title>Building in Public: Week 2 — I Missed My Own Deadline (And That's Okay)</title>
      <dc:creator>Mbanefo Emmanuel Ifechukwu </dc:creator>
      <pubDate>Mon, 06 Jul 2026 08:29:45 +0000</pubDate>
      <link>https://dev.to/ifehdelight/building-in-public-week-2-i-missed-my-own-deadline-and-thats-okay-1m27</link>
      <guid>https://dev.to/ifehdelight/building-in-public-week-2-i-missed-my-own-deadline-and-thats-okay-1m27</guid>
      <description>&lt;p&gt;TL;DR&lt;br&gt;
I told you the waitlist page was dropping this week.&lt;/p&gt;

&lt;p&gt;It didn't.&lt;/p&gt;

&lt;p&gt;And instead of pretending that didn't happen, I'm going to tell &lt;br&gt;
you exactly why — because this is build in public, not build in perfect.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Actually Happened
&lt;/h2&gt;

&lt;p&gt;University didn't pause because I have a product to ship.&lt;br&gt;
Life didn't pause either.&lt;/p&gt;

&lt;p&gt;Between coursework, personal stuff, and the financial reality of &lt;br&gt;
building something with literally zero budget, &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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fw2p6ww06l25h0tu4ob0e.jpeg" 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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fw2p6ww06l25h0tu4ob0e.jpeg" alt=" " width="799" height="533"&gt;&lt;/a&gt;this week was not &lt;br&gt;
the week I planned for.&lt;/p&gt;

&lt;p&gt;No dramatic story. Just the honest version:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Some days I had zero energy to open my laptop&lt;/li&gt;
&lt;li&gt;Some days I opened it and just stared&lt;/li&gt;
&lt;li&gt;The waitlist page is built — it's sitting there, ready&lt;/li&gt;
&lt;li&gt;But "ready to deploy" and "deployed" are two different things&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  What I Did Get Done
&lt;/h2&gt;

&lt;p&gt;Not nothing. But not what I promised either.&lt;/p&gt;

&lt;p&gt;✅ Waitlist page — still ready, deployment pushed to next week&lt;br&gt;&lt;br&gt;
✅ Reviewed the full component structure&lt;br&gt;&lt;br&gt;
✅ Made small UI tweaks on the waitlist form&lt;br&gt;&lt;br&gt;
⏳ Product listing page — in progress  &lt;/p&gt;




&lt;h2&gt;
  
  
  The Real Talk
&lt;/h2&gt;

&lt;p&gt;Nobody tells you that building a product while being a student &lt;br&gt;
is less about skill and more about energy management.&lt;/p&gt;

&lt;p&gt;Some weeks you ship. Some weeks life happens.&lt;br&gt;
The only way to fail is to stop entirely.&lt;/p&gt;

&lt;p&gt;I haven't stopped. I'm just a week behind.&lt;/p&gt;




&lt;h2&gt;
  
  
  Next Week, For Real This Time
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Waitlist page goes live &lt;/li&gt;
&lt;li&gt;Week 3 update right here&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Follow me on Dev.to so you catch it the moment it drops.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Delight | Founder, Softchic&lt;br&gt;&lt;br&gt;
&lt;a href="https://x.com/ifehdelight" rel="noopener noreferrer"&gt;@ifehdelight&lt;/a&gt; on X&lt;br&gt;&lt;br&gt;
&lt;a href="https://linkedin.com/in/ifehdelight" rel="noopener noreferrer"&gt;ifehdelight&lt;/a&gt; on LinkedIn&lt;/p&gt;

</description>
      <category>buildinpublic</category>
      <category>webdev</category>
      <category>career</category>
      <category>ifehdelight</category>
    </item>
    <item>
      <title>How I Structured My Next.js 14 App Router Project — And Why It Scales</title>
      <dc:creator>Mbanefo Emmanuel Ifechukwu </dc:creator>
      <pubDate>Tue, 30 Jun 2026 20:58:51 +0000</pubDate>
      <link>https://dev.to/ifehdelight/how-i-structured-my-nextjs-14-app-router-project-and-why-it-scales-4e09</link>
      <guid>https://dev.to/ifehdelight/how-i-structured-my-nextjs-14-app-router-project-and-why-it-scales-4e09</guid>
      <description>&lt;p&gt;Most Next.js tutorials show you how to start a project.&lt;br&gt;
None of them show you how to &lt;em&gt;organize&lt;/em&gt; one that won't fall apart at scale.&lt;/p&gt;

&lt;p&gt;Here's the exact structure I'm using for Softchic — a template &lt;br&gt;
marketplace I'm currently building — and the reasoning behind every folder.&lt;/p&gt;


&lt;h2&gt;
  
  
  The Full Structure
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;src/
├── app/
│   ├── (auth)/
│   │   ├── login/
│   │   │   └── page.tsx
│   │   └── register/
│   │       └── page.tsx
│   ├── (main)/
│   │   ├── browse/
│   │   │   └── page.tsx
│   │   └── templates/
│   │       └── [slug]/
│   │           └── page.tsx
│   ├── layout.tsx
│   ├── page.tsx
│   └── globals.css
├── components/
│   ├── ui/
│   ├── shared/
│   │   ├── Navbar.tsx
│   │   └── Footer.tsx
│   └── sections/
│       ├── Hero.tsx
│       └── BrowseSection.tsx
├── lib/
│   └── utils.ts
├── hooks/
├── types/
└── config/
    └── site.ts
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Why This Structure
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;app/&lt;/code&gt; with Route Groups&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Route groups (folders wrapped in parentheses like &lt;code&gt;(auth)&lt;/code&gt; and &lt;code&gt;(main)&lt;/code&gt;) &lt;br&gt;
let you organize pages without affecting the URL.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;/app/(auth)/login/page.tsx&lt;/code&gt; still resolves to &lt;code&gt;/login&lt;/code&gt; in the browser — &lt;br&gt;
the &lt;code&gt;(auth)&lt;/code&gt; folder is invisible to the router. &lt;br&gt;
This keeps related pages grouped without polluting your URLs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;components/ui/&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is where shadcn/ui drops its components when you run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx shadcn@latest add button
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Never manually edit these — treat them as a local library.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;components/shared/&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Global components used across multiple pages — Navbar, Footer, &lt;br&gt;
modals that appear everywhere. If it's reused on more than two pages, &lt;br&gt;
it lives here.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;components/sections/&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Page-specific sections like &lt;code&gt;Hero.tsx&lt;/code&gt; or &lt;code&gt;BrowseSection.tsx&lt;/code&gt;. &lt;br&gt;
These are too large to live inside a page file but too specific &lt;br&gt;
to be "shared." This folder keeps your &lt;code&gt;page.tsx&lt;/code&gt; files clean.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;lib/utils.ts&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Utility functions — shadcn auto-generates a &lt;code&gt;cn()&lt;/code&gt; helper here for &lt;br&gt;
merging Tailwind classes. Add your own helpers here too.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;hooks/&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Custom React hooks. As your app grows, logic like &lt;code&gt;useCart()&lt;/code&gt;, &lt;br&gt;
&lt;code&gt;useCurrency()&lt;/code&gt;, or &lt;code&gt;useAuth()&lt;/code&gt; belongs here — not inside components.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;types/&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;All your TypeScript interfaces and types in one place. &lt;br&gt;
When your &lt;code&gt;Template&lt;/code&gt; type is used in 6 different files, &lt;br&gt;
you define it once here and import it everywhere.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;config/site.ts&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Site-wide constants — your app name, description, social links, &lt;br&gt;
base URL. One file to update when things change.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;siteConfig&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Softchic&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Premium website templates for developers and businesses.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;url&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;links&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;twitter&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://x.com/ifehdelight&lt;/span&gt;&lt;span class="dl"&gt;"&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;
  
  
  The Rule I Follow
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;If a file is used in more than two places — it gets its own home.&lt;br&gt;
If a component is longer than 150 lines — it gets broken up.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That's it. Simple rules prevent messy codebases.&lt;/p&gt;




&lt;h2&gt;
  
  
  What's Next
&lt;/h2&gt;

&lt;p&gt;This is the foundation Softchic is being built on.&lt;br&gt;
Next post I'm breaking down how Tailwind CSS v4 changes &lt;br&gt;
the way you write styles — and what actually surprised me.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Softchic waitlist drops soon — follow me here on Dev.to &lt;br&gt;
so you don't miss it.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;— Delight | Founder, Softchic&lt;br&gt;&lt;br&gt;
&lt;a href="https://x.com/ifehdelight" rel="noopener noreferrer"&gt;@ifehdelight&lt;/a&gt; on X&lt;/p&gt;

</description>
      <category>nextjs</category>
      <category>webdev</category>
      <category>beginners</category>
      <category>typescript</category>
    </item>
    <item>
      <title>I Started Building a Premium Template Marketplace — Week 1 Progress, Stack &amp; What's Coming</title>
      <dc:creator>Mbanefo Emmanuel Ifechukwu </dc:creator>
      <pubDate>Sat, 27 Jun 2026 21:45:57 +0000</pubDate>
      <link>https://dev.to/ifehdelight/i-started-building-a-premium-template-marketplace-week-1-progress-stack-whats-coming-5ddd</link>
      <guid>https://dev.to/ifehdelight/i-started-building-a-premium-template-marketplace-week-1-progress-stack-whats-coming-5ddd</guid>
      <description>&lt;p&gt;I've been thinking about this problem for a while.&lt;/p&gt;

&lt;p&gt;Developers and businesses need quality websites fast, but the options are either overpriced custom builds, outdated templates, or starting from scratch every single time.&lt;/p&gt;

&lt;p&gt;So I decided to build the solution myself.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Softchic&lt;/strong&gt; is a premium template and ready-made website marketplace, production-ready, built on modern stacks, designed to actually look good.&lt;br&gt;
This is Week 1 of building it in public.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why Softchic
&lt;/h2&gt;

&lt;p&gt;The market exists. Developers need templates. Businesses need websites.&lt;br&gt;
But most template stores are either bloated,&lt;br&gt;
outdated, or built on stacks nobody wants to touch in 2026.&lt;/p&gt;

&lt;p&gt;Softchic is different — every template ships with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Modern stack (Next.js, TypeScript, Tailwind CSS v4)&lt;/li&gt;
&lt;li&gt;Clean, production-ready code&lt;/li&gt;
&lt;li&gt;Premium design out of the box&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The name went through 25+ candidates across multiple languages &lt;br&gt;
before landing here. Clean, available, memorable — Softchic.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Stack
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Framework:&lt;/strong&gt; Next.js 14 (App Router)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Language:&lt;/strong&gt; TypeScript&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Styling:&lt;/strong&gt; Tailwind CSS v4&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Components:&lt;/strong&gt; shadcn/ui&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Payments:&lt;/strong&gt; Lemon Squeezy (international) + Paystack (Nigeria)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Email:&lt;/strong&gt; Resend&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deployment:&lt;/strong&gt; Vercel&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Design language: dark and premium — &lt;code&gt;#0D0D0D&lt;/code&gt; background, &lt;br&gt;
&lt;code&gt;#2563EB&lt;/code&gt; blue, &lt;code&gt;#F97316&lt;/code&gt; orange accents.&lt;/p&gt;




&lt;h2&gt;
  
  
  Week 1 — What Got Built
&lt;/h2&gt;

&lt;p&gt;✅ Waitlist page — designed and ready to deploy&lt;br&gt;&lt;br&gt;
✅ Navbar — responsive, dark-themed&lt;br&gt;&lt;br&gt;
✅ WaitlistForm — wired to Resend for email capture&lt;br&gt;&lt;br&gt;
✅ Brand system — colors, typography, full design identity locked&lt;br&gt;&lt;br&gt;
✅ Payment architecture — Lemon Squeezy + IP-based currency detection &lt;br&gt;
   via ipapi.co with PPP pricing for global fairness  &lt;/p&gt;

&lt;p&gt;The waitlist goes live very soon. &lt;strong&gt;Follow me here on Dev.to&lt;/strong&gt; — &lt;br&gt;
I'll drop the link the moment it's live. Early subscribers get first &lt;br&gt;
access when the store launches.&lt;/p&gt;

&lt;p&gt;The launch goal: &lt;strong&gt;200 waitlist subscribers&lt;/strong&gt; before opening the store.&lt;br&gt;
That's the benchmark. No exceptions.&lt;/p&gt;




&lt;h2&gt;
  
  
  What's Next
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Waitlist page goes live 🚀&lt;/li&gt;
&lt;li&gt;Product listing page&lt;/li&gt;
&lt;li&gt;Template preview system&lt;/li&gt;
&lt;li&gt;First upload — a SaaS landing page template&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  The Real Talk
&lt;/h2&gt;

&lt;p&gt;Building a marketplace from scratch is not a small task.&lt;br&gt;
Every decision — pricing, stack, payment provider, niche — matters.&lt;/p&gt;

&lt;p&gt;But the only way to validate any of it is to ship and let the market respond.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Planned launch: July 18–20, 2026.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Building something yourself? Drop it in the comments — let's connect.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Next post: How I structured the Next.js 14 project and what Tailwind v4 &lt;br&gt;
actually changes about the way you write styles.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The waitlist drops soon — you'll want to be early.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;— Delight | Founder, Softchic&lt;br&gt;&lt;br&gt;
&lt;a href="https://x.com/ifehdelight" rel="noopener noreferrer"&gt;@ifehdelight&lt;/a&gt; on X&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>nextjs</category>
      <category>buildinpublic</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
