Moving Out? Nope. Rebuilding From Scratch
2025-04-01
Mid-course Check-in
Turns out, my blog was in a bigger mess than I thought. What I assumed would be a simple project—just switching the current HTML-based frontend over to Next.js—wasn’t simple at all. Not even close.
RESTful API
I first asked Cursor to handle the refactoring, since it’s known for being decent at it. But the modular structure of my project seemed to be too much for it to handle. I asked it to fix an endpoint, and it ended up fiddling with completely unrelated code. At that point, I figured it’d be faster to just do it myself.

While going through all this, I had another realization: FastAPI comes with Swagger by default, but I’d been testing all my features manually using HTML templates—clicking buttons and watching what happens like a caveman. That worked fine when I was only using GET and POST. But now that I’m using proper methods like DELETE and PATCH, I hit a wall:
HTML doesn't support those methods.
So what’s the workaround?
What do you think... Swagger it is.
I paid /docs a visit for the first time in forever and started testing each endpoint manually. That’s when I noticed another issue: the /docs endpoint on the live production site—cliche.life—had no access restrictions whatsoever.
A gaping security hole, just chilling out in the open. So yeah, that got locked down real quick.
Next.js
At first, I wanted to do a gradual migration—one page at a time. But given how HTML doesn’t even support basic RESTful methods, I realized that if I wanted to get this to production, I’d be better off just fully switching over to Next.js and deploying the whole thing anew. So I brought Cursor back in to help with the frontend.
And… the result? Not great.
UI/UX-wise, it wasn’t even clear if it was an upgrade at all. Might as well have stuck with my crusty old HTML.
So I tried Windsurf instead.
Courtesy of Cursor
Surprisingly, Windsurf was much better at understanding the overall context. Compared to Cursor, it clearly had the upper hand in frontend design.
But when it came to actually connecting the frontend to my existing FastAPI backend? Total disaster.
So once again, Cursor had to step in to patch things up.
Windsurf’s masterpiece
This had me scratching my head a bit, so I looked into it. Turns out, both tools were using Claude’s Sonnet 3.7 under the hood—but the way they use it seems completely different.
Probably due to different prompt engineering strategies or how they train their models.
Windsurf prompt from a thread. Humans really are savage.
Conclusion
There were a few known bugs floating around in the code—not urgent, but annoying. As I kept digging, I realized this wasn't just about slapping on a prettier skin. I need this thing to actually work—today, tomorrow, and months down the line.
The frontend migration is more or less done, but while rewriting parts of the code manually, I found a lot more problems under the hood than I expected. Even if I use AI to help build the UI, the real cost comes later—when I have to maintain it all by myself.
So now, I’m taking a step back. Gonna brush up on some basic Next.js, fix those hidden tech debts, and then deploy when I’m confident it won’t explode the next time I breathe near it.
Right now, I’m also juggling coding test prep + algorithms, so my original “I’ll be done in 1-2 weeks!” plan? Yeah… not happening. This is gonna take more time.
But it’s better to do it right once than fix it 10 times later.
💬 Quote of the Day
Life pro tipIf you’re not building a proper frontend, and you’re stuck with HTML…
Then RESTful can go REST in peace.
– A blog developer’s cry of despair
Kakao
Google
Naver