Devlog: Frontend Suffering
February 1, 2026

Devlog: Frontend Suffering

Devlog

Netgoat Is Hurting My Feelings (Now With Go + React)

Netgoat is one of those projects that sounds clean on a whiteboard and then slowly steals your sanity in real life.

The architecture makes sense: Golang for the agent. React for the frontend. Sharp separation. Strong boundaries. Very "I know what I’m doing" energy.

And yet- here I am- mentally exhausted, staring at a half-designed dashboard, wondering why colors feel like advanced math.

Go for the Agent: The Adult in the Room

Using Go for the agent is the easy part, conceptually.

The agent needs to be: Reliable. Quiet. Efficient. Boring.

Go absolutely nails that. Single binary, low memory, no runtime drama, cross-platform without crying. It’s perfect for something that runs in the background and should never surprise you.

The downside is that Go forces you to think before you type. Coming from years of Next.js where you can iterate at light speed, this feels slow. Not bad- just unforgiving. You don’t hack your way forward in Go. You design, then execute.

Which is great. Unless your brain is tired.

React for the Frontend: Where the Real Pain Lives

React is home turf. I know how to build dashboards. I know state, effects, routing, data fetching, all of it.

The problem isn’t how to build the UI. The problem is what the UI should be.

Dashboards are deceptive. They look like "just charts and tables," but really they’re product decisions disguised as components.

What’s the first thing the user sees? What’s actionable vs informational? What matters right now vs later?

When creativity is flowing, this is fun. When it’s gone, it’s brutal. You can’t Tailwind your way out of not knowing what you’re building.

Responsiveness Is Still a Scam

Yes, I know how responsive design works. No, that doesn’t make it pleasant.

Dashboards hate small screens. Sidebars want space. Tables refuse to cooperate. Charts lie when they get squished. You fix desktop and mobile explodes. You fix mobile and tablet does something illegal.

The only thing that kind of works is mobile-first design, even when the product is clearly desktop-first. It forces you to prioritize, and prioritization is the real boss fight here.

Colors Are a Tax on Your Soul

Colors shouldn’t block progress. And yet they do.

Every choice ripples: Accent affects buttons. Buttons affect hierarchy. Hierarchy affects usability. Usability affects whether the whole thing feels "real."

I haven’t touched the design system or agent UI in months, and it shows. Decision fatigue hits fast when you lose your visual baseline. You start overthinking neutrals. That’s how you know you’re tired.

The Agent/UI Boundary Is the Only Thing Saving Me

The one thing keeping this project sane is the hard line between agent and frontend.

The agent doesn’t know about dashboards. It doesn’t care about charts. It just exposes clean, boring, structured data and commands.

React does the storytelling. React reshapes, aggregates, and visualizes. That boundary means I can hate CSS today without breaking the agent. It also means I can redesign the UI three times without touching Go.

That separation isn’t just technical- it’s psychological.

The Real Issue Isn’t the Stack

Netgoat isn’t hard because of Go. It isn’t hard because of React. It’s hard because it’s a real system, not a demo.

Real systems force you to make decisions when you’re uninspired. They punish vague thinking. They expose every shortcut you took months ago.

And yeah, that sucks. But it also means the project matters.

The agent will keep doing its job. The frontend will eventually look right. The dashboard will solidify once the purpose does.

Until then, I’m shipping small, thinking slower, and accepting that "boring and correct" beats "clever and unfinished."

Comments (0)

No comments yet. Be the first to share your thoughts!