Static site, SPA, SSR or full-stack? What you actually built
You described an app, an AI wrote it, and it works. Then a hosting page asks whether it is "static", a "SPA", "SSR" or "full-stack" — four words nobody made you learn. Here is what they mean, how to tell which one you have, and why none of them is where your data lives.
The short version. These four words describe one thing only: what your project produces when it builds, and therefore what has to be running for people to use it. They say nothing about how good your app is or how complex it is. And with Staticbot they do not change what you pay — every type counts the same against your plan. You mostly do not need to know the answer, because Staticbot reads the repository and works it out. This page is for when you want to know anyway.
The four types, in the order they get more involved
1. Static website
The build produces a folder of finished files — HTML, CSS, images, a bit of JavaScript. Every visitor gets the same files. Nothing is computed when someone visits; the work already happened when you built it.
Typical: a landing page, docs, a marketing site, a portfolio. Built with plain HTML, Astro, Hugo or 11ty.
2. Single-page app (SPA)
most likely youThis is where the naming gets confusing, so read this one twice. A single-page app is a real application — logins, dashboards, forms, live data. But it still builds to a folder of files, exactly like a static website. The difference is what those files do once they reach the browser: they boot up an app, which then fetches your data over the network.
So "static hosting" is not a limitation here. A SPA can have accounts, permissions, payments and a database and still be hosted as static files. The word "static" describes the delivery, not the ambition.
Typical: most things people build with Lovable, Base44, ChatGPT or Claude. React, Vue, Svelte or Angular, usually built with Vite.
3. Server-rendered app (SSR)
SSR stands for server-side rendering. Instead of sending an empty page that fills itself in, a server builds the finished page for each visitor, then sends it. That means something has to be running to answer requests — you cannot just drop a folder on a CDN.
It is worth having when the first paint needs to be fast, when search engines must reliably read your content, or when some logic has to run where the visitor cannot see it. It is usually not worth it for a dashboard or an internal tool behind a login.
Typical: TanStack Start, Nuxt, SolidStart, Astro with the Cloudflare adapter. Lovable made TanStack Start its default in May 2026, so newer Lovable projects are often this; older ones are usually single-page apps.
4. Full-stack app
A server-rendered app that also runs your own server-side code — API routes, server functions, work that must happen somewhere private. It is the same hosting shape as SSR, with more of your logic living on the server.
Where your data lives — and why it is not on this list
"Full-stack" does not mean Staticbot hosts your database. It does not.
Staticbot hosts the website or app — the part people load in a browser. Your database, your user accounts, your uploaded files and your edge functions live in a Supabase project that you own and pay Supabase for directly. When we say an app is full-stack, we mean it can run server-side code on the server we deploy for it. We are not running a database for you.
That split is on purpose, and it is the whole reason Staticbot exists. Your data sits in an account with your name on it. If you stop using us tomorrow, the database does not move, does not need exporting, and is not ours to hold. There is nothing to be locked into.
A "static" app can absolutely have a backend
This trips people up constantly, so plainly: you do not need server-side rendering to have a real backend. The usual setup for a single-page app is that the app talks to your Supabase project straight from the browser — protected by row-level security, so users only ever see the rows they are allowed to — and calls Supabase edge functions for anything that has to run server-side, like charging a card or calling an API with a secret key.
That gets you, with no SSR at all:
Supabase edge functions are deployed on every Staticbot plan, including the free one.
How to tell which one you have
The honest answer: you do not need to. Point Staticbot at the repository and it reads the project to work it out, then deploys to whichever target fits — a global CDN for files, or a server at the edge for anything that needs to run. You are told what it found before anything is created.
If you want to check yourself, open package.json and look at the dependencies. Seeing vite with React or Vue, and no framework beyond that, means a single-page app. Seeing @tanstack/react-start, nuxt, or solid-start means server-rendered. No framework at all, just HTML files, means a static website.
What this means for what you pay
Nothing, which is the point. Staticbot's plans count how many websites or apps you run, not what kind they are. A static landing page, a single-page dashboard and a server-rendered storefront each count as one. One is free, two is Hosting Pro, up to ten is Hosting Scale.
