You define your backend. We compile it, instantly.
Define your schemas, security rules, and business logic in TypeScript. Quickback generates a production-ready backend you actually own.
Works with
Security, on by default.
Everything is locked down by default. You declare what's allowed.
Firewall
Every table needs a scope column. Tenant isolation enforced at the database level.
Access
Role-based permissions. Deny by default. Compiled into middleware.
Guards
Field-level protection. Only permitted fields can be written.
Masking
PII redaction in responses. Sensitive data never leaks.
Schema in. Code out. That's it.
We never connect to your database. We never see your data. We operate at the schema level.
SEE IT IN ACTION
Define once. Compile a full API or Supabase RLS policies.
export default defineTable(candidates, {
firewall: { organization: {} },
guards: {
createable: ["name", "email", "phone", "resumeUrl", "source"],
updatable: ["name", "phone", "resumeUrl", "source"],
},
masking: {
email: { roles: ["recruiter", "hiring-manager"] },
phone: { roles: ["recruiter"] },
},
crud: {
list: { access: { roles: ["recruiter", "hiring-manager"] } },
create: { access: { roles: ["recruiter"] } },
update: { access: { roles: ["recruiter", "hiring-manager"] } },
delete: { access: { roles: ["owner"] } },
},
}); -- Generated by Quickback Compiler
CREATE POLICY "candidates_org_isolation" ON "candidates"
FOR ALL USING (
organization_id = auth.jwt() ->> 'org_id'
);
CREATE POLICY "candidates_recruiter_select" ON "candidates"
FOR SELECT USING (
auth.jwt() ->> 'role' IN ('recruiter', 'hiring-manager')
);
CREATE POLICY "candidates_owner_delete" ON "candidates"
FOR DELETE USING (
auth.jwt() ->> 'role' = 'owner'
); AI help is at the ready.
Install the CLI to access everything you need to define your backend.
Compiler CLI
Scaffold, compile, and deploy from the command line. Templates for every stack.
MCP Server
Connect any AI tool to the Quickback compiler. Schema-aware context for every prompt.
Claude Code Skills
AI-assisted backend development. Describe your feature, get a compiled API with security built in.
WHO IT'S FOR
Built for builders at every level
First-Time Builders
Your first backend doesn't have to be a security nightmare. Security is the default.
Learn more →Indie Developers
Ship your SaaS this weekend. Strong opinions, secure defaults, patterns that work.
Learn more →Supabase Users
Love Supabase? Keep it. Quickback compiles your security rules into RLS policies.
Learn more →CISOs & Enterprise
Let teams build. Compile-time governance makes "yes" possible.
Learn more →FAQ
Questions you're already asking
What happens when I need custom logic beyond CRUD?
That's what Actions are for. Define typed business operations - approve an invoice, stream an AI response, process a webhook - with the same security guarantees as your CRUD endpoints. Actions have full access to the database, user context, and any external service. There's no ceiling: if you can write it in TypeScript, you can ship it as an action.
What happens when I recompile? Do I lose my changes?
Recompiling overwrites the generated API code — and that's the point. Your definitions and actions are your source of truth. The generated src/ folder is output, like a build artifact. Change your definitions, recompile, and your entire API updates. Action handler files live in your project and are never overwritten — the compiler wraps them with authentication, access checks, and validation automatically.
How is this different from Supabase?
Quickback isn't competing with Supabase - the Compiler works with it, generating RLS from your definitions so you never write policies by hand. But if you want to own the whole stack, Quickback Stack gives you a complete Supabase-equivalent backend on your own Cloudflare account, and the Account UI gives you a ready-made auth frontend. Same definitions power all three.
Do I need Postgres? What databases are supported?
Quickback supports Cloudflare D1 (SQLite at the edge), Supabase Postgres (cloud or self-hosted), and Neon Postgres (serverless). The same definitions compile to different database targets - choose the one that fits your stack.
Am I locked into Quickback?
No. The output is standard TypeScript - Hono routes, Drizzle ORM, Better Auth. If you stop using Quickback tomorrow, you still have a working codebase built on well-known libraries. There's nothing proprietary in the generated code.
What if different roles need different fields?
Views are named field projections with role-based access control — column-level security. Define which fields each role can see, and the compiler generates a dedicated endpoint at /api/v1/{resource}/views/{viewName}. Views inherit all your security pillars — firewall, access, and masking — so a masked field stays masked even inside a view. Same pagination, filtering, and sorting as your list endpoint, just scoped to the fields you choose.
What is the Account UI?
A production-ready React SPA that plugs directly into your Quickback Stack or any Better Auth backend. Login, signup, passkeys, magic links, email OTP, organization management, role assignments, team creation, invitations, and an admin panel — out of the box. Deploy it as a Cloudflare Worker on your own subdomain. Fully customizable through environment variables.
How do Actions work across recompiles?
Actions are defined in your Quickback schema and the routes are regenerated on every compile — that's how they stay in sync with your security config. But your handler files are yours. They live in your project, the compiler never touches them. It just wraps them with authentication, access checks, input validation, and org scoping automatically. Write the business logic, Quickback handles the rest.
Join the Beta
We're onboarding early adopters now. Get hands-on access, direct support, and help shape the future of backend development.