Supabase bundles a full Postgres database with auth, storage, and edge functions, but Oolvay only uses the Postgres database itself. Better Auth, not Supabase Auth, handles authentication in Oolvay, so you can ignore Supabase’s auth, storage, and realtime products entirely unless you choose to use them separately. This page covers getting just the database connected.
Go to supabase.com and sign up. No credit card is required for the free plan.
Click New project. Choose an organization, name your project, set a strong database password, and pick a region close to where your app will be deployed.
Wait for provisioning to finish. This usually takes under two minutes.
From the project dashboard, go to Project Settings → Database. Under Connection string, select the URI tab.
Choose the connection pooling string rather than the direct connection string. Supabase’s pooled connection (on port 6543, using PgBouncer) is the better fit for Next.js’s serverless and edge-friendly connection pattern, while the direct connection (port 5432) is better suited to long-lived processes like migrations.
Paste the connection string into DATABASE_URL in your .env.local, with your database password substituted in.
DATABASE_URL="postgresql://postgres.xxxxxxxxxxxx:your-password@aws-0-us-east-1.pooler.supabase.com:6543/postgres"0 / 2,000 characters
Run the migrations.
bun db:migrateStart the development server and confirm the app starts without a connection error.
bun devIf drizzle-kit migrate has trouble with the pooled connection string for
schema changes, use the direct (port 5432) connection string specifically for
running migrations, and switch back to the pooled string for DATABASE_URL in
your running app.
These figures are pulled directly from Supabase’s pricing page and are current as of this writing. Confirm current numbers at supabase.com/pricing before architecting around any specific ceiling, since Supabase has adjusted these before.
| Limit | Free plan |
|---|---|
| Active projects | 2 |
| Database size | 500 MB |
| Database RAM | 500 MB, shared CPU |
| File storage | 1 GB |
| Egress | 5 GB per month |
| Cached egress | 5 GB per month |
| Monthly active users (Auth) | 50,000 |
| API requests | Unlimited |
| Automatic backups | Not included |
| Project pausing | After 1 week of inactivity |
The single most important free tier behavior to plan around is automatic pausing. A free project with no database activity for seven consecutive days is paused and goes offline until manually resumed from the dashboard. Resuming takes roughly thirty seconds. Dashboard visits and cached API responses do not count as activity. Only actual database queries reset the timer.
For a production app with real, ongoing traffic, this rarely triggers. For a demo, staging environment, or low-traffic side project, it can and will trigger, and the next user to hit it will see errors until you resume the project.
If you need a project that sits idle for periods longer than a week but must never go offline unannounced, for example a staging environment a stakeholder might open without warning, either set up a scheduled ping against the database or move that project to the Pro plan, which removes pausing entirely.
The 500 MB database size limit is the constraint most projects hit before anything else. According to Supabase’s own documentation, when a free project exceeds this, the database enters read-only mode, meaning writes fail until you either free up space or upgrade. This is meaningfully tighter than Neon’s 0.5 GB-per-project limit only in the sense that Supabase’s 2-project cap means you can’t spread workloads across many small free projects the way Neon’s 100-project allowance permits.
The 50,000 monthly active user allowance is generous for Oolvay’s purposes, since Oolvay uses Better Auth rather than Supabase Auth, so this figure won’t typically be the limiting factor for an Oolvay-based app. It would only become relevant if you separately adopted Supabase’s own Auth product alongside the database.
Move to the Pro plan (currently starting at $25 per month) when any of the following apply.
Pro plan billing also includes compute costs separate from the base subscription. Supabase’s billing model bills the platform subscription and each project’s compute instance separately, so check the current compute add-on pricing at supabase.com/pricing when budgeting beyond the base $25 figure.
The free plan’s 2-active-project limit is enough for a development project and a production project running side by side. Supabase explicitly designs the free tier around this split. Paused projects don’t count against the 2-project limit, so you can keep additional paused projects archived and resume them as needed without losing data.