DEV Community

Alex Spinov
Alex Spinov

Posted on

Supabase Has a Free Tier — Build a Full Backend (Database, Auth, Storage, Realtime) Without Writing Server Code

Most developers still spin up Express servers, configure PostgreSQL, set up JWT auth, and deploy to AWS — just to get a basic backend running.

Supabase gives you a full backend for free: PostgreSQL database, authentication, file storage, edge functions, and realtime subscriptions — all through a REST API or client library.

No server code. No DevOps. No monthly bill (for small projects).

What You Get for Free

Supabase's free tier includes:

  • Database: 500 MB PostgreSQL with full SQL access
  • Auth: 50,000 monthly active users (email, OAuth, magic link)
  • Storage: 1 GB file storage with CDN
  • Edge Functions: 500K invocations/month
  • Realtime: Broadcast and Presence channels
  • API: Auto-generated REST + GraphQL from your tables

That's enough to build and ship a real product.

Quick Start: Build a CRUD API in 3 Minutes

1. Create a Project

Go to supabase.com, create a free project. Grab your API URL and anon key from Settings > API.

2. Create a Table (SQL Editor)

CREATE TABLE posts (
  id SERIAL PRIMARY KEY,
  title TEXT NOT NULL,
  content TEXT,
  author TEXT,
  created_at TIMESTAMPTZ DEFAULT NOW()
);

-- Enable Row Level Security
ALTER TABLE posts ENABLE ROW LEVEL SECURITY;

-- Allow public read access
CREATE POLICY "Public read" ON posts FOR SELECT USING (true);
Enter fullscreen mode Exit fullscreen mode

3. Your REST API Is Instantly Ready

# Read all posts
curl "https://YOUR_PROJECT.supabase.co/rest/v1/posts" \
  -H "apikey: YOUR_ANON_KEY" \
  -H "Authorization: Bearer YOUR_ANON_KEY"

# Insert a post
curl -X POST "https://YOUR_PROJECT.supabase.co/rest/v1/posts" \
  -H "apikey: YOUR_ANON_KEY" \
  -H "Authorization: Bearer YOUR_ANON_KEY" \
  -H "Content-Type: application/json" \
  -d '{"title": "My First Post", "content": "Hello world", "author": "dev"}'

# Filter posts
curl "https://YOUR_PROJECT.supabase.co/rest/v1/posts?author=eq.dev" \
  -H "apikey: YOUR_ANON_KEY" \
  -H "Authorization: Bearer YOUR_ANON_KEY"
Enter fullscreen mode Exit fullscreen mode

No Express. No route handlers. No ORM. Just a URL.

JavaScript Client (Even Easier)

import { createClient } from '@supabase/supabase-js'

const supabase = createClient('YOUR_URL', 'YOUR_ANON_KEY')

// Read
const { data } = await supabase.from('posts').select('*')

// Insert
await supabase.from('posts').insert({ title: 'New Post', content: 'Hello' })

// Realtime subscription
supabase
  .channel('posts-changes')
  .on('postgres_changes', { event: 'INSERT', schema: 'public', table: 'posts' },
    payload => console.log('New post:', payload.new))
  .subscribe()
Enter fullscreen mode Exit fullscreen mode

Authentication in 5 Lines

// Sign up
await supabase.auth.signUp({ email: 'user@example.com', password: 'password' })

// Sign in
await supabase.auth.signInWithPassword({ email: 'user@example.com', password: 'password' })

// OAuth (Google, GitHub, Discord, etc.)
await supabase.auth.signInWithOAuth({ provider: 'github' })

// Get current user
const { data: { user } } = await supabase.auth.getUser()
Enter fullscreen mode Exit fullscreen mode

No Passport.js. No JWT middleware. No session management.

Supabase vs The Alternatives

Feature Supabase Firebase PlanetScale Neon
Database PostgreSQL NoSQL (Firestore) MySQL PostgreSQL
Auth built-in Yes Yes No No
Storage built-in Yes Yes No No
Realtime Yes Yes No No
Open source Yes No No No
Free tier DB 500 MB 1 GB 5 GB 512 MB
SQL access Full No Full Full
Self-host option Yes No No No

4 Things You Can Build This Weekend

1. SaaS MVP

Database + Auth + Storage = complete backend. Add a React frontend and you have a shippable product.

2. Blog with CMS

Create a posts table, build a simple admin panel, use Storage for images. Done.

3. Chat App

Realtime subscriptions + Auth. Messages appear instantly across all connected clients.

4. File Sharing Service

Storage API with signed URLs + Row Level Security. Users upload files, share links, control access.

The Bottom Line

Supabase replaced my need for:

  • Express/Fastify server ($0 saved, hours saved)
  • Auth0 or Clerk ($23/month saved)
  • AWS S3 ($5/month saved)
  • Pusher for realtime ($25/month saved)

One platform. One dashboard. Zero server code.

If you're still writing app.get('/api/posts', ...) for every new project, you're solving problems that Supabase already solved.


Need a custom backend, data pipeline, or API integration? I build full-stack tools for dev teams. Email spinov001@gmail.com — or check out my developer resources on GitHub.


More from me: Replicate Free API | Cloudflare Workers AI | awesome-web-scraping

Top comments (0)