Skip to content

Supabase

Connect a Postgres database, sign-in and file storage to your app. Supabase can run the service for you, and you decide who can open each record or file.

Visit Supabase

When would Supabase fit your app?

Imagine you’re building a private journal with photos. You need the entries to come back after someone closes the page, and each person should see only their own work. Supabase gives you a database, sign-in and file storage in one project. You still build the journal screen and decide who can open or change an entry.

Supabase uses PostgreSQL, often called Postgres. In a table of journal entries, each row could hold an entry’s text, date and owner. The original photo lives in file storage. The entry can point to it.

Which service handles each part of the journal?

If the journal starts with text alone, set up entries and sign-in first. Connect file uploads when you add an attachment field.

What Supabase provides and what you set up
You want toUseDecide or configure
Save an entryPostgresThe fields to keep and who may read or change them.
Recognize a returning readerAuthHow they sign in and where an email link sends them back.
Attach a photoStorageWho may open the photo and what file sizes to allow.

On a small screen, scroll the table sideways to read every column.

Can you save one entry and open it again?

Use a separate project with made-up entries so you can get the journal working without touching anyone’s real information.

In the dashboard, create the project, choose where it will run and make a table with the entry text and its owner. If your coding agent writes SQL, the language used to work with database tables, ask it to show you which fields it created and which access rules it set.

Use the project address and publishable key to connect the test app. A person signs in separately to establish their identity. A secret key can bypass the access rules and belongs only in code running away from the browser.

If people will sign in by email, set up a test email sender for inboxes you control before requesting a link. Supabase’s default hosted sender only delivers to project team addresses.

Sign in as an ordinary test user with permission to save their own entry. Save one, then close the page and open it again. Check that the entry is still there.

Supabase’s official React tutorial example showing an email field and Send magic link button.
After opening the link, look for the journal’s signed-in view. Supabase React tutorial · Image license

Can one signed-in person open someone else’s entry?

Supabase calls its per-record rules Row Level Security, or RLS. Set a rule for each action your journal allows. Someone who can sign in should be able to read and edit their own entry without getting access to anybody else’s.

If your coding agent sets up the database, ask it to show you that RLS is on and which users can access the table. Test through ordinary signed-in sessions. An administrator or a secret key can get a result your customers should never receive.

Set access rules for photos in Storage as well. With an account that should have no access, try to open the original image through the app. A private journal entry should not leave its attachment exposed.

Try each action in a test journal
AttemptExpected result
Account A opens its own entryThe saved entry appears.
Account B requests that same entryThe app returns no private entry.
Account B tries to edit itAccount A’s saved text stays the same.

Would a restored entry bring back its photo?

Supabase database backups can restore information about the photo. The image itself is stored separately and won’t come back with the database backup.

Paid hosted plans include daily database backups, with retention that varies by plan. Supabase advises Free projects to make database exports and keep copies elsewhere. Decide how you’ll keep copies of original uploads as well. In a test restore, open an entry as its owner and check that the original image actually loads.

What does Supabase cost once people use the app?

The hosted Free plan is US$0 per month. Pro starts at US$25 per month per organization, the account that holds your projects.

Check the bill for what you plan to run. A journal with lots of photos may use more file space and send more data to readers than a journal with text alone. A separate app host or email service has its own terms and charges.

What to check in the hosted plan
Cost areaWhat affects it
Free planProjects may pause after a week without activity. Check the allowed number of active projects and the usage limits.
Pro planThe included compute credit covers one project at the Micro database size. Extra projects or more processing and memory can add to the bill.
UsageCheck signed-in activity, database and file space, and data sent to visitors. Confirm what happens when you pass an allowance and whether the account permits extra charges.

What would you need to move to another service?

You can export the database, then check that its tables, records and permissions work in the new place. Plan a separate transfer for original images, sign-in settings and anything else the journal calls.

Before closing the old project, try the new one with a copy. Can a test user sign in, open an old entry, and load the photo that belongs to it? That is a better check than a successful database import on its own.

You can also run Supabase on infrastructure you arrange. You then handle updates, security, monitoring and recovery. Compare what your setup can run with any hosted features you already use.

When would you add live updates or private server code?

If you turn the journal into a shared workspace, Realtime can show new entries without asking everyone to reload the page. Decide which changes each person may receive before enabling that behavior.

Edge Functions can run your app’s code outside the visitor’s browser. That can be useful for an action that needs a private credential, such as calling a separate service. Give that action its own permission checks.

Where can you learn the next steps?