Skip to content
Built by ScaleDock

Ship a CRM, helpdesk or ERP on Supabase with 184 blocks of SQL you own, over your own tables, and a typed client on top.

Pick a preset, or add one block over a table you already have. Each block renders tables, policies and functions into your repository, and the CLI types them for you.

How it works

Your tables, a few tags, SQL from blocks, a typed client

Nothing sits between you and the database. Every step produces files you can read, and each one works without the others.

Presets

Start from a product, not an empty schema

A preset is a named set of blocks with the conventions they share. It installs what it needs and what those require, and you change it afterwards like any other config.

Products 19

Verticals 24

Blocks

Every feature is a block of SQL you own

184 blocks in 16 categories: tables, policies, functions and a typed client for each. They install into your schema, so you read and change them like the rest of your code.

Adopt it gradually

Use it on the app you already have, one rung at a time

Every rung is optional, independent and reversible, and doctor reports the rung of each table. Stop on any step.

Before and after

The parts every product shares, written once

The work that is yours stays yours: your tables, your product rules and your screens.

Recipes

Build the UI from your own components

Each recipe pairs a block with shadcn components on the web, and with React Native where it fits a phone, copied from example apps that typecheck and run.

The typed layer

The glue code every Supabase app rewrites, done once

Under the blocks sits the library: generated types, a typed repository, auth wiring, cache invalidation and adapters for your framework.

For coding agents

The same CLI, safe to hand to an agent

Agents read the catalog, run doctor and write migrations through the commands you use. Anything that writes files or touches data waits for the user's consent.

Frameworks

Works where your code runs

Adapters build a per-request client for the caller, so the same repository API works in pages, routes, procedures and functions. Runtime entries import no Node built-ins, so they run on every WinterTC runtime.

Get started

From install to typed queries in four steps

  1. 01Installpnpm add better-supabase @supabase/supabase-js
  2. 02Initbetter-supabase init writes the config, the client and framework glue.
  3. 03Generatebetter-supabase gen reads your local stack and writes typed models.
  4. 04Queryconnect() per request with the user’s client, so RLS always applies.

FAQ

Questions

Start from a product and keep the SQL

Pick a preset, or add one block over a table you have. Keep supabase-js for everything else.