Database
Full PostgreSQL — queries, relations, aggregations, full-text search, PostGIS, pgvector. Accessed through a type-safe DSL, never raw HTTP.
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 writeimport { 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' }, ], };}pulsabase db:sync # creates the table, indexes, FK constraints and RLS policiesThe 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.
What is Pulsabase?
Quickstart
Models & Schema
Authentication
Real-Time
API Reference