Should You Use Supabase for Your Side Projects?

Mihajlo MaksimovicJul 25, 2025

Throughout the last couple of months I was working on a Next.js app deployed to Vercel, with Supabase handling the database, authentication, and file storage. While I am happy with my experience with Vercel, the focus of this text will be on Supabase and using it for simple side projects.

Why I Chose Supabase for My Side Project

What drew me to Supabase initially was:

  • Generous free tier
  • Open-source
  • Wide adoption compared to other open-source BaaS (Backend as a Service) like Appwrite and PocketBase 

I didn't consider Firebase and AWS Amplify since I didn't want to lock myself into using a proprietary service, this way if Supabase changes their pricing or drastically changes their licensing, I can prevent vendor lock-in by self-hosting Supabase on a cheap VM, at least for this side project that doesn't have a large amount of data or a lot of users.

Supabase Features I Found the Most Useful


Since this is my first time using Supabase, I didn't want to fully entangle my application with it in case at some point I decided that I am not happy with it and decided to use another service. Here are the features I found the most useful:

PostgreSQL database with Connection Pooling


Supabase provides a managed PostgreSQL database with a connection pooler. A connection pooler is a tool for managing database connections between multiple queries with a focus on improving the performance of a given application and reducing resource usage. The Supabase team maintains their own connection pooler called Supavisor which enables connecting multiple applications to multiple databases in a cloud-native environment. Supavisor is open-source and optimized for serverless environments, which makes it ideal for platforms like Vercel and Netlify. For projects in the free tier, a single connection pooler is shared between multiple projects to reduce resource usage. In our case, the shared pooler was used, since my Next.js app runs in a serverless environment. I didn’t want every request to open a new database connection.

 

supabase-docs.png

Connection pooling illustration (Photo from Supabase docs).

Supabase Auth

With the rise of third party auth services like AWS CognitoAuth0 and Clerk, many new projects utilize one of these services instead of rolling their own auth. Here Supabase offers a great open-source alternative –  Supabase Auth. Although my auth needs were very simple, I decided to try out Supabase Auth out of curiosity. Setting up the auth initially was straightforward, especially setting up authentication for Next.js. 

Supabase Auth is JWT-based and offers:

  • Email/password login 
  • Passwordless login (OTP & Magic Link)
  • Social Auth (Google, GitHub, etc.)
  • Phone Auth (via MessageBird, Twilio, Vonage)
  • TOTP-based MFA (free tier doesn’t support SMS MFA)
     

Moving to production requires setting up an SMTP providerResend has a simple integration with Supabase and has a decent free tier.
Supabase Auth has an admin dashboard that enables all the necessary actions for users like accessing user data and deleting or banning users. Rate limiting protects all the essential functions like sign-upsign-insending emailssending SMS messages – something often overlooked in DIY auth setups.

Supabase Storage

Supabase Storage uses AWS S3 and behaves similarly to it, with a couple exceptions. Buckets can be split, either public or private. Access to the private buckets can be defined using Row Level Security (RLS) which can be really helpful if you are using Supabase as a full BaaS and are using their REST API. It is possible to use the AWS S3 SDK, which could make the storage implementation smoother for users familiar with S3, but I found the Supabase SDK to be intuitive and simple enough. Serving public files is easy since each file has a public URL and is delivered using a CDN. Private files are delivered, the same as from most large storage services, by generating a signed URL and delivering it. Private buckets are cached differently on the CDN, and retrieving data from them is more likely to result in a cache miss, significantly slowing down the delivery.

Supabase REST & GraphQL APIs

The key feature of any BaaS is the REST API – the service that converts your database model to restful interface, allowing you to read or mutate data in the database directly from the client, be that a mobile or web app. 
The key features are:

  • Automatic REST API generation
  • Row Level Security for fine-grained access control
  • Automatic Typescript types generation
  • GraphQL API support


This feature makes Supabase particularly appealing for frontend developers looking to avoid managing their own Express.js or Nest.js server, but I decided not to, because I'm used to building my own backend.

Supabase Edge Functions

For other server-side tasks, there are Supabase Edge Functions, which are globally distributed Typescript functions using the Deno runtime. Personally, I didn't have the need to use these since I already use Vercel for my server-side code, but if you want to create a serverless backend entirely within Supabase, Edge Functions are easy to set up and deploy using the Supabase CLI.

What I didn't like about Supabase

While Supabase offers a decent free tier, there are a couple of limitations worth mentioning. One of the main ones is that all free-tier projects get paused after 7 days of inactivity and deleted after 90 days. This can cause problems if you are building an app with infrequent use. Another potential issue is that SMS-based multi-factor authentication (MFA) is not available on free-tier projects, even if you configure a third-party sending provider like Twilio. Another point worth noting is that if your project gains traction, at a certain point the managed Supabase service costs can add up. Although, at that point you can switch to self hosting it and significantly reduce your expenses.

Final Thoughts: Is Supabase the Right Choice?

All things considered, I think Supabase is a great tool for side projects, MVPs and indie hackers who want to ship a powerful backend with:

  • PostgreSQL
  • Authentication
  • File Storage
  • REST or GraphQL API
  • Serverless functions

TL;DR

If you need anything from a simple database and file storage to an entire serverless backend with authentication, Supabase is a great choice for your side project.

 

References:

Share on: