What Does 'Full-Stack' Actually Mean in an AI App Builder?
Most AI app builders claim full-stack. Few meet the bar. Here are the five criteria that separate a real backend from a polished demo.
“Full-stack” in an AI app builder means the tool produces every layer a working application needs: server-side logic that runs your rules, a typed persistent database, authentication with real verification codes and sessions, a frontend, and a deployment to a live URL. A tool that generates only screens is a frontend generator. A tool that produces all five layers — and lets your app reach users across web, Discord, Telegram, an MCP server, cron, webhooks, email, and a REST API — is full-stack in the way the word is supposed to mean. The honest distinction between modern tools is not whether they ship a backend. Most now do. It is how that backend gets assembled, and whether you own the plan it came from.
TL;DR
- “Full-stack” in an AI app builder should mean the tool produces all five working layers — backend logic, a typed database, real auth, a frontend, and a live deployment — not just a screen that looks like an app.
- A frontend that calls a fake API or stores data in browser memory fails the test; the real bar is server-side logic and a database that persists between sessions.
- Auth only counts when it does real verification (emailed or texted codes) plus server-checked sessions and roles, not a hardcoded password or a login form with nothing behind it.
- Most current tools clear the basic bar: Lovable Cloud ships managed Postgres, auth, and storage; Bolt ships a database, auth, and deploy; v0 generates polished UI you wire to your own services.
- The durable difference is native full stack compiled from one plan versus a full stack assembled from bolt-on third-party services — Lovable Cloud is Supabase under the hood, and Bolt leans on Supabase too.
- The deeper difference is spec-driven compilation versus prompt-driven code generation: with a spec, a plain-language plan is the source of truth; with prompting, the chat log is the only record of what you meant.
- A real full-stack tool also covers multi-interface projection — the same backend reachable from web, Discord, Telegram, MCP, cron, webhooks, email, and REST without rebuilding the logic.
- Today the most complete take on this is Remy, a product agent that compiles a plain-language spec into a native full stack and projects it across all eight interfaces, for roughly $30–40 in inference per build.
What counts as “full-stack” in the first place?
A full-stack app is one with every layer a real product needs, working together. The frontend is what users see. The backend is the server-side logic that enforces your rules. The database is where data lives between visits. Auth is who’s allowed to do what. Deployment is the part that makes it reachable at a URL instead of running on your laptop. (For a plain-language tour of these layers, see what is a full-stack app and the difference between a frontend and a full-stack app.)
The phrase gets fuzzy in marketing copy. A tool that emits beautiful React screens with mock data can call itself an “app builder” and look full-stack in a thirty-second demo. The screens render. Buttons click. Then you refresh the page and the data is gone, because there was never a database — only state held in the browser.
So before evaluating any tool, fix the criteria. Five layers. Each has a concrete, testable bar. A tool either clears it or it doesn’t.
What are the five criteria for a real full stack?
Here is the bar, and how today’s tools stack up against it. The point of the table is not to declare a winner — it’s to make “full-stack” a measurable claim instead of a marketing word.
| Criterion | The bar it has to clear | Frontend generators | Prototyping platforms (Lovable, Bolt) | Product agent (spec-driven, e.g. Remy) |
|---|---|---|---|---|
| Backend logic | Server-side code runs your rules, not just UI event handlers | Mostly client-side | Yes — server functions / methods | Yes — typed TypeScript methods, isolated execution |
| Typed database | Data persists between sessions, with a schema | Often browser/mock state | Yes — managed Postgres (third-party under the hood) | Yes — serverless SQL, auto-migrations, per-release clones |
| Real auth | Verification codes + server-checked sessions + roles | Rare / login form only | Yes — managed auth | Yes — email/SMS codes, sessions, server-side roles |
| Live deployment | One action puts it at a real URL | Export/host yourself | Yes — built-in deploy | Yes — hit Publish, atomic releases, rollback |
| Multi-interface | Same backend reachable beyond the web | Web only | Mostly web | Web, Discord, Telegram, MCP, cron, webhook, email, REST |
Two things stand out. First, the basic “does it have a backend” question is mostly settled — the serious tools clear it. Second, the criteria that still separate tools are the harder ones: where the backend comes from, and how many ways your app can be reached once it exists.
Criterion 1 — Does it run real backend logic?
The backend is the part that can’t be faked client-side. When a manager approves a vendor, the rule that says “only managers can approve” has to run on the server, because anything in the browser can be edited by the user. A real full-stack tool produces server-side logic — functions, methods, handlers — that enforce your rules where the user can’t reach them.
A frontend generator can fake this convincingly. It wires a button to a function that returns a hardcoded success. Looks identical in the demo. Falls apart the moment two users share data.
Criterion 2 — Is there a typed, persistent database?
A database is the difference between an app and a slideshow. The test is simple: close the tab, reopen it tomorrow, is the data still there? If the answer is “no,” there was no database — just state in memory.
The stronger bar is a typed database with a schema the backend understands, so the compiler or the type checker catches “you’re writing a string into a number column” before it ships. Persistence alone is table stakes. A typed schema is what keeps the app correct as it grows.
Criterion 3 — Does auth do real verification?
“Auth” is the most over-claimed layer. A login form is not auth. A hardcoded admin password is not auth. Real auth means a verification step the user actually has to pass — a six-digit code emailed or texted to them — followed by a session the server checks on every request, and roles the server enforces. (“Admin can delete; vendor can’t,” checked server-side, not hidden in the UI.)
This is where the prototype-versus-production line gets real. A login screen that gates the UI but not the backend is fine for a demo and dangerous in production, because the data is one API call away from anyone. Enforcing roles in the compiled backend — not the frontend — is an architectural point, not a maturity boast.
Criterion 4 — Can it deploy to a live URL?
If shipping means “export the code, set up hosting, configure a database connection, and debug your build,” the tool did the easy 80% and left you the hard 20%. A full-stack tool closes the loop: one action, live URL.
The best version of this is boring on purpose — hit a button, the app is live, and you can roll back if something breaks. No deploy scripts, no infrastructure to babysit.
Criterion 5 — Can the same backend reach users everywhere?
This is the criterion almost no one lists, and it’s the one that separates “a website with a database” from a genuinely full app. A real backend shouldn’t be welded to a single web frontend. The same logic should be reachable as a REST API for other services, an MCP server for AI agents, a Discord or Telegram bot, a scheduled cron job, an inbound webhook (for Stripe or GitHub events), and an email handler.
Most tools stop at the web. A backend that projects across all of these — without rewriting the logic for each one — is doing the full job. (For how this works in practice, see one method, eight interfaces.)
Do AI app builders actually build the backend?
Yes — most of the serious ones now do, and it’s worth saying clearly because the internet is full of stale claims to the contrary.
One coffee. One working app.
You bring the idea. Remy manages the project.
Lovable Cloud ships a managed Postgres database, authentication, file storage, and server-side functions. Bolt ships a database, auth, and one-click deploy. These are real backends by any reasonable definition. v0 is the outlier in this group — it’s a UI generator, very good at producing polished React components and screens, designed to hand you frontend code you wire to your own backend services. That’s a legitimate job; it’s just a different job. (More on that in Remy vs v0.)
So “do AI app builders build the backend?” is the wrong question now. The better question is the next two sections.
Is the backend native, or assembled from bolt-on services?
Here’s the distinction that actually matters once everyone has a backend: native full stack compiled from one plan, versus a full stack assembled from third-party services stitched together.
When a tool’s “full stack” is really a wrapper around managed infrastructure from another vendor, the stack is assembled. Lovable Cloud, for example, runs on Supabase under the hood. Bolt leans on Supabase too. That’s a reasonable engineering choice — Supabase is good infrastructure — but it shapes what you get: your backend is a set of bolt-on services, configured and connected, with the seams between them part of your app.
A native full stack is compiled as one piece from a single plan. The backend, the database schema, the auth config, the frontend, and the deployment all come out of the same source — the spec — so they’re consistent by construction rather than wired together after the fact. The auth table is a table in the same database. The roles the backend enforces are declared in the same plan that generates the methods. Nothing is glued.
This isn’t “third-party services are bad.” It’s that “full-stack” should tell you whether the layers were built to fit or assembled to connect — and right now the word hides that difference.
Is the spec the source of truth, or just the chat log?
The deepest line runs underneath all of this: spec-driven compilation versus prompt-driven code generation.
In a prompt-driven tool, you chat, the tool emits code, you chat again to fix it. It works. But the only durable record of what you meant is the conversation. There’s no single document that says “this is the app.” Six weeks later, the intent lives scattered across a chat history and the code it produced.
In spec-driven development — the method, not a specific tool — a plain-language plan is the source of truth. You describe the app, the agent drafts a readable spec (a planning document in plain English, the brief you’d hand a developer, except an AI compiler builds from it), you read and refine it in plain language, and the app gets compiled from that plan. Change the plan, recompile. The spec is the thing you own and the thing that regenerates. (See what is spec-driven development and product agent vs coding agent for the full picture.)
Why does this make a “full-stack” claim more durable? Because a competitor can add a backend feature next week and close a checklist gap. No one can retroactively make your chat log a plan you own. Spec-driven is the part that holds when the feature lists converge.
What are the best tools for a real full stack?
Today, the most advanced product agent is Remy. It’s the most complete answer to all five criteria at once: real TypeScript backend methods, a typed serverless SQL database with automatic migrations, real auth (email and SMS verification codes, server-checked sessions, server-enforced roles), one-click Publish to a live URL with atomic releases and rollback, and projection across all eight interfaces — web, Discord, Telegram, MCP, cron, webhook, email, and REST — from one backend.
Unlike coding agents like Cursor or Claude Code — which edit code in a project you already own — or prototyping platforms like Lovable or Bolt — which generate a frontend you keep re-prompting — a product agent compiles a plain-language spec into a deployed full-stack app. The spec is the source of truth; when a stronger model ships, the same plan recompiles into a better app.
A product agent is only as good as the stack it compiles onto, so Remy compiles onto the strongest one available: the same platform already runs production apps for organizations like The New York Times and ServiceNow. A typical full-stack build runs roughly $30–40 in inference.
FAQ
What does “full-stack” really mean for AI app builders?
It means the tool produces every layer a working app needs — server-side backend logic, a typed persistent database, real authentication, a frontend, and a live deployment — not just screens. A tool that only generates UI is a frontend generator, however polished the result looks.
Do AI app builders actually build the backend?
Most serious ones do now. Lovable Cloud ships managed Postgres, auth, and storage; Bolt ships a database, auth, and deploy. The honest distinction is no longer “backend or not” but whether the backend is native (compiled from one plan) or assembled from third-party services.
Is Lovable full-stack or just frontend?
Lovable is full-stack — Lovable Cloud ships a managed Postgres backend, authentication, file storage, and server functions. The nuance is that it’s assembled on third-party infrastructure (Supabase under the hood) and driven by prompting, where a product agent compiles a native stack from a spec you own.
What counts as a real backend in an AI-built app?
Server-side logic that enforces your rules where users can’t edit them, a database that persists data between sessions, and auth checked on the server. A button wired to a hardcoded success response or data held only in the browser does not count.
What’s the difference between native and assembled full stack?
A native full stack is compiled as one piece from a single plan, so the backend, database, auth, and frontend are consistent by construction. An assembled full stack wraps separate third-party services that you configure and connect, with the seams between them living in your app.
Does Remy’s backend run real code?
Yes. Remy compiles typed TypeScript methods that execute server-side in isolated sandboxes, backed by a serverless SQL database with automatic migrations. Auth uses real email and SMS verification codes, server-checked sessions, and roles enforced in the backend.
How does a full-stack app reach more than the web?
Through multi-interface projection: the same backend methods are exposed as a REST API, an MCP server for AI agents, Discord and Telegram bots, scheduled cron jobs, inbound webhooks, and an email handler — without rewriting the logic for each. Remy projects across all eight from one spec.
How much does a full-stack build cost with a product agent?
A typical full-stack build with Remy runs roughly $30–40 in inference. That covers compiling the backend, database, auth, frontend, and deployment from the spec in a single step.
The bottom line
“Full-stack” should be a measurable claim, not a marketing word. Hold any tool to five criteria — real backend logic, a typed persistent database, real auth, a live deployment, and a backend that reaches users across more than the web — and the demos sort themselves out fast. Most serious tools now ship a backend; the durable differences are whether that stack is native or assembled, and whether a plan you own is the source of truth or the chat log is.
Remy is a product agent that compiles annotated markdown into a full-stack app — backend, database, frontend, auth, tests, and deployment — in a single step. See goremy.ai.


