I started my frontend journey like many developers: writing index.html, linking style.css, and maybe throwing in a script.js if I was feeling fancy.
It was simple. It was predictable. It was home.
Then I decided to learn Next.js.
The Wake-Up Call
I'm an undergraduate at FUTO, and I'm building an offline AI companion called Pantero. The waitlist is growing (187+ now), the offline AI core is stable, and the frontend is complete. But let me tell you—getting there involved a lot of pain.
Coming from plain HTML and CSS, Next.js felt like being handed the controls to a spaceship after only ever riding a bicycle. Suddenly there was file-based routing, Server Components, Client Components, and this mysterious 'use client' directive that I kept forgetting to add until my useState hooks exploded in my face[reference:0].
The Mistakes I Made (So You Don't Have To)
Mistake #1: Treating Next.js Like Plain HTML + React
I thought I could just drop my components anywhere and import react-router-dom like I used to. Wrong. Next.js has its own routing system. If you try to fight it, you'll spend more time debugging than building. I learned that the hard way[reference:1].
Mistake #2: Forgetting That Everything Is a Server Component by Default
In the App Router, every component is a Server Component unless you explicitly say otherwise. I kept trying to use useState and useEffect in components that were running on the server. The error messages were cryptic. The frustration was real[reference:2].
Mistake #3: Ignoring File-Based Routing
I thought, "How hard can routing be? I'll just make components and link them manually." Chaos. Some links worked, some didn't. Dynamic routes became unpredictable. SEO was broken. Once I embraced the /app folder structure, everything clicked[reference:3].
Why I'm Sticking With It
Despite the pain, Next.js is teaching me a better way to build. It's forcing me to think about performance, SEO, and user experience from the start. And for Pantero—where every kilobyte matters on a 3G connection—that's essential.
The Build Goes On
While I'm wrestling with Server Actions and trying to understand caching, Pantero keeps moving forward:
- 🚀 187+ waitlist members
- 🌍 3+ countries (Nigeria, Ghana, Kenya)
- ✅ Offline AI core stable and running entirely in-browser
Join the Waitlist
If you're a developer who's been through this transition (or you're in the middle of it right now), I'd love to hear your story. And if you're curious about what I'm building through all this struggle:
The waitlist is open. The build continues. The pain is real—but so is the progress.
What was your biggest struggle when you first moved from plain HTML/CSS to a real framework? Let's commiserate in the comments.
Top comments (0)