Skip to content

Pulsabase

Declare your data. Pulsabase does the rest.

You define your data model, your security rules, and your business logic — Pulsabase handles the database, the API, the real-time layer, the auth, the storage, and the deployments. The only thing left to build is your frontend.

Database

Full PostgreSQL — queries, relations, aggregations, full-text search, PostGIS, pgvector. Accessed through a type-safe DSL, never raw HTTP.

Authentication

Built-in OIDC/OAuth2 Identity Provider. Email/password, OAuth, MFA, and JWT claims automatically injected into every database session for RLS.

Real-Time

Declare publication: true on any model and every insert, update, delete is pushed to subscribers via WebSocket. Custom pub/sub channels included.

Storage

S3-compatible file storage with ACL policies, presigned uploads, and folder hierarchy. Deny-by-default — access is earned, not granted.

Edge Functions

Server-side logic declared as step sequences — database queries, HTTP calls, conditions, loops, email sends, webhooks. No JavaScript runtime, no cold starts.

Schema Sync

Declare your schema in TypeScript. Run pulsabase db:sync and your PostgreSQL schema is created or migrated — indexes, constraints, RLS policies included.

Analytics & Audit

Every query, every auth event, every edge function execution is recorded. Crash analytics, performance metrics, and audit logs — no setup required.

Multi-Platform SDKs

Type-safe SDKs for TypeScript and Dart. One mental model across web, mobile, and server. M2M access via the JSON DSL directly.

Hosting

Deploy static frontends directly with pulsabase deploy. Instant rollbacks, custom domains, SPA routing out of the box.

This is the entire backend for a real-time chat message — schema, API, auth, real-time and security included.

// models/Message.ts — this is all you write
import { primary, text, foreignId, ModelSchema } from 'pulsabase';
export default class Message {
@primary
id: string;
@foreignId({ references: 'id', on: 'rooms', onDelete: 'CASCADE' })
room_id: string;
@foreignId({ references: 'id', on: 'users', onDelete: 'CASCADE' })
sender_id: string;
@text(false)
content: string;
static schema: ModelSchema = {
tableName: 'messages',
publication: true, // real-time subscriptions on every mutation
timestamps: true, // created_at, updated_at managed automatically
policies: [
{ action: ['SELECT'], role: 'authenticated' },
{ action: ['INSERT'], role: 'authenticated' },
],
};
}
Terminal window
pulsabase db:sync # creates the table, indexes, FK constraints and RLS policies

The SDK does the rest — query, subscribe, insert — fully typed against your model.

SaaS

Create your project on pulsabase.com, configure it from the dashboard, connect your SDK. No infrastructure to manage.

On-Premise

Deploy on your own servers with Docker. Your data never leaves your infrastructure. Available for enterprise.