Get Started
Start HereBlogGuidesResourcesPricingFAQAbout Get Started
🗄️ Supabase Introduction

What Is Supabase? Your Database Without the Complexity

A plain-English intro to Supabase — what it is, why it's the database of choice for modern builders, and how it connects to the rest of your stack.

When I started building SendJob, I knew I needed a place to store data. Jobs. Customers. Technician assignments. Payment status. Message logs. But I didn’t want to manage a server, configure a database from scratch, or spend three days reading infrastructure documentation.

Supabase solved that problem. And once I understood what it actually was — not just “a database” but a full data platform — it became the backbone of everything I built.

This article is for two audiences. If you’re a business owner trying to understand why your developer keeps talking about Supabase, I’ll give you the plain-English version. If you’re a builder just getting started, I’ll give you the technical picture and where it fits.


What Supabase Actually Is

Supabase is an open-source Firebase alternative built on top of PostgreSQL. That sentence has a lot of words in it, so let me unpack it.

For business owners: Supabase is the place your application stores all of its data — your customers, your jobs, your payments, your messages, everything. It gives you a clean web dashboard where you can see that data, search it, and manage it without writing a line of code. Think of it as a very powerful, structured version of a spreadsheet that your automation tools can read from and write to at any time.

For builders: Supabase is PostgreSQL with a suite of developer tools built around it. You get a REST API and GraphQL API auto-generated from your schema the moment you create a table. You get real-time subscriptions so connected clients can listen for database changes. You get built-in authentication with social login and email/password. You get file storage. You get edge functions for serverless logic. All of it hosted, managed, and available through a clean dashboard and CLI.

The open-source part matters for one reason: you’re not locked in. You can self-host Supabase if you want to. You can export your data. The underlying database is plain PostgreSQL, which means standard tools and standard SQL — nothing proprietary.


Why PostgreSQL Matters

You’ll see PostgreSQL come up constantly in this stack, and it’s worth knowing why it’s the default choice for serious builders.

PostgreSQL has been in active development since 1996. It is the most reliable, most feature-complete, most battle-tested open-source database in the world. It handles complex queries, enforces data integrity, supports advanced data types, and scales to enormous sizes when you need it to.

Before Supabase, getting PostgreSQL meant provisioning a server, installing the database, managing backups, handling upgrades, and dealing with connection pooling. It was a real infrastructure job. Supabase takes all of that off your plate and hands you a production-grade PostgreSQL database with a few clicks.

You get the full power of PostgreSQL — every function, every query type, every extension — without managing a single server.


Why You Need a Database at All

This is the question I should have asked more seriously early on, before I tried to run a business on spreadsheets and form responses.

Without a database, your data is scattered. A form submission lands in a Google Sheet. A payment confirmation goes to your email. A job status update lives in someone’s head or a Slack message. None of those systems talk to each other. You can’t reliably query them, relate them, or automate against them.

Here’s a concrete example from SendJob. When a technician marks a job as “enroute” in the field, the system needs to:

  1. Know that the job exists and who the customer is
  2. Know the customer’s phone number
  3. Know the job address so it can calculate an ETA
  4. Fire an SMS to the customer with that ETA
  5. Log that the message was sent

That’s five things that need to happen instantly, automatically, and correctly every time. If your job data is in a spreadsheet and your customer data is in another spreadsheet and your message log is in yet another tool, this chain breaks constantly. There’s no single source of truth. There’s no reliable way to trigger the right action based on the current state of the job.

With Supabase, all of that data lives in one place. Every automation reads from it and writes to it. The job record is the truth. When it changes, things happen.


Where Supabase Fits in the Stack

Supabase is the data layer. Everything else in the stack reads from it and writes to it.

Here’s how I think about the roles:

  • Supabase — stores the data, enforces the rules, holds the source of truth
  • n8n — orchestrates workflows, reads from Supabase, tells other services what to do
  • Twilio — delivers SMS messages when n8n tells it to
  • Resend — delivers emails when n8n tells it to
  • Stripe — processes payments and fires events back into the system

Every one of those services is stateless without Supabase. Twilio doesn’t know your customers. n8n doesn’t know what jobs exist. Resend doesn’t know who to email. Supabase is the thing that makes the whole system coherent.


