Build a SaaS backend this weekend
Go from zero to a working backend with auth, data, APIs, and background jobs — without managing infrastructure.
Takes less than 5 minutes to get started.
Start your backend
One command — your backend is running.
npx @centrali-io/create-centrali-app --template saasYou already have a working backend — no setup, no configuration.
Includes a starter schema and ready-to-use API.
Create your first record
Your backend is live — let's prove it.
await centrali.createRecord('users', {
name: 'Jane',
email: 'jane@example.com'
})That's a real record — stored and ready to query.
No schema migrations. No database setup.
The starter template already includes this collection — you can customize it anytime.
Define your data
The starter template gives you a working schema — now make it yours.
await centrali.collections.create({
name: 'Projects',
recordSlug: 'projects',
schemaDiscoveryMode: 'strict',
properties: [
{ name: 'title', type: 'string', required: true },
{ name: 'status', type: 'string', enum: ['active', 'completed'] },
{ name: 'owner', type: 'reference', target: 'users',
relationship: 'many-to-one' }
]
})APIs, search, and validation — generated automatically.
Choose how your schema evolves:
- strict — enforce structure and validation
- schemaless — store anything, no setup
- auto-evolving — your schema grows as your data changes
Start flexible — tighten when you're ready.
Add auth
Centrali works with any auth provider. Here's a quick example using Clerk.
import { CentraliSDK } from '@centrali-io/centrali-sdk'
import { useAuth } from '@clerk/react'
const { getToken } = useAuth()
const centrali = new CentraliSDK({
baseUrl: 'https://centrali.io',
workspaceId: 'my-workspace',
getToken: () => getToken()
})
// Your requests are now authenticated
await centrali.queryRecords('users')Your auth provider handles identity — Centrali handles access. No auth logic to build.
Works with Clerk, Auth0, Okta, Keycloak, Supabase, Firebase Auth, or any JWT provider.
Add background jobs
Run code when things happen — no infrastructure to manage.
// Create a function
const fn = await centrali.functions.create({
name: 'Send Welcome Email',
code: `
async function run() {
const user = triggerParams.record
// send email (your logic here)
api.log('Sending welcome email to:', user.email)
return { sent: true }
}
`
})
// Trigger it when a user is created
await centrali.triggers.create({
name: 'On User Created',
functionId: fn.data.id,
executionType: 'event-driven',
triggerMetadata: {
eventType: 'record_created',
recordSlug: 'users'
}
})Every new user now triggers your code — emails, workflows, anything. No Lambda, no queues, no deploy.
Works with any service — Resend, SendGrid, Stripe, or your own APIs.
Deploy
You're done. Connect your app and ship it.
vercel deployYour app is live — powered by a backend that's already running.
No backend deployment required.
Start your backend in minutes
No credit card. No setup. Just run the CLI and start building.
npx @centrali-io/create-centrali-app --template saasTakes less than 5 minutes to get started.