Every indie project starts with the same question: where does the data live? For a real product, the answer is a database. For an MVP you're trying to ship this weekend, that question can eat an entire evening — picking a provider, defining a schema, writing an ORM layer, wiring up auth for the DB itself. Google Sheets is a shortcut around all of that, and it's a better one than it sounds.
Why a spreadsheet works as a backend
A spreadsheet is already a table. Rows are records, columns are fields, and everyone on your team already knows how to read and edit it — including non-technical cofounders, without asking you to build an admin panel. Wrap it in a REST API and you get exactly what a small MVP usually needs:
- A place to collect waitlist signups, feedback, or contact form submissions
- A data store your whole team can view and edit without a dashboard
- Zero migrations — add a column, and it's a new field
- Nothing to provision, back up, or pay a database bill for
Where it breaks down
Sheets is not a database engine, and it's worth being honest about where that shows up:
- Concurrent writes. Google Sheets isn't built for high write concurrency. If you have dozens of requests hitting the same sheet per second, you'll feel it.
- Row count. Sheets performance degrades as a single sheet grows into the tens of thousands of rows. Fine for a waitlist. Not fine for an events table logging every user action.
- Query complexity. There's no real query language — no joins, no aggregations beyond what you compute client-side.
What this looks like with SheetSandbox
SheetSandbox connects to a sheet you already own via a Google service account and exposes it as a bearer-token-authenticated REST API — no server to run. A GET request looks like this:
curl https://api.sheetsandbox.com/api/Waitlist \ -H "Authorization: Bearer YOUR_TOKEN"
And a write is a POST with a JSON body matching your sheet's column headers. That's the whole integration — no schema to define ahead of time, because the schema is just your header row.
The honest takeaway
Sheets-as-a-database is a tool for the first phase of a product, not the last. Use it to validate an idea, collect early signups, or run a lightweight internal tool — then migrate to Postgres or whatever you need once you have the traffic that justifies it. The nice part: since your data already lives in a plain spreadsheet with no vendor lock-in, that migration is a CSV export away.