What is row-level security and why does it matter?+
Row-level security (RLS) is a PostgreSQL feature that filters query results based on the current user's identity — enforced by the database itself, not the application. In a multi-tenant SaaS this is the difference between "our security depends on every developer remembering to add a WHERE tenant_id = ? clause" and "the database physically refuses to return other tenants' data." For anything handling regulated or customer data, RLS is table stakes.
Is Supabase suitable for a real production SaaS?+
Yes — I run it in production for Conslinq, a live immigration case management platform serving multiple business roles. It gives you managed PostgreSQL, auth, storage, realtime, and edge functions in one platform, so you don't stitch together five services on day one. The typical concern I hear is "can it scale?" — the answer is yes, it's just PostgreSQL under the hood, and PostgreSQL scales to companies bigger than yours will ever be.
Supabase vs Firebase vs building on plain PostgreSQL?+
Supabase gives you PostgreSQL with SQL, foreign keys, and RLS — Firebase gives you NoSQL and eventual regret when you need joins. Plain PostgreSQL (on RDS, Neon, or self-hosted) gives you more control but you'll spend weeks re-implementing what Supabase gives you free: auth, storage, edge functions, realtime. I recommend Supabase for 90% of new SaaS builds and plain PostgreSQL when you need very specific configuration or already have an ops team.
Can you audit or fix my existing Supabase project?+
Yes, and I do this regularly. Common findings: RLS enabled on some tables but not others, policies defined for SELECT but forgotten on INSERT/UPDATE/DELETE, service-role keys accidentally exposed to the browser, tenant claims trusted from client-supplied headers instead of JWT. I'll deliver a written audit with severity ratings, then fix the critical items. Audits start at $1,500 for a typical single-app project.
Do you handle database migrations without downtime?+
For most schema changes yes. Adding columns, adding indexes concurrently, backfilling data in batches — all doable while the app stays live. For breaking changes (renaming columns, changing types) I'll walk you through the multi-step migration pattern that keeps old and new versions running side-by-side until the deploy completes. Standard stuff for production PostgreSQL, but not every developer has done it.
What about vector search for AI features?+
Supabase supports pgvector natively, which means you can store embeddings and do semantic search from the same PostgreSQL database as your app data — no separate vector DB to run. I've shipped this pattern in production (QPDF) and it's the right choice up to millions of embeddings. Beyond that, we move to Pinecone or Qdrant.
Do you work with plain PostgreSQL, not just Supabase?+
Yes. Same modeling, indexing, and security patterns apply to standalone PostgreSQL on RDS, Neon, Railway, Fly, or self-hosted. The auth and edge-function pieces are what change — for non-Supabase setups I typically pair PostgreSQL with Clerk or Auth0 for auth and FastAPI or Next.js API routes for the backend.
How do we get started?+
Reach out through the contact form with a short description of your app and where you are in the build. After a free 30-minute scoping call, you get a written plan and estimate within 24 hours. Most projects start within a week of the first email.