How Supabase Talks to the Rest of the Stack

n8n to Supabase: n8n has a native Supabase node. You connect it once with your project URL and service role key, and then you can query, insert, update, or delete records from any workflow. You can also skip the node entirely and hit the auto-generated REST API directly using n8n’s HTTP Request node — useful when you need more control.

Twilio to Supabase: When Twilio delivers an SMS (or fails to), it fires a status webhook. That webhook hits an n8n workflow, which parses the delivery status and updates the corresponding record in Supabase. You end up with a complete delivery log on every notification you send.

Resend to Supabase: Before n8n calls Resend to send an email, it first queries Supabase to get the customer’s email address, name, and any other personalization data. Supabase provides the data. Resend delivers the message.

Stripe to Supabase: When a subscription is created, upgraded, cancelled, or payment fails, Stripe fires a webhook. n8n receives that webhook and updates the relevant subscription record in Supabase. Your app always knows the current subscription state because Supabase is kept in sync with Stripe events.

The pattern is consistent: Supabase holds the data, other services act on it or update it.


Supabase vs the Alternatives

I’ll be honest with you here, because the right tool depends on what you’re actually building.

Firebase (Google): Firebase is Google’s Backend-as-a-Service platform. It uses a NoSQL document database called Firestore. Firebase is genuinely easier to get started with for simple apps where you’re just reading and writing documents. The trade-offs: it’s NoSQL (no SQL queries, no joins, no relational data), it can get expensive at scale due to per-read pricing, and you’re deeply locked into Google’s ecosystem. For anything with relational data — like a system where jobs belong to customers who have addresses and technicians are assigned to jobs — PostgreSQL/Supabase is a much better fit.

PlanetScale: MySQL-based serverless database. Great at massive scale. Strong developer experience. But no foreign keys by default (they use application-level referential integrity), and it’s MySQL rather than PostgreSQL — fewer advanced features. A good choice for huge teams and very high traffic. Overkill for most early-stage builds.

Railway/Neon/Render PostgreSQL: These are raw PostgreSQL hosting options. They give you a PostgreSQL database without Supabase’s extras — no auto-generated API, no auth system, no storage, no realtime. Fine if you’re building a fully custom backend and don’t need those extras. More setup work for the same database underneath.

MongoDB Atlas: Document database. Different paradigm from relational databases. Great for unstructured or highly variable data. But if your data is relational (and most business data is), MongoDB makes simple queries unnecessarily complicated.

My take: if your data has relationships — which it almost certainly does if you’re building any kind of business application — use Supabase. Firebase is fine for simple read/write apps. For everything SendJob-shaped, Supabase is the right call.


What Supabase Costs

The pricing is straightforward.

Free tier:

  • 500MB database storage
  • 2GB bandwidth
  • 50,000 monthly active users for auth
  • 5GB file storage
  • Unlimited API requests

Pro tier: $25/month

  • 8GB database storage
  • 250GB bandwidth
  • 100,000 monthly active users for auth
  • 100GB file storage
  • Daily backups

Team tier: $599/month

  • For organizations with multiple projects, SSO, advanced support

The free tier is real. I ran SendJob on the Supabase free tier for the first several months of development. Most projects graduate to Pro when they hit real users, not because the free tier runs out of capacity, but because Pro adds daily backups and removes project inactivity pauses. At $25/month, Pro is a straightforward decision once you’re past the prototype stage.


What Comes Next

This was the 30,000-foot view. The next two articles get hands-on.

Supabase Basics covers everything you need to go from zero to a working, connected database:

  • Creating your first project and understanding the dashboard
  • Building tables with proper field types
  • Understanding Row Level Security (the thing that blocks your n8n automations until you configure it right)
  • Connecting from n8n and running your first queries
  • The five SQL statements that cover 80% of what you’ll actually do

Supabase Advanced goes deeper:

  • Writing real Row Level Security policies
  • Foreign keys and relational schemas
  • Database functions and stored procedures
  • Database webhooks that push changes directly to n8n (removing the need to poll)
  • Edge functions
  • Real-time subscriptions
  • Indexing for performance

The goal by the end of the series: you understand your database, you can build and modify your schema, and you can connect it reliably to every other tool in your stack.


Ready to get hands-on? The Basics: Your First Supabase Tables →