← Back to blog
Tool Friday EP. 08

Tool Friday #8 — Supabase: The Backend I Built in a Day

The workflow
01
Create project
Dashboard + Postgres ready in 60 seconds
02
Set up auth
Magic link, OAuth, email confirm
03
Write SQL
Tables, RLS policies, triggers
04
Connect frontend
JS client or REST API
Matteo Lombardi
Mar 13, 2026
Try Supabase free → Partner link

I needed a backend for a learning platform. Auth, database, row-level security, progress tracking, email triggers. The kind of setup that usually means a backend developer or a week of wiring services together.

I used Supabase. It took a day.

What I built

academy.stratega.co — a full-stack learning platform for my free GTM course. Nine modules, interactive exercises, progress tracking, admin dashboard.

Here’s the exact stack:

Auth:

  • Magic link login — no passwords to manage, no “forgot password” flow
  • Google OAuth with PKCE — one-click sign in
  • Email confirmation on signup
  • 7-day sessions with auto-refresh

The auth setup alone would have taken me a week to roll by hand. Supabase had it working in an hour. Most of that hour was configuring Google Console, not Supabase.

Database:

Postgres. Not a document store, not a proprietary query language. I wrote my tables, my RLS policies, and my triggers in SQL:

CREATE POLICY "Users can read own profile"
ON profiles FOR SELECT
USING (auth.uid() = id);

You read that and you know exactly what it does. If you’ve configured Firestore rules, you know how opaque the alternative can get.

Exercise responses are stored as JSONB — flexible schema per exercise type without separate tables for each. Profiles linked to auth.users. Progress tracking per module and per exercise. Admin queries for signup analytics and completion funnels.

Row-Level Security:

Students can only read and write their own data. Admin role reads everything. The policies are SQL, not a configuration panel — you version-control them, you review them, you know exactly what they do.

Email triggers:

Completion events fire webhooks to n8n, which sends emails via Resend. Welcome drip, start nudge, re-engagement — all triggered by database events, not application logic.

The JS client does what you’d expect:

const { data, error } = await supabase
  .from('exercise_responses')
  .select('*')
  .eq('profile_id', user.id);

Data or error. Nothing else.

The whole thing runs on the free tier. Real students, real data, zero dollars.

What I’d want to know before starting

You need SQL. Supabase doesn’t hide the database behind a visual builder. If you can write SELECT * FROM you’re fine. If you can’t, Firebase’s visual tools will be easier to start with.

RLS takes thought upfront. Row-level security is powerful but you need to think about your access patterns before writing policies. Get it right and security lives at the database level, not scattered across your application code. Get it wrong and you’ll spend an afternoon debugging why queries return empty.

Realtime exists but isn’t the selling point. If your product is live collaboration or chat, Firestore is more mature here. For everything else — auth, database, API — Supabase is ahead.

The dashboard has slow moments. During peak hours the SQL editor can lag. Not a dealbreaker, but noticeable. Edge functions are still maturing compared to Cloudflare Workers or Vercel Functions.

Pricing

PlanCostWhat you get
Free$02 projects, 500MB database, 1GB storage, 50K monthly active users
Pro$25/mo per project8GB database, 100GB storage, daily backups, email support
Team$599/moSOC2 compliance, priority support, SSO

50,000 monthly active auth users on the free tier. I haven’t hit a single limitation running a production academy on it.

Alternatives

ServiceBest forHow it compares
FirebaseGoogle ecosystem, real-time appsMore mature realtime, better mobile SDKs. But document store, not relational. Proprietary lock-in.
PlanetScaleMySQL at scaleExcellent for MySQL shops. No built-in auth or storage — just the database.
NeonServerless PostgresGreat Postgres hosting with branching. No auth, no storage, no dashboard — just the database.
AppwriteSelf-hosted BaaSSimilar feature set, fully self-hosted. More control, more maintenance.

If you want a real database with real SQL and you don’t want to wire together four separate services for auth, storage, and API — Supabase is the best option right now.

The verdict

Supabase is Postgres with batteries included. Auth, RLS, storage, API — one dashboard, one project, one day to production.

The free tier runs my entire academy. When I need to scale, $25/month gets me 8GB of Postgres and daily backups.

If you’re a solo founder and you need a real backend without a backend team, start here.

Score: 9.0/10

Discover Supabase at supabase.com


Tool Friday is a weekly series where I review one tool I actually use in my workflow. Just tools that made my work better.

Verdict

The first backend-as-a-service where I feel like I'm writing real code, not fighting an abstraction.

9
/10
Free
Free tier generous · Pro $25/mo per project