Agentic Engineering Without the Hype: Building Modern Full-Stack Web Apps
In my last post, I wrote about using AI to slow down, building calm, local-first experiments to rediscover the mechanics of web development.
Naturally, the immediate counter-question is: That’s great for personal micro-apps, but what happens when you need to build real, multi-tenant, full-stack software?
The answer isn’t to reject modern tools or run away from agentic software engineering. It’s to reject the hype and the low-standard bloat that often comes with it.
You can use AI agents to build full-scale modern applications using heavy industry standards like React, Next.js, and SvelteKit without losing control of your codebase, without surrendering to bloated markup, and without forgetting the human being on the other end of the screen.
The Reality of Modern Stacks
When building production-ready platforms, I use the stacks that make sense for the job:
-
PasaPuerto: A compliance and onboarding simulator built with SvelteKit (using Svelte 5 runes), Supabase, and Stripe. It helps motor carriers manage fleet driver onboarding and FMCSA English language proficiency requirements. It handles offline practice tests via IndexedDB, dynamic PDF certification, and fleet-wide seat management.
-
Tenure: An academic portfolio SaaS built on Next.js 15 (App Router), React, Tailwind CSS, and Supabase. It handles multi-theme rendering, and rich publishing workflows for academics.
-
Card-Drop: A standalone digital e-business card tool born out of a single feature inside Tenure. I spun it out as its own lean service to create instant, customizable digital cards with vCard downloads and dynamic QR code generation.
None of these are “quaint static HTML pages.” They are real, monetizable, full-stack web applications. But my approach to building them with AI agents is identical to how I build micro-frameworks: I hold the reins, and I inspect the code.
Taming the AI Agent: Keeping Markup Clean and Code Readable
If you give an AI agent free rein over a modern framework, it will default to the lowest common denominator on the web. It will wrap every paragraph in four nested structural elements, inject redundant state variables, and spit out utility-class soup that makes debugging a nightmare.
When I run AI agents on full-stack projects, my main job is active technical supervision. I am constantly keeping the code readable, maintainable, and debuggable:
-
Pruning Component Bloat: AI agents love over-complicating state flow. If a feature can be solved with a simple form action, a URL search param, or a native browser API, I force the agent back into simple territory. I need to be able to read every line of generated code and understand its exact execution path.
-
Eliminating Markup Pollution: Frameworks like Tailwind CSS offer incredible speed, and I use them on projects like Tenure where quick design systems matter. But Tailwind easily leads to terrible DOM structures. I constantly step in to eliminate redundant structural elements, enforce semantic elements over generic divs, and pull overly long utility strings back into clean, organized styling.
-
Preventing Dependency Creep: An AI’s first instinct when facing a moderately complex problem is to install a package for it. I explicitly block agents from pulling in npm packages unless we have exhausted native web capabilities.
Agentic Development for the Real World
There’s a common narrative that AI development is going to replace engineers or turn software engineering into a continuous stream of automated SaaS factories.
I see it differently. AI agents aren’t here to dump low-quality software onto the internet faster. They exist to extend human capability.
When you know how to direct an agentic workflow with strict engineering standards, you don’t just build faster, you can deliver high-grade, accessible software to organizations, small businesses, and mission-driven teams that don’t have the budget for a ten-person engineering department.