shovelbasedocs

Overview

Shovelbase is a hosted backend platform that manages the infrastructure. Your admin account owns an organization, and the organization holds your projects — each a complete stack — Postgres database, Auth, Storage, and Functions — exposed through a REST, Auth, and Storage API your app calls with the shovelbase-js SDK or plain HTTP. Point the SDK at your project's URL and keys and you're running.

A project's base URL is https://<project-ref>.shovelbase.com — the portal proxies each service path to that project's containers. You interact with the platform four ways: the portal UI, the shovelbase CLI, the shovelbase-js SDK inside your app — and your AI client over MCP, which can do everything the portal can.

Your appshovelbase-js / HTTP<ref>.shovelbase.comPostgREST/rest/v1GoTrue/auth/v1storage-api/storage/v1edge-runtime/functions/v1PostgREST, GoTrue, and edge functions all read/write the project's own Postgres; storage-api reads/writes its S3 bucket.

The mental model

If you've built a backend the traditional way — a web server, an ORM, a pile of CRUD endpoints — the thing to unlearn is that most of that middle layer isn't here. Your database schema is the API: create a table and it's immediately queryable over REST, with no route to write. Access control isn't a check at the top of a handler, it's a policy on the table, so it applies to every query automatically instead of every handler remembering it.

What that leaves you writing is the part that's actually specific to your product. Server-side code becomes the exception rather than the default — edge functions for the things a client genuinely can't be trusted with or that need a secret, rather than a function per table.

You need to…UseInstead of
Read and write your own datashovelbase.from('table') in the clientWriting CRUD endpoints
Stop users seeing each other's rowsRLS policiesAuth checks in every handler
Change the schemaA migrationClicking in a console and hoping you remember
Use a secret API keyAn edge functionShipping the key to the client
Do slow work after respondingA queueBlocking the request
Store a fileStorage, with the path in a columnA blob column in Postgres
Let an AI client build and operate the backendIts own MCP endpointPasting SQL out of a chat window

Organizations, projects & sources

An organization can also hold sources — slimmed-down, shared projects (their own database and functions, no Auth/Storage/Websites of their own) that every project in the org automatically reads from and can call functions on. See Organizations, projects & sources for the full model.

OrganizationProject: my-appPostgres · Auth · Storage · FunctionsProject: admin-toolPostgres · Auth · Storage · FunctionsSource: billing-dataPostgres · Functions onlyreads via schemacalls functionsProject: mobile-appPostgres · Auth · Storage · Functions

Where to go next